我已经找到了人们可以用来检索相机拍摄图像的uri /位图的方法。 但是,当我尝试从非null uri创建位图时,我得到的文件未创建且不存在。
这是我用来打开相机意图的功能(从stackoverflow复制而来):
private void openBackCamera() {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = timeStamp + ".jpg";
File storageDir = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
currentImageBase64 = storageDir.getAbsolutePath() + "/" + imageFileName;
File file = new File(currentImageBase64);
Log.d("2","file 1: " +file.exists());
Uri outputFileUri = FileProvider.getUriForFile(getApplicationContext(),"com.mydomain.fileprovider",file);
currentImageBase64 =outputFileUri+"";
Log.d("2",outputFileUri+" is the uri got from camera");
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
这就是我处理图像的方式:
Log.d("2","camera request!"+ currentImageBase64);
File imgFile = new File(currentImageBase64);
if(imgFile.exists()) {
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ivPreview.setImageBitmap(myBitmap);
}else{
Log.d("2","file does not exist");
}
请注意,相机请求日志显示currentImagesBase64不为null,并且其值为“ content://com.mydomain.fileprovider/name/Pictures/20190121_173332.jpg” 该文件仍然不存在。
/ ** 编辑:问题是权限不足,请求了摄像头和读写权限,问题已解决! ** /
答案 0 :(得分:0)
原来是权限问题,一旦我授予运行时摄像机读写存储权限,问题就解决了!