我正在尝试将拍摄的照片的缩略图设置为 ImageButton 的 scr。以下代码可以很好地拍摄照片并将其存储在图库中,但“位图 imageBitmap = (Bitmap) extras.get("data");”返回空值。 谁能解释一下为什么?
private void openCamera() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// Ensure that there's a camera activity to handle the intent
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
// Create the File where the photo should go
photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
Log.i("Camera log", "Failed:" + ex.toString());
}
// Continue only if the File was successfully created
if (photoFile != null) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
}
private void galleryAddPic() {
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File f = new File(mCurrentPhotoPath);
Uri contentUri = Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
this.sendBroadcast(mediaScanIntent);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
cameraBtn.setImageBitmap(imageBitmap);
galleryAddPic();
}
}
最佳答案
当您设置 MediaStore.EXTRA_OUTPUT
时,您必须从此 URL 获取照片。
例子:
if(photoFile!=null){
BitmapFactory.Options bmOptions = null;
bmOptions = new BitmapFactory.Options();
Bitmap mBitmap = BitmapFactory.decodeFile(photoFile.getPath(), bmOptions);
}
else{
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
cameraBtn.setImageBitmap(imageBitmap);
galleryAddPic();
}
关于android - 拍照时数据返回为null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36552301/