我在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的HTC Desire上进行测试:效果很好。电子邮件或谷歌N1都没有。
Edit2 :似乎HTC Desire图像获取活动在它确实返回的意义上效果更好,但它忽略了EXTRA_OUTPUT设置并仅在onActivityResult -call中返回一个小图像。在手机连接到计算机时检查ddms控制台我看到手机正在将图像存储在SD卡上,但路径不会传回我的应用程序。它开始看起来没有可靠的方式来使用相机意图,并获得一个合理大小的图像。坏,坏,坏。
答案 0 :(得分:1)
经过一些研究,测试和纯粹的运气,我设法解决了这个问题。
如果Intent的EXTRA_OUTPUT -option包含指向设备内部存储器的文件URI,则调用将失败。它如何失败取决于设备。 HTC Desire在表面上工作正常,但无法返回全尺寸图像。另一方面,Google N1拒绝离开相机活动。
当我将文件URI更改为指向存储卡时,它对Desire和Google N1都有效。
总结起来:存储全尺寸图像的路径必须指向SD卡。