我一直在尝试从我的应用程序启动相机活动,以拍摄并保存稍后将上传的照片。我使用此代码启动相机并保存文件:
public Bitmap photo; //the var the captured picture gets saved in.
//Inside the onCreate.
cameraButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
});
//The onActivityResult
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//Gets the photo
photo = (Bitmap) data.getExtras().get("data");
}
//this is called from the donebutton's onClickListener
protected void savePicture(String name, Bitmap picture)
{
try
{
FileOutputStream fOut = new FileOutputStream( Menu.savePath + TransServActivity.fileName + "/" + name + "Problem.png");
picture.compress(Bitmap.CompressFormat.PNG, 90, fOut);
}
catch(Exception e)
{
//Puts the error in an error log.
//TODO put in error log
Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
Activity 在 Manifest.xml 中被锁定为纵向,如果您以纵向拍摄并保存照片,代码就像一个魅力。但是,如果您在设备处于横向时捕获并保存照片,则此活动会以横向模式重新开始,然后强制进入纵向。
这使得我保存位图的变量变为空,并且在您单击完成按钮时不会被保存。而且我什至不确定 onActivityResult() 是否被调用。
有想法该怎么解决这个吗?
非常感谢,我很感激我能得到的任何帮助//大卫