【问题标题】:Path of newly captured image by camera always return empty相机新捕获图像的路径总是返回空
【发布时间】:2019-12-10 10:27:44
【问题描述】:

我正在构建一个应用程序,其功能之一是拍照并将其上传到服务器。

这就是我的做法。我用reqCode = 7

btnUpload.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, reqCode);
    }
});

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    Toast.makeText(getActivity(), requestCode + " - " + resultCode, Toast.LENGTH_LONG).show();

    if(requestCode == reqCode && resultCode == RESULT_OK)
    {
        bitmap = (Bitmap) data.getExtras().get("data");
        imageCamera.setImageBitmap(bitmap);

        Uri tempUri = getImageUri(getActivity().getApplicationContext(), bitmap);

        //Toast.makeText(getActivity(),"Here "+ tempUri, Toast.LENGTH_LONG).show();
    }
    else
    {
        Toast.makeText(getActivity(), "Failed To Capture Image", Toast.LENGTH_LONG).show();
    }
}

private Uri getImageUri(Context applicationContext, Bitmap photo) {
    Bitmap OutImage = Bitmap.createScaledBitmap(photo, 1000, 1000,true);
    String path = MediaStore.Images.Media.insertImage(applicationContext.getContentResolver(), OutImage, "Title", null);
    return Uri.parse(path);
}

奇怪的是,getImageUri 中的字符串路径总是返回空。获取相机最近捕获的图片的图像路径的正确方法是什么?什么是正确的请求代码?

【问题讨论】:

    标签: android android-camera


    【解决方案1】:
    File file;
    Uri fileUri;
    
        final int RC_TAKE_PHOTO = 1;
    
            private void takePhoto() {
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                file = new File(getActivity().getExternalCacheDir(), 
                        String.valueOf(System.currentTimeMillis()) + ".jpg");
                fileUri = Uri.fromFile(file);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
                getActivity().startActivityForResult(intent, RC_TAKE_PHOTO);
    
            }
    
    
            @Override
            protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
    
                if (requestCode == RC_TAKE_PHOTO && resultCode == RESULT_OK) {
    
                        //do whatever you need with taken photo using file or fileUri
    
                        galleryUpdatePic(tmpFileUri.getPath());
    
                            Glide.with(mContext)
                        .load(tmpFileUri.getPath())
                        .into(img_profile_user);
    
                    }
                }
            }
    
    
    
    
        private void galleryUpdatePic(String mediaUrl) {
            Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
            File f = new File(mediaUrl);
            Uri contentUri = Uri.fromFile(f);
            mediaScanIntent.setData(contentUri);
            this.sendBroadcast(mediaScanIntent);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多