Onde (e como) o Android armazena listas de reprodução de música?

32

Percebi que o Android mantém as mesmas listas de reprodução de músicas nos aplicativos de música. Onde essas listas de reprodução são armazenadas? Como (em que formato) eles são armazenados? Posso acessá-los remotamente através do link de armazenamento USB ou existe um aplicativo que eu possa usar para acessá-los?

Pergunta relacionada: Transferência de músicas e listas de reprodução

Ilari Kajaste
fonte

Respostas:

24

Eles estão armazenados no seu music.dbarquivo - o meu é /data/data/com.google.android.music/databases; Não tenho certeza se isso é exatamente o mesmo em todos os dispositivos, mas acho que provavelmente é.

Eles vivem em uma combinação das tabelas LISTSe LISTITEMS, que são definidas como tais:

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, se você estiver usando o novo Google Music Beta, as listas de reprodução criadas por você parecem não aparecer em outros aplicativos, mas elas têm entradas no banco de dados. Parece que isso ocorre possivelmente porque o MusicSourceAccountcampo está definido com o ID da sua conta do Google Music. outros aplicativos o definem como 0 e esses aparecem em todos os aplicativos que recebem dados do banco de dados.

eldarerathis
fonte
1

Eu encontrei um post de XDA Developers .

Se alguém lendo isso não o encontrar no diretório listado acima, tente este:

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

Você pode copiá-lo para o seu computador, usar o editor SQLite de seu gosto e manipular os dados conforme sua vontade.

henry700
fonte