android - hard - comandos adb shell
Actualiza mediastore de Android usando adb (3)
Estoy usando adb para sincronizar música en un teléfono Android. Básicamente, registro el directorio de música existente y envío archivos de música de reemplazo.
Me gustaría poder usar adb para forzar un nuevo escaneo, para que el reproductor de música de google (y otras aplicaciones) funcione correctamente con las nuevas canciones y listas de reproducción.
De acuerdo con ¿Cómo puedo actualizar MediaStore en Android? puede forzar una nueva búsqueda transmitiendo un intento apropiado.
adb proporciona ''shell am broadcast'', lo que parece permitirme forzar un reescaneo desde adb.
Alternativamente, podría ejecutar una nueva aplicación de búsqueda o reiniciar, pero me gustaría activar el reescaneo desde adb
¿Qué comando adb debería emitir? Los archivos de música y las listas de reproducción están en / sdcard / music.
El intento MEDIA_MOUNTED ya no está permitido (publicar KitKat) para aplicaciones que no sean del sistema; prueba esto en su lugar.
No es recursivo, sin embargo, y debe ejecutarse en el nombre de archivo exacto, por lo que no es un buen reemplazo.
adb shell am broadcast /
-a android.intent.action.MEDIA_SCANNER_SCAN_FILE /
-d file:///mnt/sdcard/Music/<exact_file_name>
Si necesita volver a buscar recursivamente, puede usar este comando (arregle las rutas en consecuencia):
adb shell "find /mnt/sdcard/Music/ -exec am broadcast /
-a android.intent.action.MEDIA_SCANNER_SCAN_FILE /
-d file://{} //;"
O de esta manera (si arriba no funcionará para usted):
adb shell "find /mnt/sdcard/Music/ | while read f; do /
am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE /
-d /"file://${f}/"; done"
Si ha rooteado su teléfono, puede usar este script que he escrito, que tiene la ventaja de mantener un registro de los archivos que ya se han actualizado:
#!/system/bin/env busybox ash
MUSIC_LIBRARY=/sdcard/MusicLibrary
LAST_UPDATE="$(stat -c %Y "$MUSIC_LIBRARY/.last-update")"
find "$MUSIC_LIBRARY" -type f ! -iname ".last-update" | (
while read f; do
if ! test "$LAST_UPDATE" -ge "$(stat -c %Y "$f")"; then
am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d "file://$f"
touch "$f"
else
echo "Not updated: /`$f''"
fi
done
)
touch "$MUSIC_LIBRARY/.last-update"
Las aplicaciones de reexploración usan un intento de montaje de medios para iniciar el escáner de medios. Puede usar am broadcast
para enviar el mismo intento.
El comando es:
adb shell am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard