I have an ImageView into which I want to be able to load an image from:
gallery - works just fine
camera - does not load anything
The logs while using these two different actions are very similar besides the camera action displays to the end this:
- 10-21 23:24:18.304: D/android.widget.GridLayout(4447): horizontal constraints: x6 - x0 > 720, x5 - x0 > 720, x5 - x4 < 20, x4 - x3 < 142, x3 - x2 < 70, x2 - x1 < 32, x1 - x0 < 138 are inconsistent; permanently removing: x5 - x4 < 20.
- 10-21 23:24:18.324: D/android.widget.GridLayout(4447): vertical constraints: y1 - y0 > 468, y2 - y1 > 30, y3 - y2 > 120, y3 - y0 > 1140, y4 - y3 > 612, y4 - y0 < 1140, y3 - y2 < 120, y2 - y1 < 30 are inconsistent; permanently removing: y4 - y0 < 1140, y3 - y2 < 120.
I have a feeling this is an explanation why the image has not been displayed. The app does not segfault or anything, nothing happens from the UI perspective.
The code (shared by both, the camera action and the gallery action) is:
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(resultCode == Activity.RESULT_OK) {
Uri uri = data.getData();
if ((requestCode == SELECT_PICTURE) || (requestCode == PICTURE_RESULT)) {
Uri selectedImageUri = data.getData();
selectedImagePath = getRealPathFromURI(selectedImageUri);
mImageView = (ImageView) findViewById(R.id.imageView1);
int x = mImageView.getWidth();
int y = mImageView.getHeight();
if (x == 0 || y == 0) {
Display d = getWindowManager().getDefaultDisplay();
x = d.getWidth();
y = d.getHeight();
}
try {
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFile(selectedImagePath, opts);
// Calculate inSampleSize
opts.inSampleSize = calculateInSampleSize(opts, x, y);
// Decode bitmap with inSampleSize set
opts.inJustDecodeBounds = false;
mPicture = BitmapFactory.decodeFile(selectedImagePath, opts);
mPicture.recycle(); //otherwise multiple calls segfault
// create a matrix object
Matrix matrix = new Matrix();
matrix.postRotate(90); // clockwise by 90 degrees
// create a new bitmap from the original using the matrix to transform the result
Bitmap rotatedBitmap = Bitmap.createBitmap(mPicture, 0, 0, mPicture.getWidth(), mPicture.getHeight(), matrix, true);
//set image view
mImageView.setImageBitmap(rotatedBitmap);
} catch (Exception e) {
System.out.println("Bitmap could not be decoded." + e.getMessage());
}
}
The path is correct, the Bitmap is not null, everything looks just OK but the image is not displayed. Thanks for a help!