2012-07-19 20 views
7

Si tenta di visualizzare le immagini riprese dalla fotocamera e visualizzarle nell'applicazione. Quando prendo immagini a bassa risoluzione (dico 100KB), ho problemi con l'interruttore di visualizzazione bitmap, cons quando prenderli in alta risoluzione (1,5 MB), l'applicazione si blocca con l'eccezioneaumentare la memoria allocata all'applicazione

Error java.lang.OutOfMemoryError. 

capita di essere sul mio smartphone (Samsung Galaxy SII, SIII Galaxy) è su tutti gli scaffali. Per ora ho risolto manualmente abbassando la qualità e le dimensioni delle foto ma, vista l'evoluzione delle telecamere con risoluzione crescente, è probabile che questo problema si verifichi più spesso. Non c'è una soluzione permanente per aumentare la memoria allocata alla mia applicazione per Android senza l'intervento manuale sul dispositivo e nel codice?

Le immagini vengono memorizzate in formato bitmap

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

risposta

13

Il valore di memoria di default per una normale App è di 16 MB ed è possibile utilizzare android:largeHeap="true" (che può aumentare la memoria fino a 64 MB) nel file manifiest all'interno del tag applicattion. È possibile ottenere i valori di memoria assegnati a voi da ActivityManager.getMemoryClass() e ActivityManager.getLargeMemoryClass().

Anche se si richiede largeHeap, Android assegna più memoria se l'applicazione ne ha bisogno.

+0

buone idee ma se aggiungo questo nel mio androidManifest in eclissi tel me errore: Nessun identificatore risorsa trovato per l'attributo 'largeHeap' nel pacchetto 'android' – vetic

+0

quale versione dell'API hai scelto come target? – aProgrammer

+0

ho provato con API 8 e dopo aver provato con API 11 e Android 3.0 – vetic

Problemi correlati