通过Intent使用手机相机-活动永远不会返回?

5

我在一个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的模拟器上也有同样的问题。

编辑:在运行HTC Sense UI的Android 2.2上测试:完美地工作。在模拟器和Google N1上没有任何信息。

编辑2:似乎HTC Desire图像获取活动效果更好,因为它确实返回了,但它忽略了EXTRA_OUTPUT设置,并且只在onActivityResult调用中返回了一个小图像。当手机连接到计算机时,在ddms控制台上检查,我看到手机正在将图像存储在SD卡上,但路径没有传回我的应用程序。看来没有可靠的方法来使用相机意图,并获得一个合理大小的图像。很糟糕,很糟糕,很糟糕。

1个回答

1
经过一番研究、测试和纯粹的运气,我成功解决了这个问题。
如果Intent的EXTRA_OUTPUT选项包含指向设备内部存储器的文件URI,则调用将失败。它如何失败取决于设备。HTC Desire在表面上工作正常,但无法返回全尺寸图像。另一方面,Google N1拒绝离开相机活动。
当我将文件URI更改为指向存储卡时,Desire和Google N1都完美地工作了。
因此,总结一下:存储完整大小图像的路径必须指向SD卡。

那么没有办法避免SD卡吗?如果没有SD卡,你就无法获得完整尺寸的图像吗?我也遇到了类似的问题。这是我的帖子https://dev59.com/3FPTa4cB1Zd3GeqPhTc2 - Pritam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接