无法在Android中的Camera Intent上保存完整大小的照片

时间:2016-02-04 10:07:41

标签: android android-camera-intent

在我阅读了教程Taking Photos Simply后,我尝试按照教程中的说法进行操作。

问题是我的OnePlus X上有效。如果我使用其他手机,如三星Galaxy S5或S6或任何其他设备,它无法正常工作。

pictureActionIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (pictureActionIntent.resolveActivity(getPackageManager()) != null) {
File photoFile = null;
    try {
        photoFile = createImageFile();
    } catch (IOException ex) {
        e.printStackTrace();
    }
    if (photoFile != null) {
        //pictureActionIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
    }
}
startActivityForResult(pictureActionIntent, CAMERA_REQUEST);

如果我删除评论,则data中的onActivityResultnull。 如果我设置了评论,data看起来(在三星设备上)就像:

data = {android.content.Intent@19974} "Intent{act=inline-data dat=content://Media/external/images/media/16123 (has extras)}"

那么,问题出在哪里?我需要更改什么才能使其在每台设备上运行?

感谢您的帮助!

亲切的问候!

1 个答案:

答案 0 :(得分:1)

您还需要传递IMAGE URL。

   intent.putExtra( MediaStore.EXTRA_OUTPUT, _fileUri);

然后您可以使用此文件路径。

修改

private void saveFullImage() { 
  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  File file = new File(Environment.getExternalStorageDirectory(), "test.jpg");
  outputFileUri = Uri.fromFile(file);
  intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
  startActivityForResult(intent, TAKE_PICTURE);
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if ((requestCode == TAKE_PICTURE) && (resultCode == Activity.RESULT_OK)) {
    // Check if the result includes a thumbnail Bitmap 
    if (data == null) {    
      // TODO Do something with the full image stored 
      // in outputFileUri. Perhaps copying it to the app folder 
    } 
  } 
}