【发布时间】:2014-10-12 18:11:55
【问题描述】:
如果专辑的曲目被分成多个目录,则似乎同一专辑在MediaStore 中被拆分为多行,并导致MediaStore.Audio.Media.ALBUM_ID 和MediaStore.Audio.Media.ALBUM_KEY 列具有不同值的多行即使这些曲目都来自同一张专辑(同一位艺术家的)。
例如,考虑以下文件路径:
/mnt/sdcard/X/a.mp3
/mnt/sdcard/X/b.mp3
/mnt/sdcard/X/c.mp3
/mnt/sdcard/X/d.mp3
/mnt/sdcard/Y/e.mp3
/mnt/sdcard/Y/f.mp3
/mnt/sdcard/Y/g.mp3
/mnt/sdcard/Z/h.mp3
/mnt/sdcard/Z/i.mp3
/mnt/sdcard/Z/j.mp3
请注意,mp3 文件由三个不同的文件夹分隔,“X”、“Y”和“Z”。以上所有曲目的专辑名称相同;它们都来自同一个艺术家的同一张专辑。
但是,当我检索 MediaStore.Audio.Media.ALBUM_ID 和 MediaStore.Audio.Media.ALBUM_KEY 的数据时,我看到三个不同的组分别与每个文件夹分开。它们都应该返回相同的ALBUM_ID 和ALBUM_KEY,但它们没有。 a.mp3的ALBUM_ID和ALBUM_KEY与e.mp3和h.mp3的不同,但与b.mp3、c.mp3和d.mp3的相同。
只有当我将它们全部合并到同一个文件夹时,它们才会更新为共享相同的 ALBUM_ID 和 ALBUM_KEY。
这是一个错误还是 Google 故意设计的?
【问题讨论】:
-
我刚刚在 Google Play 上发布了 TheoKlink 的新版播放列表管理器,它有一个查询生成器。创建您自己的查询(播放列表)可能有助于确定您的问题。或者,抓取 /data/data/com.android.providers.media/databases/external.db,并使用 sql 工具探索您电脑上的音乐记录/数据库结构。我使用 RazorSQL。保存路径名的唯一位置是 _DATA 字段,因此正如您所说,我不希望看到多个 ALBUM_ID
-
刚刚看了一下专辑表。 ALBUM_KEY 字段可能是您的问题。它包含不可读的信息。只需使用 ALBUM_ID 而不是 ALBUM_KEY。每条记录的 ALBUM_KEY 都不同
-
“ALBUM_KEY 字段可能是您的问题。它包含不可读的信息。只需使用 ALBUM_ID 而不是 ALBUM_KEY。每条记录的 ALBUM_KEY 都不同” - 不,我的发现表明 ALBUM_ID 也不同,如果如原始帖子中所述,该专辑分为多个文件夹。在原始帖子中给出的示例中,同一张专辑将有三个不同的 ALBUM_ID 值。
标签: android mediastore