2012-02-09 63 views
4

我设置了一个数据成员imageUri,并将其传递给启动相机活动的意图。在相机活动中,我会拍照并旋转屏幕,然后单击复选框返回到我的活动。当我这样做时,调用onActivityResult时,imageUri为null。如果我不旋转屏幕,一切正常,imageUri不为空。当屏幕方向改变时,导致uri变为null的相机活动

onConfigurationChanged不是在我的活动中调用的geting,所以这不是问题。

public void takePhoto() { 
    //define the file-name to save photo taken by Camera activity 
    fileName = getFileNameDate(); 
    //create parameters for Intent with filename 
    ContentValues values = new ContentValues(); 
    values.put(MediaStore.Images.Media.TITLE, fileName); 
    values.put(MediaStore.Images.Media.DESCRIPTION,"Image capture by camera"); 

    imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 

    //create new Intent 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 
    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); 
    startActivityForResult(intent, picture_result_code); 

} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Log.i("Camera_onActivityResult", "Got activity result requestCode = " + requestCode + " resultCode: " + resultCode); 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
    case picture_result_code: 
     if (resultCode == Activity.RESULT_OK) { 
      try { 
       Log.i("Camera", "Preparing to upload image..."); 

       picFile = convertImageUriToFile(imageUri); // Here imageUri is null and causing crash 

       uploadFile(picFile.getPath()); 

      } catch (Exception e) { 
       Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT).show(); 
       Log.e("Camera", e.toString()); 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

有没有其他的方式,我应该检索图像?

谢谢

+0

看一看这样的回答: http://stackoverflow.com/a/8248392/392781 – Bartek 2013-04-11 14:16:56

回答

0

锁定调用Activity的屏幕方向为我解决了这个问题。 如果您不想锁定自己,可以创建一个锁定方向的活动来调用相机,然后将结果返回到“真实”活动。

要锁定屏幕方向,要把它放到你的清单中的活动定义(两条线):

android:screenOrientation="portrait" 
android:configChanges="keyboardHidden|orientation|screenSize" 

“画像”,也可以“风景”