【问题标题】:Erroneously multiple values in MediaStore (when only one value is expected)MediaStore 中错误的多个值(当只需要一个值时)
【发布时间】:2014-10-12 18:11:55
【问题描述】:

如果专辑的曲目被分成多个目录,则似乎同一专辑在MediaStore 中被拆分为多行,并导致MediaStore.Audio.Media.ALBUM_IDMediaStore.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_IDMediaStore.Audio.Media.ALBUM_KEY 的数据时,我看到三个不同的组分别与每个文件夹分开。它们都应该返回相同的ALBUM_IDALBUM_KEY,但它们没有。 a.mp3ALBUM_IDALBUM_KEYe.mp3h.mp3的不同,但与b.mp3c.mp3d.mp3的相同。

只有当我将它们全部合并到同一个文件夹时,它们才会更新为共享相同的 ALBUM_IDALBUM_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


【解决方案1】:

我测试了数据库: 从专辑中选择 * ORDER BY 专辑 ASC; 是的,专辑的多个键使我相信标记可能不正确。所以我选择了一张专辑,Paolo Nuttine,Caustic Love,使用 Audiotagger 重做标签,重新扫描设备,拉出数据库并使用 Razorsql 查询。表专辑仍然显示多个键,但专辑信息正确显示。 我还跨文件夹拆分了另一张专辑,但没有看到所描述的行为。 抱歉,我无法阐明。

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多