java获取专辑封面_android获取音乐文件的内置专辑图片实现思路及代码

代码和注释如下:

private Cursor getCursor(String filePath) {

String path = null;

Cursor c = getContentResolver().query(

MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,

MediaStore.Audio.Media.DEFAULT_SORT_ORDER);

// System.out.println(c.getString(c.getColumnIndex("_data")));

if (c.moveToFirst()) {

do {

// 通过Cursor 获取路径,如果路径相同则break;

System.out.println(""+filePath);

path = c.getString(c

.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));

System.out.println("?????????"+path);

// 查找到相同的路径则返回,此时cursorPosition 便是指向路径所指向的Cursor 便可以返回了

if (path.equals(filePath)) {

// System.out.println("audioPath = " + path);

// System.out.println("filePath = " + filePath);

// cursorPosition = c.getPosition();

break;

}

} while (c.moveToNext());

}

// 这两个没有什么作用,调试的时候用

// String audioPath = c.getString(c

// .getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));

//

// System.out.println("audioPath = " + audioPath);

return c;

}

private String getAlbumArt(int album_id) {

String mUriAlbums = "content://media/external/audio/albums";

String[] projection = new String[] { "album_art" };

Cursor cur = this.getContentResolver().query(

Uri.parse(mUriAlbums + "/" + Integer.toString(album_id)),

projection, null, null, null);

String album_art = null;

if (cur.getCount() > 0 && cur.getColumnCount() > 0) {

cur.moveToNext();

album_art = cur.getString(0);

}

cur.close();

cur = null;

return album_art;

}

private void getImage(){

Cursor currentCursor = getCursor("/mnt/sdcard/"+mp3Info);

int album_id = currentCursor.getInt(currentCursor

.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID));

String albumArt = getAlbumArt(album_id);

Bitmap bm = null;

if (albumArt == null) {

mImageView.setBackgroundResource(R.drawable.staring);

} else {

bm = BitmapFactory.decodeFile(albumArt);

BitmapDrawable bmpDraw = new BitmapDrawable(bm);

mImageView.setImageDrawable(bmpDraw);

}

}


版权声明:本文为weixin_29000891原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。