正在从音频文件Uri中获取相册艺术



我正试图从音频文件Uri中获取相册艺术,这是我的代码:

// uri is the audio file uri
public static Bitmap getSongCoverArt(Context context, Uri uri){
    Bitmap songCoverArt = null;
    String[] projections = {MediaStore.Audio.Media.ALBUM_ID};
    Cursor cursor = null;
    try {
        cursor = context.getContentResolver().query(uri, projections, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID);
        cursor.moveToFirst();
        Uri songCover = Uri.parse("content://media/external/audio/albumart");
        Uri uriSongCover = ContentUris.withAppendedId(songCover, column_index);
        Log.d(TAG, uriSongCover.toString());
        ContentResolver res = context.getContentResolver();
        try {
            InputStream in = res.openInputStream(uriSongCover);
            songCoverArt = BitmapFactory.decodeStream(in);
        }catch (FileNotFoundException e){
            Log.e(TAG, e.getMessage());
        }
    }finally {
        if(cursor != null){
            cursor.close();
        }
    }
    return songCoverArt;
}

此函数总是返回"No entry forcontent://media/external/audio/albumart/0"

我认为您的问题在于appendId

   Uri songCover = Uri.parse("content://media/external/audio/albumart");
    Uri uriSongCover = ContentUris.withAppendedId(songCover, column_index)

将column_index替换为相册的Long_id,而不是id为0的列索引。

 album_id = c.getLong(c.getColumnIndex(MediaStore.Audio.Albums._ID));

其中c是我的光标

相关内容

  • 没有找到相关文章

最新更新