2012-02-09 48 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" 

「畫像」,也可以「風景」