Android – .nomedia no funciona para las imágenes

Tengo las imágenes, que se leen de sdcard solamente por la aplicación particular así que quiero ocultarlo de la galería de la imagen. He puesto el archivo .nomedia en él, pero este archivo se ignora, las imágenes siguen mostrándose en la Galería. Lo he puesto con "." al principio. Sigue sin funcionar. ¿Algunas ideas?

Supongo que está usando Android 4.0, ya que .nomedia funcionó correctamente hasta entonces. El informe de errores AOSP para el problema explica:

MediaScanner en Android 4.0 no puede olvidar los archivos ya indexados cuando se encuentra con un archivo .nomedia , pero lo honra si está presente en la primera pasada. Así que la solución es simplemente cambiar el nombre del directorio. Por supuesto, puede cambiar el nombre de nuevo después de la siguiente exploración, si lo desea.

Actualización : Supongo que la solución completa sería forzar realmente un análisis de medios después de cambiar el nombre del directorio. No lo he probado, pero algo así debería hacer el truco:

 sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 

Bueno … Admito que sólo estoy adivinando, pero como obtuvo un +1 en el comentario, le daré un giro como respuesta. Puesto que esta es tu propia aplicación, cambia la extensión del archivo de imagen a algo totalmente único ".myimagefile" por ejemplo, y ver si lo oculta desde Android. Mientras tanto, usted sabe qué archivos cargar en su propia aplicación, y cómo guardarlos.

El error .nomedia es correcto y puedes añadirlo a una carpeta de imágenes preexistente.

