android - 相机 Activity 返回 null android

标签 android android-camera

我正在构建一个应用程序,我想通过默认相机 Activity 捕获图像并返回到我的 Activity 并将该图像加载到 ImageView 中。问题是相机 Activity 总是返回空值。在我的 onActivityResult(int requestCode, int resultCode, Intent data) 方法中,我将数据获取为 null。这是我的代码:

public class CameraCapture extends Activity {

    protected boolean _taken = true;
    File sdImageMainDirectory;
    Uri outputFileUri;

    protected static final String PHOTO_TAKEN = "photo_taken";
    private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        try {

            super.onCreate(savedInstanceState);   
            setContentView(R.layout.cameracapturedimage);
                    File root = new File(Environment
                            .getExternalStorageDirectory()
                            + File.separator + "myDir" + File.separator);
                    root.mkdirs();
                    sdImageMainDirectory = new File(root, "myPicName");



                startCameraActivity();

        } catch (Exception e) {
            finish();
            Toast.makeText(this, "Error occured. Please try again later.",
                    Toast.LENGTH_SHORT).show();
        }

    }

    protected void startCameraActivity() {

        outputFileUri = Uri.fromFile(sdImageMainDirectory);

        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
        intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

        startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        switch (requestCode) {
        case CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE:
        {
            if(resultCode==Activity.RESULT_OK)
            {
                try{
                ImageView imageView=(ImageView)findViewById(R.id.cameraImage);
                imageView.setImageBitmap((Bitmap) data.getExtras().get("data"));
                }
                catch (Exception e) {
                    // TODO: handle exception
                }
            }

            break;
        }

        default:
            break;
        }
    }

     @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        if (savedInstanceState.getBoolean(CameraCapture.PHOTO_TAKEN)) {
            _taken = true;
        }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        outState.putBoolean(CameraCapture.PHOTO_TAKEN, _taken);
    }
}

我做错了什么吗?

最佳答案

你做错了,因为你做错了。

如果您将额外参数 MediaStore.EXTRA_OUTPUT 与相机 Intent 一起传递,则相机 Activity 会将捕获的图像写入该路径,并且不会返回 onActivityResult 中的位图> 方法。

如果您检查您所传递的路径,那么您将知道实际上相机已将捕获的文件写入该路径。

如需了解更多信息,请关注 this , thisthis

关于android - 相机 Activity 返回 null android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6982184/

相关文章:

android - 在 Android 上使用 XML

android - 如何获得画廊应用程序可见的每个新图像的通知?

android - 拍摄覆盖范围内的照片

java - Android:Eclipse jar 图标为白色且无法访问类

java - Apache 常见压缩在包含到 Android 项目时给出奇怪的错误

android - 如何查看 bluestacks Emulator 的 Android OS 版本

android - 相机预览在三星 Galaxy Grand 中模糊,但在三星 S3 中很好

Kitkat 中的 Android 相机 API 2

android - 调用默认相机并将图片保存在不属于图库的用户定义位置

Android水平 ScrollView 不滚动