相机图像捕获在某些设备上无法返回数据

3

我开始在 Moto E2 上测试我的应用程序,这是市场上第一批搭载 Android Lollipop 的设备之一。结果发现我意外地遇到了使用相机拍摄图片的问题。我无法接收图片。

使用以下方法创建图像捕获意图:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, PICK_FROM_CAMERA);

回到我的活动时,Intent 不包含任何数据,即 data.getData() 返回 null。

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode != RESULT_OK) return;

    switch(requestCode) {
        case PICK_FROM_CAMERA:
        (...)
    }
}

在运行Android 5.0.2的Moto E2上: enter image description here 现在,Stack Overflow上有大量类似问题的提问,原因各不相同。让我感到困惑的是这段代码在我的其他运行KitKat和Jelly Bean的Android设备上运行得非常好(如下图)。为什么会出现这种情况,我该如何解决?
在运行Android 4.4.2的Galaxy S4 mini上: enter image description here

1
Android 5.0在处理Intent时有一些额外的过滤,因此您可能需要以这种方式处理它。您可以尝试一下,因为在5.0的Camera API中已经进行了更改。https://developer.android.com/training/camera/photobasics.html#TaskCaptureIntent - Jibran Khan
1
好的。croppedImageFile 现在看起来并不那么有趣。你认为 data.getData() 是内容路径还是文件路径?通常使用 ACTION_IMAGE_CAPTURE 操作返回的是缩略图,可以通过 Intent data 获取。Bundle extras = data.getExtras(); Bitmap bitmap = (Bitmap) extras.get("data"); - greenapps
4
@Jerry请不要在问题本身中添加问题的答案。关于抄袭问题,您只需要编辑您的回答并将代码适当地放入块引用中(因为您从文档中复制了它们),并标记给管理员以进行恢复。 - Abdul Aziz Barkat
1
实际上,在您的元问题中已经告诉了您需要做什么,而您在说您遵循了参考指南后删除了该问题;我们现在可以验证我们的怀疑;您没有遵循它们,因为内容不是块引用,这表示内容不是原始的并且是从另一个(引用)来源中引用的。 - Thom A
2
关于这个问题,版主们在这里是为了执行规定,而不是解决内容问题。然而,你可以通过正确引用内容并标记版主来轻松解决问题。再次抄袭内容是完全错误的行为。 - Thom A
显示剩余10条评论
1个回答

1
Android 5.0有一些额外的过滤来处理Intent。因此,您可能需要按照这种方式处理它。您可以尝试一下,因为在Camera API中已经更改了它。
其中一部分在这里。
static final int REQUEST_IMAGE_CAPTURE = 1;

private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    }
}

更多细节可以在Android 5.0 API更改的文档中找到。

https://developer.android.com/training/camera-deprecated/photobasics#TaskPath


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