从Android Media Store获取album_id

时间:2018-02-22 02:54:29

标签: android mediastore

如果我知道Android设备上MP3文件的路径,我如何获取album_id以便我可以从Media Store开始获取其他值(例如专辑图片)?

有许多关于如何在Stackoverflow上检索Media Store数据的示例,但他们似乎都假设首先知道album_id。

我尝试使用以下内容,但我根本无法获得任何匹配:

Cursor audioCursor = getContentResolver().query(
    MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
    new String[]{"*"},
    MediaStore.Audio.Media.DATA + " = '" + songPath + "'",
    null,
    MediaStore.Audio.Media.TITLE + " ASC" );

示例songPath

"/mnt/extSdCard/MP3/Pain/2002 - Nothing Remains the Same/04-Just Hate Me.mp3"

我测试光标的结果如下:

if( ! audioCursor.moveToFirst() )
{
  MyUtils.LogDebugf( "SEARCH FAILED::no results\n" );
  return;
}

果然,我的搜索失败了。为什么呢?

我使用" Album Art Grabber"添加了相册的图像。来自Playstore。如果我进入手机自己的音乐播放器,我可以看到专辑封面,所以它必须在某处下载艺术品。也许我毕竟不应该使用EXTERNAL_CONTENT_URI?

2 个答案:

答案 0 :(得分:0)

通过这种方式,您可以获取相册ID并从光标对象获取此参数

 MediaStore.Audio.Media.ALBUM_ID
 MediaStore.Audio.Media.ARTIST
 MediaStore.Audio.Media.ARTIST_ID

有关列here

的更多信息

答案 1 :(得分:0)

使用/mnt/extSdCard

搜索失败

添加此行会产生结果:

songPath = songPath.replace( "/mnt/extSdCard/MP3", "/storage/extSdCard/MP3" );