Где (и как) Android хранит музыкальные плейлисты?

32

Я заметил, что Android хранит одинаковые списки воспроизведения в музыкальных приложениях. Где хранятся эти плейлисты? Как (в каком формате) они хранятся? Могу ли я получить к ним удаленный доступ через USB-накопитель или вместо этого есть приложение, которое я могу использовать для доступа к ним?

Связанный вопрос: передача музыки и плейлисты

Илари Каясте
источник

Ответы:

24

Они хранятся в вашем music.dbфайле - мой есть /data/data/com.google.android.music/databases; Я не уверен, если это точно так же на всех устройствах, но я думаю, что это, вероятно, так.

Они живут в комбинации LISTSи LISTITEMSтаблиц, которые определены как таковые:

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>

Интересно, что если вы используете новую бета-версию Google Music, созданные вами плейлисты не отображаются в других приложениях, но в них есть записи в БД. Похоже, что это возможно, потому что в MusicSourceAccountполе установлен идентификатор вашей учетной записи Google Music; другие приложения устанавливают его на 0, и они появляются во всех приложениях, которые получают данные из БД.

eldarerathis
источник
1

Я нашел сообщение от разработчиков XDA .

Если кто-то, читающий это, не найдет его в каталоге, указанном выше, попробуйте это:

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

Затем вы можете скопировать его на свой компьютер, использовать редактор SQLite на свой вкус и манипулировать данными по собственному желанию.

henry700
источник