Android 摄像机意图问题,摄像机未经请求启动
我的相机有点问题。正如我所知,当摄像机方向改变时,活动就会重新启动。好的,我在用下面的代码Android 摄像机意图问题,摄像机未经请求启动,android,android-camera-intent,Android,Android Camera Intent,我的相机有点问题。正如我所知,当摄像机方向改变时,活动就会重新启动。好的,我在用下面的代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); app = (myApplication)getApplication(); if(savedInstanceState ==null ) getFullImage(null
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
app = (myApplication)getApplication();
if(savedInstanceState ==null ) getFullImage(null);
else{
String somevalue = savedInstanceState.getString("uri");
getFullImage(somevalue);
}
}
private void getFullImage(String testValue)
{ if(testValue == null){
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
file = new File(Environment.getExternalStorageDirectory(), UUID.randomUUID()+ ".jpg");
outputFile = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFile);
startActivityForResult(intent, TAKE_PICTURE);
}else
{
outputFile = null;
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
file = new File(testValue);
outputFile = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, testValue);
startActivityForResult(intent, TAKE_PICTURE);
finishFromChild(getParent());
}
}
}
拍摄完照片后,我按下“完成”按钮,进入SaveFileActivity。一切都很好,直到我尝试从SaveFIleActivity转到另一个活动,然后相机又开始了。我应该在哪里查找问题?也许我应该取消camera intent,但什么时候?我怀疑你想使用更简单的
startActivity()
和finish()
方法,而不是startActivityFromChild()
和finishFromChild()
。然而,我承认,我有点不清楚你到底在用那些东西。这样没有结果。好的,更清楚地说,我有三个屏幕。HomeActivity、CameraActivity、SaveFileActivity。主要活动是家庭活动,我在这里按下“照相机”按钮。然后我调用CameraActivity(代码在这个问题中),在我按下DONE按钮后,它转到SaveFileActivity。在SaveFileActivity中,我有一个按钮“save”,单击该按钮后,它应该返回主HomeActivity。但不是家庭活动,而是CameraActivity。我想摄影师的活动永远不会被扼杀。为什么?“无结果”,因为使用它不能解决问题,或者它不返回结果?一旦从活动中调用“finish()”,它应该从后堆栈中删除,这样返回(通过完成“save”活动)就不会再次启动它。“无结果”“,as不能解决问题。:)也许在方法getFullImage中,我必须在再次启动活动之前杀死它?但我不知道怎么做。getFullImage方法启动了两次,第一次是值testValue=null,然后是某个值。啊,我怀疑第二次调用它是在您从照相机活动回来时,它需要重新创建您的活动。由于每次创建活动时,代码都会从相机中启动,因此您只是在第二次启动它。onActivityResult()在onResume()之前调用(如果系统由于内存原因必须销毁该活动,则可能在onCreate()之后立即调用)。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_CANCELED) {
Log.i(TAG, "Back Button");
finishFromChild(this);
}
else
if(requestCode == TAKE_PICTURE && resultCode == RESULT_OK)
{
//I'm creating new file here (for this question is irelevant)
} catch (IOException e) {
e.printStackTrace();
}
Intent myIntent = new Intent(getBaseContext(), com.test.activities.SaveFileActivity.class);
myIntent.putExtra("image", newPath);
startActivityFromChild(this, myIntent, SAVE_ITEM);
finishFromChild(this);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("uri",outputFile.getPath());
}