2012-07-19 24 views
7

Intento mostrar las imágenes tomadas por la cámara y mostrarlas en la aplicación. Cuando tomo imágenes de baja resolución (digamos 100 kB de tamaño), no tengo problemas con el cambio a la pantalla de mapa de bits, los contras cuando los ingiere, la aplicación se bloquea con la excepciónaumentar la memoria asignada a la aplicación

Error java.lang.OutOfMemoryError. 
alta resolución (1,5 MB)

pasa a estar en mi teléfono inteligente (Samsung Galaxy SII, SIII Galaxy) está en todos los estantes. Por ahora lo resolví manualmente bajando la calidad y el tamaño de las fotos pero, dada la evolución de las cámaras con resolución creciente, es probable que este problema surja con más frecuencia. ¿No existe una solución permanente para aumentar la memoria asignada a mi aplicación para Android sin intervención manual en el dispositivo y en el código?

Las imágenes se almacenan en formato de mapa de bits

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

Respuesta

13

El valor de memoria predeterminada para una aplicación normal es de 16 MB y se puede utilizar android:largeHeap="true" (que puede aumentar la memoria hasta 64 MB) en el archivo Manifiesto dentro de la etiqueta applicattion. Puede obtener los valores de memoria asignados por ActivityManager.getMemoryClass() y ActivityManager.getLargeMemoryClass().

Incluso si solicita largeHeap, el android solo asignará más memoria si su aplicación lo necesita.

+0

buena idea pero si agrego esto en mi androidManifest en eclipse tel yo error: ¿No se ha encontrado ningún identificador de recurso para el atributo 'largeHeap' en el paquete 'android' – vetic

+0

a qué versión de API está orientando? – aProgrammer

+0

He probado con api 8 y después de probar con api 11 y android 3.0 – vetic

Cuestiones relacionadas