Android在哪里(以及如何)存储音乐播放列表?


32

我注意到,Android在音乐应用程序中会保留相同的音乐播放列表。这些播放列表存储在哪里?它们如何(以什么格式)存储?我可以通过USB存储链接远程访问它们,还是可以使用一个应用程序访问它们?

相关问题:音乐传输和播放列表


Answers:


24

它们存储在您的music.db文件中-我的是/data/data/com.google.android.music/databases; 我不确定在所有设备上这是否完全相同,但我想可能是这样。

它们存在于LISTSLISTITEMS表的组合中,其定义如下:

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音乐测试版,则您创建的播放列表似乎不会出现在其他应用中,但它们确实在数据库中具有条目。可能是因为该MusicSourceAccount字段设置为您的Google音乐帐户ID;其他应用程序将其设置为0,则这些应用程序会出现在从数据库获取数据的所有应用程序中。


1

从XDA Developers找到了一个帖子

如果有人在上面列出的目录中找不到它,请尝试使用此方法:

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

然后,您可以将其复制到您的计算机上,使用您喜欢的SQLite编辑器并按自己的意愿操作数据。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.