Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';我无法从Android文档中获取摄像头代码_Android_Bitmap_Android Camera - Fatal编程技术网

Can';我无法从Android文档中获取摄像头代码

Can';我无法从Android文档中获取摄像头代码,android,bitmap,android-camera,Android,Bitmap,Android Camera,我使用的代码来自 代码: 我正在尝试访问缩略图和存储在设备上的图片。但是由于某种原因,当我尝试代码时,我在data.getExtras()上得到一个空指针异常;部分 我在这里遗漏了什么?这是臭名昭著的Android开发经验之一 Android Intent不保证在data.getExtras()中提供捕获的图像,尤其是用户使用第三方相机/成像应用程序。你可以在谷歌搜索的任何地方找到许多试用和建议 其中一些常见问题如下 data.getExtras().get(“数据”) data.getExtr

我使用的代码来自

代码:

我正在尝试访问缩略图和存储在设备上的图片。但是由于某种原因,当我尝试代码时,我在data.getExtras()上得到一个空指针异常;部分


我在这里遗漏了什么?

这是臭名昭著的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"/>