2010-08-09 3 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가 없으므로 앨범 ID 만 가지고 있으므로 도움이되지 않는다고 생각합니다.

+0

안녕하세요, URI를 비트 맵으로 변경하는 데 문제가 있습니다. 코드를 알려주시겠습니까? –

답변

4

각 앨범 아트를 가져 와서 Bitmap.createScaledBitmap()을 사용하여 새 버전을 만들고,이를 사용하여 이전 비트 맵을 recycle()하여 메모리를 없애고 다음 이미지로 이동하십시오. HashMap 또는 같은 앨범 아트를 두 번 이상로드하지 않도록하십시오 (두 개 이상의 트랙이 동일한 앨범 아트 ID를가지고 캐시합니다.)

잘 작동 할 것입니다. (저의 작품)

+0

이것은 내가 취한 접근 이었지만 앨범 아트에도 URI가 있다고 생각합니다 : content : // media/external/audio/albumart_thumb 실제로 URI 콘텐츠 : // media/external/audio/albumart에 비트 맵을 쓰는 데 어려움이 있습니다.이 코드를 사용하면 FileNotFoundExceptions이 표시됩니다. Uri artworkUri = Uri.parse (" content : // media/external/audio/albumart "); Uri uri = ContentUris.withAppendedId (artworkUri, album.getId()); OutputStream outStream = getContentResolver(). openOutputStream (uri); bmp.compress (Bitmap.CompressFormat.JPEG, 50, outStream); – timothyjc

+2

오 - 여기에서 작곡 앨범 아트 부분을 알아 냈습니다 : http://www.netmite.com/android/mydroid/packages/apps/Music/src/com/android/music/MusicUtils.java – timothyjc

+0

안녕하세요 저는 또한 URI를 비트 맵으로 변경하는 중 문제가 있습니다. 코드를 알려주세요. –

관련 문제