0

這裏正確的是我的光標由我爲從本地存儲獲得歌曲:專輯封面的歌曲沒有顯示在Android的

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); 
    } 

cursorPosition是int型變量,它給出了我用來從本地存儲獲取歌曲的光標位置cursor

回答

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; 
    } 

`

+0

您的解決方案是正確的@ nipun.birla。謝謝。 – Pedo

+0

不客氣! :) 如果您可以將答案標記爲有用,將不勝感激。(^ arrow) –

相關問題