Я нашел способы, которые якобы помогли людям получить uri / bitmap изображения, сделанного камерой. Но когда я пытаюсь создать растровое изображение из ненулевого 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 не является нулевым и имеет значение «content: //com.mydomain.fileprovider/name/Pictures/20190121_173332.jpg», файл в любом случае не существует.
/ ** редактировать: проблема заключалась в недостаточных разрешениях, были запрошены разрешения камеры и чтения и записи, и проблема была решена! ** /
currentImageBase64 =outputFileUri+"";
. - person CommonsWare   schedule 21.01.2019