Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android sin memoria en la captura de imágenes

Tengo una Actividad que toma fotos (con plena resolución posible, por lo que bastante grande), la aplicación tiene entonces la oportunidad de analizarlos. Sólo se maneja una foto a la vez. El problema es que me ejecuto en un "Fuera de memoria" después de 4 – 5 fotos. Ya veo

Dalvikvm-heap Fuera de memoria en una asignación 5070745-byte

(El tamaño del byte varía) seguido por

Camera-JNI No se pudo asignar matriz de bytes para datos JPEG

Mi aplicación no se bloquea, pero como me parece la cámara simplemente se vuelve incapaz de entregar las imágenes a partir de este punto. Presto atención al uso de la memoria en mi aplicación, pero aquí parece que hay una pérdida de memoria en algún lugar fuera y me estoy preguntando cómo puedo hacer frente a esto. Cualquier solución se acerca a esto?

  • Imagebutton me da error: Falta el atributo contentDescription en la imagen
  • Programar una captura de pantalla del servicio
  • Android procesamiento de imágenes de alta resolución
  • Imágenes extraíbles de Android de la URL
  • Cómo convertir una imagen Drawable de recursos a un mapa de bits
  • Android: lee la imagen PNG sin alpha y decodifica como ARGB_8888
  • Cómo configurar Height Width de ImageView de forma programática en android?
  • Biblioteca de procesamiento de imágenes para Android y Java
  • 2 Solutions collect form web for “Android sin memoria en la captura de imágenes”

    Esto puede no ser exactamente lo que está tratando de hacer, pero para mostrar varias imágenes grandes (4-6 MB) en una vista de cuadrícula, encontré este código para crear un mapa de bits más pequeño con una calidad inferior, Situaciones de memoria:

    BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 5; options.inPurgeable = true; options.inInputShareable = true; Bitmap bm = BitmapFactory.decodeFile("/sdcard/myapp/" + filesFound.get(position), options); 

    Las opciones son la parte importante, y al variar la configuración, me las arreglé para llevar la memoria desde donde se bloquearía, a alrededor de 28 MB cuando comencé a usar el inSampleSize. Además bajó con la configuración inPurgeable y inInputShareable establecida en true. Mi actividad sigue siendo lenta, pero es mucho mejor.

    Para su aplicación, si puede analizar un mapa de bits, el código anterior puede reducir el uso de memoria lo suficiente como para que funcione. Todavía soy nuevo en Android, por lo que es posible que esto no funcione en absoluto .. ;-).

    Saludos,

    Kevin

    Ya que se queda sin memoria después de 4-5 imágenes que probablemente arent llamar a yourBitmap.recycle (); Después de haber sido guardado en la tarjeta SD?

    También en el método onPictureTaken () puede guardar el tempData de la imagen en un mapa de bits utilizando Bitmap.Config.RGB_565 en lugar de ARGB (predeterminado) si no necesita el canal alfa.

      // Create options to help use less memory Options opt = new Options(); opt.inPreferredConfig = Bitmap.Config.RGB_565; // Decode the tempdata into a bitmap, with the options as the last argument bitmapFromRawCameraTempData = BitmapFactory.decodeByteArray(rawCameraTempData, 0, rawCameraTempData.length, opt); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.