33 votes

Où (et comment) Android stocke-t-il les listes de lecture de musique ?

J'ai remarqué que Android conserve les mêmes listes de lecture musicales à travers les applications musicales. Où ces listes de lecture sont-elles stockées? Comment (sous quel format) sont-elles stockées? Puis-je y accéder à distance via le lien de stockage USB, ou existe-t-il une application que je peux utiliser pour y accéder?

Question connexe: Transfert de musique et listes de lecture

26voto

David Negron Points 971

Ils sont stockés dans votre fichier music.db - le mien est /data/data/com.google.android.music/databases; je ne suis pas sûr si c'est exactement pareil sur tous les appareils mais je suppose que c'est probablement le cas.

Ils résident dans une combinaison des tables LISTS et LISTITEMS, qui sont définies comme suit :

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>

De façon intéressante, si vous utilisez le nouveau Google Music Beta, les listes de lecture que vous créez ne semblent pas apparaître dans d'autres applications mais elles ont des entrées dans la base de données. Il semblerait que cela soit possiblement dû au fait que le champ MusicSourceAccount est défini sur l'identifiant de votre compte Google Music; d'autres applications le définissent à 0, et ceux-ci apparaissent dans toutes les applications qui récupèrent des données de la base de données.

0 votes

Bien! Mais comment exécuter cette query SQL sur votre téléphone portable? Utilisez-vous un outil de base de données pour cela? Lequel?

2voto

henry700 Points 11

J'ai trouvé un message des développeurs de XDA.

Si quelqu'un qui lit ceci ne le trouve pas dans le répertoire indiqué ci-dessus, essayez celui-ci à la place

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

Vous pouvez ensuite le copier sur votre ordinateur, utiliser l'éditeur SQLite de votre choix et manipuler les données à votre guise.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X