2012-07-19 3 views
7

私はカメラで撮影した画像を表示し、アプリケーションに表示しようとします。私が(サイズで言う100KB)低解像度画像を撮るとき、私は、高解像度(1.5メガバイト)にそれらを取るとき、私は例外アプリケーションに割り当てられるメモリを増やす

Error java.lang.OutOfMemoryError. 
とアプリケーションがクラッシュし、ビットマップ表示への切り替えに問題、短所を持っていません

それは私のスマートフォン(サムスンギャラクシーSII、SIIIギャラクシー)に起こっているすべての棚にあります。 今は写真の質とサイズを低くして手作業で解決しましたが、解像度の向上したカメラの進化を考えると、この問題はより頻繁に発生する可能性があります。 デバイスとコードに手作業で介入することなく、自分のアプリケーションに割り当てられたメモリを増やす恒久的なソリューションはありませんか?

画像は、通常のアプリケーションのデフォルトのメモリ値が16メガバイトであるビットマップ形式

//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); 

答えて

13

に格納されており、あなたはandroid:largeHeap="true"(64メガバイトのメモリを増やすことができる)applicattionタグ内のあなたのmanifiestファイルで使用することができます。 ActivityManager.getMemoryClass()ActivityManager.getLargeMemoryClass()によって割り当てられたメモリ値を取得できます。

largeHeapを頼んでも、あなたのアプリケーションに必要な場合は、アンドロイドはもっと多くのメモリを割り当てます。

+0

いいえ、これを私のandroidManifestに で追加すると、アンドロイド:label = "@ string/app_name" android:theme = "@アンドロイド:style/Theme.NoTitleBar "android:largeHeap =" true "> エラー:パッケージ 'android'の属性 'largeHeap'のリソース識別子が見つかりません – vetic

+0

対象のAPIバージョンはどれですか? – aProgrammer

+0

私はapi 8でテストした後、私はAPI 11とアンドロイド3.0でテストした – vetic

関連する問題