Reputation: 81
I try to display images taken by the camera and display them in the application. When I take low-resolution images (say 100kB in size), I have no problems with the switch to bitmapped display, cons when I take them in high resolution (1.5MB), the application crashes with the exception
Error java.lang.OutOfMemoryError.
it happens to be on my smartphone (Samsung Galaxy SII, SIII Galaxy) is on all the shelves. For now I solved manually by lowering the quality and size of the photos but, given the evolution of cameras with increasing resolution, this problem is likely to arise more often. Is there not a permanent solution to increase the memory allocated to my application for Android without manual intervention on the device and in the code?
Images are stored in bitmap format
//image creation
Uri domuri1
ContentValues cv = new ContentValues();
cv.remove("101");
domuri1 = getContentResolver().insert(Media.EXTERNAL_CONTENT _URI, cv);
File domthumb1 = new File(domuri1.toString(), fileName1);
//increment photo apparate
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, domuri1);
startActivityForResult(intent, 100);
//images save
ContentResolver cr = getContentResolver();
bitmap1 = MediaStore.Images.Media.getBitmap(cr, domuri1 );
imageView.setImageBitmap(bitmap1);
Upvotes: 8
Views: 23055
Reputation: 13364
The default memory value for a normal App is 16MB and You can use android:largeHeap="true"
(which may increase memory up to 64MB) in your manifiest file inside the applicattion
tag. You can get the memory values assigned to you by
ActivityManager.getMemoryClass() and ActivityManager.getLargeMemoryClass().
Even if you ask for largeHeap
the android will only assign more memory if at all your application needs it.
Upvotes: 16