сначала я создал уникальный путь к файлу для хранения фотографии с использованием даты:
File file = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DCIM),"raspberry");
String dateString = new SimpleDateFormat("MM/dd/yyyy_HH:mm:ss").format(new Date());
filePath=new File(file,"SideBySide4_"+dateString+".jpg");
Я создал uri из filePath
с помощью FileProvider, который я определил в манифесте и xml:
mUri = FileProvider.getUriForFile(this,
BuildConfig.APPLICATION_ID + ".provider",
filePath);
mCurrentPhotoPath = "file:" + filePath.getAbsolutePath();//for getting Bitmap in onActivityResult()
Затем я запустил камеру Intent и дал ей Uri для хранения сделанной фотографии:
Intent takePictureIntent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mUri);
startActivityForResult(takePictureIntent,REQUEST_TAKE_PHOTO);
Затем в onActivityResult()
я пытаюсь получить Bitmap:
Uri imageUri=Uri.parse(mCurrentPhotoPath);
File file=new File(imageUri.getPath());
try{
InputStream ims=new FileInputStream(file);
photoBitmap=BitmapFactory.decodeStream(ims);
}catch(FileNotFoundException e){
return;
}
Но photoBitmap имеет значение null
Решение:
Вы можете сделать что-то вроде этого:
В вашем onActivityResult () после щелчка по картинке вы получаете данные в data
Итак:
Bitmap picture = (Bitmap) data.getExtras().get("data");
Может быть использован.
Надеюсь, это будет полезно.