8

カメラで撮影した画像を表示してアプリに表示してみます。低解像度の画像 (サイズが 100kB など) を撮影する場合、ビットマップ表示への切り替えに問題はありませんが、高解像度 (1.5MB) で撮影するとアプリケーションが例外でクラッシュします。

  Error java.lang.OutOfMemoryError. 

たまたま私のスマートフォン(Samsung 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);
4

1 に答える 1

15

通常のアプリのデフォルトのメモリ値は 16MB で、タグ内のマニフェスト ファイルで使用できます android:largeHeap="true"(最大 64MB のメモリを増やすことができます) 。ActivityManager.getMemoryClass()およびActivityManager.getLargeMemoryClass(applicattion )によって割り当てられたメモリ値を取得できます 。

Androidを要求しlargeHeapても、アプリケーションで必要な場合にのみ、より多くのメモリが割り当てられます。

于 2012-07-19T09:18:21.487 に答える