gpt4 book ai didi

Android: 查询 MediaStore.Audio.Artists.Albums

转载 作者:行者123 更新时间:2023-11-29 00:44:37 28 4
gpt4 key购买 nike

目前我正在通过正常的 ContentResolver 成功查询 MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,并获得预期的结果。文档说有一个嵌套类 MediaStore.Audio.Artists.Albums 是一个包含每个艺术家的每个专辑的子目录,但是它没有等效的 EXTERNAL_CONTENT_URI。如何查询?

或者更一般地说,给定一位艺术家,我如何列出包含该艺术家歌曲的每张专辑?目前我正在通过 MediaStore.Audio.Media 进行详尽搜索来搜索艺术家并将每张专辑记录在 HashMap 中,但这似乎既错误又低效。有没有更高效的直接使用 ContentProvider 的方法?

最佳答案

这不是你想做的事我认为你想做的事。如果是这样,你可以通过点击媒体表(Media.EXTERNAL_CONTENT_URI ) 对于在您的 where 子句中具有 Media.ARTIST_ID 的不同 Media.ALBUM。这适用于任何 Android 版本。

但是...如果您想与专辑艺术家合作...

在 2.3.3 之前,Album Artist MP3 标签被忽略并且不在媒体商店架构中。它现在就在那里——例如,CyanogenMod 就有——但它还没有被记录下来。如果您打算发布您的代码,您将需要对其进行测试并解决它是否丢失或将您的代码限制为具有它的 Android 版本。否则,您会被艺术家数据库困住,它代表每首轨道的每个艺术家,如果您正在考虑专辑,这可能不是您所追求的。

这是我的代码中的测试:

Cursor cur = getContentResolver().query(Albums.EXTERNAL_CONTENT_URI, null, null, null, null);
if ((cur.getColumnIndex("album_artist") == -1) || (cur.getColumnIndex("album_artist_id") == -1))
{
showartist = false;
}
else
{
showartist = true;
}

您可以选择不同的 id 以获取专辑艺术家列表,如下所示:

cur = getContentResolver().query(Albums.EXTERNAL_CONTENT_URI, new String[]{"distinct album_artist_id", "album_artist"}, null, null, "album_artist collate nocase");

请注意,由于未记录列且常量不可用,因此您必须自己创建常量或对字符串进行硬编码。您可能可以从那里找出其余部分。

关于Android: 查询 MediaStore.Audio.Artists.Albums,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7095230/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com