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?
- ¿Cómo combinar múltiples imágenes en una sola imagen en android?
- Android: ¿Cómo comprobar si el archivo es imagen?
- Edición de Android: Ver con desplazamiento sin fin
- Fondo de pantalla en vivo con imágenes
- Cómo obtener el nombre de la imagen de ImageView en Android?
- Cómo elegir la imagen de webview en android
- Android - Imagen en botón presionado evento - Aplicar superposición de imagen a todos
- Matriz de imágenes en android
- ¿Cómo puedo crear una miniatura de una url de vídeo en android?
- Cambiar el tamaño de la imagen generada por BitmapFactory.decodeByteArray ()
- Cargador universal de imágenes de Android que muestra parcialmente las imágenes
- Android: (mala) baja calidad de imagen en el fondo de diseño
- Los bordes en la imagen no son suaves después de setpixels en android
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é:
Sin embargo, una pequeña alteración a ese método:
- Descargar e instalar la aplicación SDRescan
- Borrar datos de la aplicación Galería
- Borrar datos para la aplicación Media Storage
- 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()))); }
- ¿Cómo hacer la escritura de texto de animación?
- Reaccionar Nativo 'hola mundo' inicio rápido: "no se pudo conectar con el servidor de desarrollo"