从 Android 媒体商店获取 album_id

Get album_id from Android Media Store

如果我知道 Android 设备上 MP3 文件的路径,我怎样才能获得 album_id 以便我可以开始从媒体获取其他值(例如专辑插图)商店?

有很多关于如何在 Whosebug 上检索媒体存储数据的示例,但它们似乎都假定 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 为相册添加了图片。如果我进入 phone 自己的音乐播放器,我可以看到专辑插图,所以它一定是在某处下载了插图。也许我根本不应该使用 EXTERNAL_CONTENT_URI??

这样你就可以得到相册id并从cursor对象这个参数中得到它

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

有关列的更多信息 here

使用 /mnt/extSdCard

搜索将失败

添加此行会产生结果:

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