Can';我无法从Android文档中获取摄像头代码
我使用的代码来自 代码: 我正在尝试访问缩略图和存储在设备上的图片。但是由于某种原因,当我尝试代码时,我在data.getExtras()上得到一个空指针异常;部分Can';我无法从Android文档中获取摄像头代码,android,bitmap,android-camera,Android,Bitmap,Android Camera,我使用的代码来自 代码: 我正在尝试访问缩略图和存储在设备上的图片。但是由于某种原因,当我尝试代码时,我在data.getExtras()上得到一个空指针异常;部分 我在这里遗漏了什么?这是臭名昭著的Android开发经验之一 Android Intent不保证在data.getExtras()中提供捕获的图像,尤其是用户使用第三方相机/成像应用程序。你可以在谷歌搜索的任何地方找到许多试用和建议 其中一些常见问题如下 data.getExtras().get(“数据”) data.getExtr
我在这里遗漏了什么?这是臭名昭著的Android开发经验之一 Android Intent不保证在
data.getExtras()
中提供捕获的图像,尤其是用户使用第三方相机/成像应用程序。你可以在谷歌搜索的任何地方找到许多试用和建议
其中一些常见问题如下
data.getExtras().get(“数据”)代码>
data.getExtras()
使用不同的键(即“photo”)data.getData()
Uri.fromFile(f)
用于EXTRA\u输出
预定义路径Uri.fromFile(f)
带有一些随机文件名(datetime格式或IMG xxx),无需维护EXTRA\u输出
定义if-else-if-else
方法中检查它们
此外,发布应用程序后,请仔细查看崩溃报告。您可能会从上述试用中得到错误。要获得缩略图,您不需要创建文件等。请尝试下面的代码
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// Ensure that there's a camera activity to handle the intent
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
为了得到结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
imgView.setImageBitmap(imageBitmap);
}
}
imgView是要将缩略图设置为的图像视图
如果您希望创建一个文件,然后尝试此操作,[缩略图不需要此操作],您可能希望在尝试读取和写入存储时尝试将以下权限添加到清单中
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
祝您一切顺利。希望您已经在清单中声明了此操作所需的所有权限。我已经包括了这些,是的,当您在
data.getExtras()
使用断点时会给出这些内容?这是一个空指针异常,所以我认为它是空的(我现在不在笔记本电脑附近验证)@SeanHill//这可能是我回答中的第四种情况。所以您需要检查是否(data==null)
嗯?你是在暗示它是随机的/不一致的吗?@SeanHill//我说的随机是指他们(第三方相机应用程序)不可预测地定义的文件名。我只是尝试使用默认文件名camera@SeanHill//您的意思是默认值实际上不是默认值,除非它是Nexus。几乎所有android厂商,如三星或索尼,都会将自己的摄像头应用程序作为默认设置,但它可能会或可能不会给出与文档相同的结果。那么,如果有这么多摄像头的行为不可靠或不可预测,大多数开发人员会怎么做?我已经有了权限。我可以使用代码的简单版本获得缩略图,但不能使用文件代码获得缩略图和完整图像
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>