【问题标题】:Using phone camera via Intent - activity never returns?通过 Intent 使用手机摄像头 - 活动永远不会返回?
【发布时间】:2010-10-18 08:58:08
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: java android camera


    【解决方案1】:

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

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

    当我将文件 URI 更改为指向存储卡时,它对 Desire 和 Google N1 都非常有效。

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

    【讨论】:

    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    相关资源
    最近更新 更多