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

32

J'ai remarqué qu'Android conserve les mêmes listes de lecture de musique dans toutes les applications de musique. Où ces listes de lecture sont-elles stockées? Comment (dans quel format) sont-ils stockés? 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

Ilari Kajaste
la source

Réponses:

24

Ils sont stockés dans votre music.dbfichier - le mien l'est /data/data/com.google.android.music/databases; Je ne sais pas si c'est exactement la même chose sur tous les appareils, mais je suppose que c'est probablement le cas.

Ils vivent dans une combinaison des tables LISTSet LISTITEMS, qui sont définies comme telles:

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>

Il est intéressant de noter que si vous utilisez la nouvelle version bêta de Google Music, les listes de lecture que vous créez ne semblent pas apparaître dans les autres applications, mais elles ont des entrées dans la base de données. Cela semble être dû au fait que le MusicSourceAccountchamp est défini sur votre identifiant de compte Google Music; d'autres applications la définissent sur 0, et celles-ci apparaissent dans toutes les applications qui prennent des données de la base de données.

eldarerathis
la source
1

J'ai trouvé un article de XDA Developers .

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

/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 goût et manipuler les données à votre guise.

Henry700
la source