我有两个用于拍摄照片的imageView。
mImageView1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAMERA_REQUEST_CODE1);
}
});
mImageView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAMERA_REQUEST_CODE2);
}
});
以下活动结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
if (requestCode==CAMERA_REQUEST_CODE1 && resultCode == RESULT_OK) {
bitmap1 = (Bitmap) data.getExtras().get("data");
SharedPreferences myPrefrence = getSharedPreferences("MyPreferences",MODE_PRIVATE);
SharedPreferences.Editor editor = myPrefrence.edit();
editor.putString("image1", encodeToBase64(bitmap1));
editor.commit();
String imageS = myPrefrence.getString("image1", encodeToBase64(bitmap1));
decodedBitmap1 = decodeToBase64(imageS);
Uri imageUri1 = bitmapToUriConverter(decodedBitmap1);
imgRotation1 = getRotation(this, imageUri1);
mImageView1.setRotation(imgRotation1);
//COMPRESS
ByteArrayOutputStream out = new ByteArrayOutputStream();
decodedBitmap1.compress(Bitmap.CompressFormat.JPEG, 10, out);
mImageView1.setImageBitmap(decodedBitmap1);
mImageView1.setSaveEnabled(true);
mImageView1.setEnabled(false);
}
if (requestCode==CAMERA_REQUEST_CODE2 && resultCode == RESULT_OK) {
bitmap2 = (Bitmap) data.getExtras().get("data");
SharedPreferences myPrefrence = getSharedPreferences("MyPreferences",MODE_PRIVATE);
SharedPreferences.Editor editor = myPrefrence.edit();
editor.putString("image2", encodeToBase64(bitmap2));
editor.commit();
String imageS = myPrefrence.getString("image2", encodeToBase64(bitmap2));
decodedBitmap2 = decodeToBase64(imageS);
Uri imageUri2 = bitmapToUriConverter(decodedBitmap2);
imgRotation2 = getRotation(this, imageUri2);
mImageView2.setRotation(imgRotation2);
//COMPRESS
ByteArrayOutputStream out = new ByteArrayOutputStream();
decodedBitmap2.compress(Bitmap.CompressFormat.JPEG, 10, out);
mImageView2.setImageBitmap(decodedBitmap2);
mImageView2.setSaveEnabled(true);
mImageView2.setEnabled(false);
}
我使用mImageView1捕获图像并在其中显示始终没有问题。但是当我使用mImageView2捕获图像时,mImageView1有时(并非总是)会丢失图像。我已经尝试过SharedPreferences来保存图像,并在将图像放入图像视图之前压缩图像,但没有结果。知道为什么会这样吗?
答案 0 :(得分:0)
我想我自己找到了解决方案。
我设置为imageViews uris而不是位图
例如
mImageView1.setImageURI(imageUri1);