Puede forzar a la galería a volver a indexar después de crear el archivo .nomedia cambiando el nombre de la carpeta, ejecutar la galería (la "carpeta oculta ahora debe estar ausente) y cambiar el nombre de la carpeta de nuevo a lo que desea.

Lo hice de nuevo para asegurarme de que funciona en mi teléfono. Android 4.0.4.

Aquí hay algo que me encontré:

http://www.transformerforums.com/forum/asus-transformer-faq/17765-solved-nomedia-doesnt-work-under-honeycomb-ics.html

Sin embargo, una pequeña alteración a ese método:

  1. Descargar e instalar la aplicación SDRescan
  2. Borrar datos de la aplicación Galería
  3. Borrar datos para la aplicación Media Storage
  4. Abrir la aplicación SDRescan descargada desde el paso 1

SDCard se debe volver a escanear y todos los directorios que contienen archivos .nomedia deben ser ignorados en este momento.

El archivo .nomedia es preventivo, no curativo (en Android 4.0), y es un error. Si tenía un archivo .nomedia y las imágenes ya están en él, Galería seguirá buscando imágenes.

Necesitas crear tu archivo .nomedia antes de colocar imágenes en él.

Editar : todas las carpetas que empiecen con un punto no se escanearán (porque están ocultas).

Con Media Storage 4.1.1 en mi Samsung Galaxy Note 2, ninguno de los trucos dados arriba funciona completamente, en este sentido: los directorios que contienen archivos .nomedia todavía se escanean, lo que puede drenar la batería mucho (aunque el resultado es ignorado en el Galería), y también directorios con nombres que comienzan con un '.' Son todavía escaneados 🙁
He recurrido a usar el "Media Scanner Root" aplicación, que permite desactivar el escáner de medios de comunicación en absoluto. Esto se logra aparentemente por algo como

  Pm disable com.android.providers.media/com.android.providers.media.MediaScannerReceiver 

BTW, la desactivación / congelación de la aplicación de almacenamiento de medios en sí tiene el mal efecto de que la selección y vinculación de tonos de llamada y notificaciones ya no funciona (lo que es un diseño maravilloso), pero cuando se deshabilita su componente de escáner, El explorador de archivos ES para seleccionar tonos.

En mi tarjeta de memoria tengo miles de fotos que abruman el escáner multimedia. A continuación, en la carpeta raíz de mi tarjeta de memoria, cambió el nombre de "RootFolder" a ".RootFolder"

Se convirtió en el directorio oculto y no usar más .nomedia

Prueba esto.

Podría considerar el uso de la biblioteca APK Expansion Zip (requiere API de nivel 5 o superior) para leer los archivos que habrá instalado en la tarjeta SD como parte de un archivo Zip. Puede encontrar una descripción de esta biblioteca aquí:

http://developer.android.com/guide/market/expansion-files.html#ZipLib

Presumiblemente, los archivos almacenados en un archivo ZIP de su tarjeta SD no serán mostrados por la Galería.

Además, si tiene imágenes de la que su aplicación lee (pero no escribe ) la tarjeta SD, y que solo debería estar disponible para su propia aplicación y que podría entregarse cuando su aplicación esté instalada o actualizada, podría Tiene sentido aprovechar una nueva facilidad de Google Play para incorporarlas como parte de su aplicación cuando esté instalada.

Supongo que usted está almacenando sus imágenes en la tarjeta SD porque son demasiado grandes para caber en su archivo APK (dado su límite de tamaño de 50 MB, que es aún más pequeño que en la práctica para ciertos dispositivos, debido a problemas de almacenamiento en búfer).

Si es así, puedes considerar que Google Play, a partir del 3/5/2012, admite el archivo adjunto (en tu aplicación) de hasta dos "archivos de expansión" de hasta 2 Gigabytes cada uno. El APK aún tiene un máximo de 50 MB, pero los archivos de expansión aumentan el almacenamiento total disponible para más de 4 GB. Esos archivos de expansión son servidos para usted por Google, y se mantienen en una carpeta de tarjeta SD específica que es específica de su aplicación, y se puede acceder mediante una API proporcionada por la biblioteca de descargadores (requiere nivel API 5 o superior).

Aquí está el anuncio de Google de este cambio:

http://android-developers.blogspot.in/2012/03/android-apps-break-50mb-barrier.html

Y aquí está una descripción detallada de la instalación:

http://developer.android.com/guide/market/expansion-files.html

Tenga en cuenta que aunque esta instalación es nueva, las bibliotecas se han suministrado con el SDK de Android para su uso con niveles anteriores de la API. Por ejemplo, en mi instalación, encuentro las versiones API-8 aquí:

 <Android SDK base folder>\extras\google\play_apk_expansion\ 

Esa misma carpeta incluye la supuesta biblioteca APK de expansión Zip en su subcarpeta zip_file.

Yo no he utilizado personalmente esta instalación pero yo mismo, y por lo tanto estoy describiendo esto basado únicamente en las referencias citadas.

Galería no se actualiza con tanta frecuencia y algunas miniaturas todavía están en la vista. Para esto es necesario reiniciar el teléfono o actualizar programaticamente la galería, siguiendo el código.

  /** * This method is must to reflect changes on gallery, if some file is * deleted or moved, <b> no updation is shown on gallery till phone is * rebooted </b> or <i>till this method UpdateGallery(Activity activity) is * called</i> UpdateGallery */ public static void UpdateGallery(Activity activity) { activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri .parse("file://" + Environment.getExternalStorageDirectory()))); } 
  • Problema de memoria mientras maneja y procesa múltiples mapas de bits grandes
  • Establecer el tamaño de la imagen a pantalla completa en android
  • Android Image Dialog / Popup mismo tamaño que la imagen y sin frontera
  • Evitar el ahorro automático de fotos en la galería al cargar fotos en el navegador de Android con la entrada type = file capture = camera
  • Qué biblioteca de imágenes de Android para cargar fotos en línea
  • ¿Cómo preparar una imagen para una pantalla de densidad más pequeña?
  • Android: configuración del relleno en un fondo de imagen de superposición
  • Convertir texto de cadena en mapa de bits
  • imagen de ajuste de androide en imagen
  • Cómo crear un mapa de bits de un archivo de imagen en Android
  • Escala de mapa de bits con Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.