我已经花了很多年的时间寻找这个,现在我正处于我无法寻求帮助的地步。 我正在尝试在我正在使用的媒体播放器中显示专辑封面。我几乎所有其他功能齐全,包括其他元数据,播放专辑(与个别曲目相对)等。 我的代码目前如下:
public View getView(int position, View convertView, ViewGroup parent) {
System.gc();
View cellLayout = getLayoutInflater().inflate(R.layout.albumbrowsercell, null);
ImageView album_art = (ImageView) cellLayout.findViewById(R.id.albums_album_cover);
TextView album_title = (TextView) cellLayout.findViewById(R.id.albums_album_title);
TextView artist_title = (TextView) cellLayout.findViewById(R.id.albums_artist_title);
String albumName;
String artistName;
int albumID;
album_column_index = albumCursor.getColumnIndexOrThrow(MediaStore.Audio.Albums._ID);
albumCursor.moveToPosition(position);
albumID = albumCursor.getInt(album_column_index);
Uri sArtworkUri = Uri.parse(MediaStore.Audio.Albums.ALBUM_ART);
Uri uri = ContentUris.withAppendedId(sArtworkUri, albumID);
album_art.setImageURI(uri);
//code to do set text above etc.
return cellLayout;
Logcat提供类似于此的错误: I / System.out(12781):在坏位图uri上的resolveUri失败:album_art / 224 因此问题似乎是附加ID。我不知道怎么称呼它(我甚至使用随机数来看看我是否可以打一个)。
我可能犯了一个根本性的错误。到目前为止,我花费的大部分时间都花在学习如何与内容提供商等合作上,而且我对它们仍然没有50%的肯定(之前从未完成数据库或Android)。
此外,它是仅仅是我还是Android文档,至少关于这个主题,非常垃圾?
答案 0 :(得分:3)
ALBUM_ART是列名,而不是内容URI。您需要查询相册并获取名为ALBUM_ART的列。这可能会给你一个ImageStore的URI(dunno,我自己没试过)。
顺便说一下,关于ABLUM_ART列有an open bug,但我建议您先尝试一下 - 抓住ALBUM_ART列并查看其中的内容。
示例代码(请注意,这不是我的头脑,所以可能是错误的):
Cursor cursor = getContentResolver().query(
ContentUris.withAppendedId(
MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, albumId),
new String[] { MediaStore.Audio.AlbumColumns.ALBUM_ART },
null,
null,
null);
if (cursor.moveToFirst()) {
String albumArtUri = cursor.getString(0);
}
cursor.close();
再一次,不保证这是有效的,我从来没有使用过媒体商店,而且我编写了这段代码而却无法测试它。
答案 1 :(得分:0)
这对我有用..
Cursor cursorAlbum = managedQuery(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
new String[]{MediaStore.Audio.Albums._ID, MediaStore.Audio.Albums.ALBUM_ART},MediaStore.Audio.Albums._ID+ "=" + album_id, null, null);
if(cursorAlbum != null && cursorAlbum.moveToFirst()){
String uri = cursorAlbum.getString(cursorAlbum.getColumnIndex("album_art"));
cursorAlbum.close();
if(uri != null )
{
//Log.i("albumUri", uri);
wrapper.image.setImageURI(Uri.parse(uri));
}
}