33 votos

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

He notado 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 ellas de forma remota a través del enlace de almacenamiento USB, o hay alguna aplicación que pueda usar para acceder a ellas?

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

26voto

David Negron Puntos 971

Se almacenan en tu archivo music.db - el mío es /data/data/com.google.android.music/databases; no estoy seguro si esto es exactamente igual en todos los dispositivos pero supongo que probablemente lo sea.

Residen en una combinación de las tablas LISTS y LISTITEMS, las cuales están definidas de la siguiente manera:

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ás usando el nuevo Google Music Beta, las listas de reproducción que crees no parecen aparecer en otras aplicaciones pero sí tienen entradas en la base de datos. Parece ser que esto posiblemente se deba a que el campo MusicSourceAccount está configurado con tu id de cuenta de Google Music; otras aplicaciones lo configuran como 0, y esas aparecen en todas las aplicaciones que toman datos de la base de datos.

0 votos

¡Genial! Pero ¿cómo ejecutas esta consulta SQL en tu teléfono móvil? ¿Estás usando alguna herramienta de base de datos para eso? ¿Cuál?

2voto

Joshua Huber Puntos 622

Encontré un post de XDA Developers.

Si alguien que esté leyendo esto no lo encuentra en el directorio mencionado arriba, intente con este en su lugar:

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

Luego puedes copiarlo a tu computadora, usar el editor SQLite que prefieras y manipular los datos a tu antojo.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X