¿Dónde (y cómo) almacena Android las listas de reproducción de música?

32

Me di cuenta de que Android mantiene las mismas listas de reproducción de música en todas las aplicaciones de música. ¿Dónde se almacenan estas listas de reproducción? ¿Cómo (en qué formato) se almacenan? ¿Puedo acceder a ellos de forma remota a través del enlace de almacenamiento USB, o hay una aplicación que pueda usar para acceder a ellos?

Pregunta relacionada: Transferencia de música y listas de reproducción

Ilari Kajaste
fuente

Respuestas:

24

Están almacenados en su music.dbarchivo, el mío es /data/data/com.google.android.music/databases; No estoy seguro de si esto es exactamente lo mismo en todos los dispositivos, pero supongo que probablemente lo sea.

Viven en una combinación de las tablas LISTSy LISTITEMS, que se definen como tales:

sqlite> .schema lists
.schema lists
CREATE TABLE LISTS(Id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT NOT NULL, 
    SourceAccount INTEGER, SourceId TEXT, _sync_version TEXT, 
    _sync_dirty INTEGER NOT NULL DEFAULT 0, MediaStoreId INTEGER, 
    ListType INTEGER NOT NULL DEFAULT 0, ListArtworkLocation TEXT);
CREATE INDEX LIST_SYNC_INDEX on LISTS(SourceAccount,SourceId);
sqlite>

sqlite> .schema listitems
.schema listitems
CREATE TABLE LISTITEMS(Id INTEGER PRIMARY KEY AUTOINCREMENT, 
    ListId INTEGER NOT NULL REFERENCES LISTS, MusicSourceAccount INTEGER NOT NULL,  
    MusicSourceId TEXT NOT NULL, ClientPosition INTEGER NOT NULL, 
    ServerPosition INTEGER NOT NULL DEFAULT 0, SourceAccount INTEGER, SourceId TEXT,
    _sync_version TEXT, _sync_dirty INTEGER NOT NULL DEFAULT 0, 
    ServerOrder TEXT DEFAULT '', ClientId TEXT);
CREATE INDEX LISTITEMS_ORDER_INDEX ON LISTITEMS (ListId, ServerOrder, ClientPosition);
CREATE INDEX LISTITEMS_SYNC_INDEX on LISTITEMS(SourceAccount,SourceId);
sqlite>

Curiosamente, si está utilizando la nueva versión beta de Google Music, las listas de reproducción que cree no aparecen en otras aplicaciones, pero tienen entradas en la base de datos. Parece que esto posiblemente se deba a que el MusicSourceAccountcampo está configurado para su ID de cuenta de Google Music; otras aplicaciones lo establecen en 0, y aparecen en todas las aplicaciones que toman datos de la base de datos.

eldarerathis
fuente
1

Encontré una publicación de XDA Developers .

Si alguien que lee esto no lo encuentra en el directorio mencionado anteriormente, pruebe este:

/data/data/com.android.providers.media/databases/external-{{some hex here}}.db

Luego puede copiarlo a su computadora, usar el editor SQLite de su gusto y manipular los datos a su gusto.

henry700
fuente