从 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" );
如果我知道 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" );