Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.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
Android 位图在摄影机中始终返回null_Android_Camera - Fatal编程技术网

Android 位图在摄影机中始终返回null

Android 位图在摄影机中始终返回null,android,camera,Android,Camera,我尝试从安卓系统捕获图像并上传到服务器,我做了所有代码运行时权限,上传到服务器和所有。但是我的照相机的位图是空的。我尝试获取额外的和所有的方式。对我来说,代码似乎是正确的,但位图总是空的。原因可能是什么 尝试使用 data.getExtras().get("data"); 就像这里一样 但是没有帮助 我的代码在点击按钮时执行相机意图 CaptureImageFromCamera.setOnClickListener(new View.OnClickListener() {

我尝试从安卓系统捕获图像并上传到服务器,我做了所有代码运行时权限,上传到服务器和所有。但是我的照相机的位图是空的。我尝试获取额外的和所有的方式。对我来说,代码似乎是正确的,但位图总是空的。原因可能是什么

尝试使用

 data.getExtras().get("data"); 
就像这里一样

但是没有帮助

我的代码在点击按钮时执行相机意图

  CaptureImageFromCamera.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            intent = new 
   Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

            startActivityForResult(intent, 7);

        }
    });


 // Star activity for result method to Set captured image on image view 
 after click.
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 7 && resultCode == RESULT_OK && data != null && 
   data.getData() != null) {

        Uri uri = data.getData();

        // Adding captured image in bitmap.
        // if(data.getData()==null){
        bitmap = (Bitmap)data.getExtras().get("data");
        //}//else{
        // bitmap = 
    MediaStore.Images.Media.getBitmap(this.getContentResolver(), data.getData());
        //}
        //  bitmap = 
    MediaStore.Images.Media.getBitmap(getContentResolver(), uri);

        // adding captured image in imageview.
        ImageViewHolder.setImageBitmap(bitmap);

    }

}
我想从照相机意图中获取位图并在imageview中显示。

onActivityResult()
中,您有:

private void choosePhotoFromCamera() {
        log.info("choosePhotoFromCamera() is called");

        intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, 1);
    }


@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == this.RESULT_CANCELED) {
        return;
    }

    // choose profile image from CAMERA
    if (requestCode == 1) {
        try {

           Bitmap bitmap = (Bitmap) data.getExtras().get("data");

            if (bitmap != null) {
                imageView.setImageBitmap(bitmap);
                strImagePath = getImageUri(bitmap).toString();
            }

        } catch (Exception e) {
            log.error("Exception after choosing image from camera : " + e.getMessage());
        }
    }
if (requestCode == 7 && resultCode == RESULT_OK && data != null && 
    data.getData() != null) {
前三部分很好。但是,
data.getData()!=null有两个问题:

  • 这是不相关的,因为
    if
    块没有尝试使用
    data.getData()
    (尽管您已经注释掉了使用该函数的代码)

  • data.getData()
    对于
    ACTION\u IMAGE\u CAPTURE
    来说应该是
    null
    ,因此对于正确实现的摄像头应用程序,您的
    if
    条件将始终是
    false

  • 如果删除
    data.getData()!=空
    ,您应该进入
    if
    块,并能够尝试获取您的
    位图


    正如其他人所指出的,此代码将为您提供缩略图大小的
    位图
    。如果您正在寻找摄像头应用程序以提供全分辨率图像,则需要使用
    EXTRA\u输出
    。演示如何执行此操作。

    请检查此
    如果(requestCode==7&&resultCode==RESULT\u OK&&data!=null&&data.getData()!=null)
    --清除
    数据。getData()!=空
    部分。这应该是
    null
    。与@commonware使用getData()删除所有代码一样,也使用这种方式可以获得缩略图,而不是完整图像,但我猜这就是您想要的want@CommonsWare现在很好,谢谢。我会接受这里提到的相同答案编辑我的答案。。。现在它将完美地工作。我要求一些解释,而不是更多的代码。你应该指出OP的代码出了什么问题,以及为使其正常工作所做的更正。。这就是我所说的完整答案…代码中似乎没有选中的异常,如果您捕获图像,为什么要尝试/捕获。。然后,Uri=data.getData();将始终返回null…当您从gallery中选择图像时,这将起作用。.bitmap=(位图)data.getExtras().get(“data”);这行足以容纳位图。。。