我正在尝试使用活动结果从相机获取图像。它在android 4.2上正常工作。但我无法从android 2.36获取图像。
有人可以帮助我吗?
部分源代码附于下方:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
try {
if (requestCode == 2) {// image from camera
photo = (Bitmap) data.getExtras().get("data");
selectedImageUri = data.getData();
photo = decodeUri(selectedImageUri);
test.setImageBitmap(photo);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
private Bitmap decodeUri(Uri selectedImage) throws FileNotFoundException {
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(
getContentResolver().openInputStream(selectedImage), null, o);
final int REQUIRED_SIZE = 100;
int width_tmp = o.outWidth, height_tmp = o.outHeight;
int scale = 1;
while (true) {
if (width_tmp / 2 < REQUIRED_SIZE || height_tmp / 2 < REQUIRED_SIZE) {
break;
}
width_tmp /= 2;
height_tmp /= 2;
scale *= 2;
}
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
return BitmapFactory.decodeStream(
getContentResolver().openInputStream(selectedImage), null, o2);
}
答案 0 :(得分:0)
在我看来,不需要这条线:
photo = (Bitmap) data.getExtras().get("data");
答案 1 :(得分:0)
使用此:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
try {
if (requestCode == 2) {// image from camera
if (resultCode == Activity.RESULT_OK) {
getContentResolver().notifyChange(mUri, null);
ContentResolver cr = getContentResolver();
try {
mPhoto = android.provider.MediaStore.Images.Media
.getBitmap(cr, mUri);
Bitmap useThisBitmap = Bitmap.createScaledBitmap(mPhoto,
mPhoto.getWidth(), mPhoto.getHeight(), true);
test.setImageBitmap(useThisBitmap);
} catch (Exception e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT)
.show();
}
} else {
Toast.makeText(this,
resultCode + "" + "=" + Activity.RESULT_CANCELED,
Toast.LENGTH_SHORT).show();
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}