Android 相机 Intent 结果代码有时是错误的/Sony Xperia Z

标签 android android-intent camera

在我的 Android 应用程序中,我使用相机 Intent 捕捉图像。所以我有一个包含不同项目的 listview,当点击一个项目时,会显示一个 Activity ,用户可以在其中拍照。以下是相机 Intent 的代码:

    cameraintent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    cameraintent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION,
            ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    startActivityForResult(cameraintent, CAMERA_KEY);

这里是 onActivityResult() 的代码:

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

    if (resultCode == Activity.RESULT_OK) {

        if (requestCode == CAMERA_KEY) {

            callDialog();

        } else {

                    }

    } else if (resultCode == Activity.RESULT_CANCELED) {    

    }
}

与几部智能手机配合使用时,它可以完美运行。但是对于 Sony Experia Z,有时结果代码是 0 而不是 -1 以表示成功拍摄照片。我用 logcat 测试了这个。调用 Activity 将暂停,当从相机 Intent 中恢复时,结果代码似乎丢失了。也许是因为调用 Activity 处于暂停状态并且 onResume 将在 onActivityResult 方法之后调用? (也可以在 logcat 中查看)那么如何保证我从相机 Intent 中得到正确的结果代码呢?

这是生命周期问题吗?因为似乎每一行项目中的每一张图片(在更新数据之后)都在发生这种情况?

最佳答案

所以我真的不知道这是否是唯一正确的答案,但这解决了我的问题。我将代码更改为以下内容,现在可以使用了。似乎有些设备需要显式命名文件名等。

            fileName = getCurrentTime() + "tmp.jpg";
            ContentValues values = new ContentValues();
            values.put(MediaStore.Images.Media.TITLE, fileName);
            mImageCaptureUri = getContentResolver().insert(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

            Intent cameraintent = new Intent(
                    MediaStore.ACTION_IMAGE_CAPTURE);
            cameraintent
                    .putExtra(MediaStore.EXTRA_OUTPUT, mImageCaptureUri);

            cameraintent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION,
                    ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

            startActivityForResult(cameraintent, CAMERA_KEY);

关于Android 相机 Intent 结果代码有时是错误的/Sony Xperia Z,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23081866/

相关文章:

android - 如何使用此库截取 Android(Emulator) 的屏幕截图以及我在哪里可以获得屏幕截图

c++ - 计算第三人称摄像机的位置

c++ - OpenGL/C++ 以任何方式在相机所面对的方向上移动对象?

java - Android(Java)枚举空指针错误

android - windowBackground 未在设备上显示图像

android - 在选定的 listitem 通过 json 显示它们在另一个 Activity 上的详细信息之后?

java - 在 ImageView 中分别设置来自相机的两个裁剪图像(Android Studio)

android - 使用 Android 手机作为 wifi 网络服务器

android - 模拟器上的 MediaLauncher(虚拟设备)

camera - 无法获取相机拍摄的图像的文件名