歌曲的专辑艺术在android中显示不正确

时间:2017-01-21 14:48:18

标签: android android-studio android-mediaplayer android-cursor android-music-player

这是我从本地存储中获取歌曲的光标:

var request =  require("request");
var auth = "Basic " + new Buffer("root" + ":" + "root").toString("base64")

request(
        {
            url : encodeURI('http://localhost:2480/query/tech_graph/sql/'+queryInput+'/20'),
            headers : {
                "Authorization" : auth
            }
        },
        function (error, response, body) {
            console.log(body);
            return body;
        }
    );

我使用下面显示的另一个光标显示相册,因为我无法使用相同的光标执行此操作:

cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,MediaStore.Audio.AudioColumns.DURATION+">0", null, sortOrder);

我正在显示这样的相册,但它没有正确显示:

ContentResolver musicResolve = getContentResolver();
Uri smusicUri = android.provider.MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI;    
Cursor musicCursorTogetAlbum =musicResolve.query(smusicUri,null, null, null, null);

musicCursorTogetAlbum.moveToFirst(); musicCursorTogetAlbum.move(cursorPosition); int x = musicCursorTogetAlbum.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART); int id_albumCursor = musicCursorTogetAlbum.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID); String thisArt = musicCursorTogetAlbum.getString(x); Bitmap bm = BitmapFactory.decodeFile(thisArt); Bitmap bm_temp = BitmapFactory.decodeFile(thisArt); Drawable dr = new BitmapDrawable(getResources(), bm); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { iv_album_art.setImageBitmap(bm); } 是int类型变量,它给出了cursorPosition的光标位置,用于从本地存储中获取歌曲。

1 个答案:

答案 0 :(得分:0)

您可以使用此方法获取歌曲的专辑封面:

`

public static Bitmap getAlbumart(Context context, Long album_id){
    Bitmap bm = null;
    BitmapFactory.Options options = new BitmapFactory.Options();
    try{
          final Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
          Uri uri = ContentUris.withAppendedId(sArtworkUri, album_id);
          ParcelFileDescriptor pfd = context.getContentResolver().openFileDescriptor(uri, "r");
          if (pfd != null){
              FileDescriptor fd = pfd.getFileDescriptor();
              bm = BitmapFactory.decodeFileDescriptor(fd, null, options);
              pfd = null;
              fd = null;
          }
      } catch(Error ee){}
      catch (Exception e) {}
      return bm;
    }

`

相关问题