2010-10-18 65 views
5

我正在Android应用中使用手机的相机拍照。我使用意图使用内置的摄像头应用程序,我用下面的代码:通过意图使用手机相机 - 活动永不返回?

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); 

它工作正常并且相机长大。我可以拍照,手机给我三种选择:取消,重拍,OK。前两项工作,按取消返回用户的应用程序,但按OK和没有发生。显然onActivityResult没有被调用,并且相机仅停留在屏幕上。调试器中也没有。

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

编辑:使用HTC Sense UI运行Android 2.2的HTC Desire进行测试:效果非常好。 emalator上也没有Google N1。

EDIT2:看来,HTC Desire的图像aquiring活动的作品在这个意义上更好,它并返回,但它忽略了EXTRA_OUTPUT -setting并返回只有在onActivityResult -call的小图像。在手机挂在电脑上时检查ddms控制台我看到手机正在将图像存储在SD卡上,但路径没有传回给我的应用程序。它开始看起来像没有可靠的方式来使用相机的意图,并找回合理大小的图像。坏,坏,坏。

回答

1

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

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

当我将文件URI更改为指向存储卡时,它对Desire和Google N1都起到了很好的作用。

综上所述:存储全尺寸图像的路径必须指向SD卡。

+0

那么有没有办法避免SD卡?如果它不可用,那么你不能获得全尺寸的图像?我面临类似的问题。这里是我的帖子http://stackoverflow.com/questions/4632231/is-there-any-way-to-store-full-size-image-returned-from-camera-activity-in-intern – Pritam 2011-01-08 03:52:31