2010-08-09 51 views
1

我的專輯列表,我用了這個:如何在Android中獲取相冊縮略圖?

private List<Album> getAlbums() { 
Cursor cur = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null); 
    List<Album> albums = new ArrayList<Album>(); 

    if (cur.moveToFirst()) { 
    do { 
    int albumIdIndex = cur.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID); 
    int albumIndex = cur.getColumnIndex(MediaStore.Audio.Media.ALBUM); 
    int artistIndex = cur.getColumnIndex(MediaStore.Audio.Media.ARTIST); 
    int albumId = cur.getInt(albumIdIndex); 
    String name = cur.getString(albumIndex); 
    String artist = cur.getString(artistIndex); 
    LogUtil.i(TAG, "albumid= " + albumId + ", album= " + name + ", artist=" + artist); 

    Album album = new Album(albumId, name, artist); 
    if (!albums.contains(album)) { 
    albums.add(album); 
    }  
    } while (cur.moveToNext()); 

    } 

    return albums; 
} 

我用一個ListActivity專輯的這份名單中,但我也想拿到專輯的縮略圖。

我知道我可以使用下面的代碼,以獲得實際的作品,但我需要的縮略圖,因爲我得到的內存,如果我使用完整的圖像列表活動:

Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart"); 
Uri uri = ContentUris.withAppendedId(sArtworkUri, album_id); 

我看到這個發佈: Android media thumbnails. Serious issues? 但我沒有imageId,只有albumid,所以我不認爲它有幫助。

+0

嘿,我也無法將URI更改爲位圖..可以告訴代碼嗎? – 2013-11-20 18:26:52

回答

4

獲取每個專輯封面,使用Bitmap.createScaledBitmap()創建它的新版本,使用它,recycle()舊位圖使內存消失,移動到下一張圖像。保留一個HashMap或其他東西,以確保您不會加載相同的專輯藝術兩次或更多(多個曲目將具有相同的專輯藝術ID,緩存它。

應該工作得很好。(適用於我)

+0

這是我採用的方法,但我認爲專輯封面也有一個URI:content:// media/external/audio/albumart_thumb。 我實際上在寫Bitmaps到URI內容:// media/external/audio/albumart此刻我得到FileNotFoundExceptions當我使用此代碼時: Uri artworkUri = Uri.parse(「內容:// media/external/audio/albumart「); Uri uri = ContentUris.withAppendedId(artworkUri,album.getId()); OutputStream outStream = getContentResolver()。openOutputStream(uri); bmp.compress(Bitmap.CompressFormat.JPEG,50,outStream); – timothyjc 2010-08-10 13:21:42

+2

哦 - 我想出了從這裏寫的albumart部分:http://www.netmite.com/android/mydroid/packages/apps/Music/src/com/android/music/MusicUtils.java – timothyjc 2010-08-10 15:06:33

+0

嘿,我也有麻煩改變URI位圖..你可以告訴代碼嗎? – 2013-11-20 18:26:08