我尝试显示相机拍摄的图像并将其显示在应用程序中。当我拍摄低分辨率图像(比如说大小为100kB)时,我没有切换到位图显示的问题,当我以高分辨率(1.5MB)拍摄它时,应用程序崩溃,异常
Error java.lang.OutOfMemoryError.
碰巧在我的智能手机上(三星Galaxy SII,SIII Galaxy)就在所有货架上。
现在我通过降低照片的质量和尺寸来手动解决,但是,随着分辨率越来越高的相机的发展,这个问题可能会更频繁地出现。
是否没有永久的解决方案来增加分配给我的Android应用程序的内存,而无需在设备和代码中进行手动干预?
图像以位图格式存储
//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);
答案 0 :(得分:14)
普通应用程序的默认内存值为16MB,您可以在android:largeHeap="true"
标记内最明显的文件中使用applicattion
(可能会将内存增加到64MB)。您可以获取分配给您的内存值
ActivityManager.getMemoryClass()和ActivityManager.getLargeMemoryClass()。
即使你要求largeHeap
,如果你的应用程序需要它,android只会分配更多的内存。