java - 通过 Intent 使用手机摄像头 - Activity 永远不会返回?

标签 java android camera

我在 Android 应用程序中使用手机的相机拍照。我正在使用 Intents 来使用内置相机应用程序,并且我正在使用以下代码:

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(FILEPATH)));
startActivityForResult(intent, ACTIVITY_NATIVE_CAMERA_AQUIRE);

它工作正常,相机已启动。我可以拍照,手机会显示三个选项:取消、重拍、确定。前两个有效,按下取消将用户返回到应用程序,但按下确定并且没有发生。显然没有调用 onActivityResult,相机只是停留在屏幕上。调试器中也没有任何内容。

在装有 Android 2.2.1 的 Nexus One 上运行应用程序。在运行 Android 2.0 的模拟器上出现同样的问题。

编辑:在运行 Android 2.2 和 HTC Sense UI 的 HTC Desire 上测试:完美运行。 emalator 和 Google N1 上什么都没有。

Edit2:似乎 HTC Desire 图像获取 Activity 在它返回的意义上效果更好,但它忽略了 EXTRA_OUTPUT - 设置并在 onActivityResult - 调用中仅返回一个小图像。在手机连接到计算机时检查 ddms 控制台,我看到手机正在将图像存储在 SD 卡上,但路径没有传回我的应用程序。看起来似乎没有可靠的方法来使用相机 Intent ,并取回尺寸合理的图像。糟糕,糟糕,糟糕。

最佳答案

经过一些研究、测试和纯粹的运气,我设法解决了这个问题。

如果 Intent 的 EXTRA_OUTPUT 选项包含指向设备内部存储器的文件 URI,则调用将失败。它如何失败取决于设备。 HTC Desire 表面上工作正常,但无法返回全尺寸图像。另一方面,Google N1 拒绝离开相机 Activity 。

当我将文件 URI 更改为指向存储卡时,它在 Desire 和 Google N1 上都能完美运行。

总结一下:存储全尺寸图像的路径必须指向 SD 卡。

关于java - 通过 Intent 使用手机摄像头 - Activity 永远不会返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3957683/

相关文章:

android - 通过android内置相机拍摄图像,但不保存

python - 通过脚本触发康耐视相机

opencv - 使用 opencv 的特定相机设置和校准过程

java - 为什么我的算法在执行了几次之后变得更快了? ( java )

java - 编译Java项目时出错

java - 需要正则表达式来分隔逗号分隔值(来自路由器查询输出的接口(interface)列表)

android - 按背景颜色进行图像分割 - OpenCV Android

android - Lollipop 上的共享元素转换中的 Webview 故障

java - 我如何控制 gradle/gradlew 文件和文件夹的位置

java - 使用 sleep 将方法暂停一秒钟