Gdzie (i jak) Android przechowuje listy odtwarzania muzyki?

32

Zauważyłem, że Android utrzymuje te same listy odtwarzania w różnych aplikacjach muzycznych. Gdzie są przechowywane te listy odtwarzania? Jak (w jakim formacie) są przechowywane? Czy mogę uzyskać do nich dostęp zdalnie za pośrednictwem łącza pamięci USB, czy też istnieje aplikacja, której mogę użyć do uzyskania dostępu?

Powiązane pytanie: Przesyłanie muzyki i listy odtwarzania

Ilari Kajaste
źródło

Odpowiedzi:

24

Są przechowywane w twoim music.dbpliku - mój jest /data/data/com.google.android.music/databases; Nie jestem pewien, czy jest dokładnie tak samo na wszystkich urządzeniach, ale chyba tak jest.

Żyją w kombinacji tabel LISTSi LISTITEMS, które są zdefiniowane jako takie:

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>

Co ciekawe, jeśli używasz nowej Google Music Beta, utworzone listy odtwarzania nie wydają się pojawiać w innych aplikacjach, ale mają wpisy w bazie danych. Wygląda na to, że jest to możliwe, ponieważ w MusicSourceAccountpolu ustawiono identyfikator konta Google Music; inne aplikacje ustawiają go na 0, a te pojawiają się we wszystkich aplikacjach, które pobierają dane z bazy danych.

eldarerathis
źródło
1

Znalazłem post od deweloperów XDA .

Jeśli ktoś, kto to czyta, nie znajdzie go w katalogu wymienionym powyżej, spróbuj zamiast tego:

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

Następnie możesz skopiować go na swój komputer, użyć edytora SQLite według własnego gustu i dowolnie modyfikować dane.

henry700
źródło