Cursor cursor = context.getContentResolver().query(Media.EXTERNAL_CONTENT_URI, columns, null, null, null)
Log.e("cursor" , (cursor==null) + "")
while(cursor.moveToNext()) {
// 查找封面图片
long albumId = cursor.getLong(5)
// 读取专辑图片
String album_uri = "content://media/external/audio/albumart"// 专辑Uri对应的字符串
Uri albumUri = ContentUris.withAppendedId(Uri.parse(album_uri), albumId)
// 取图片 ==>得到一个输入流
Bitmap coverPhoto = null
try {
InputStream is = context.getContentResolver().openInputStream(albumUri)
if(null != is) {
coverPhoto = BitmapFactory.decodeStream(is)
}
} catch (Exception e) {
e.printStackTrace()
}
data.add(new Audio(cursor.getLong(0), cursor.getString(1) , cursor.getString(2) , cursor.getLong(3) , cursor.getString(4) , albumId , coverPhoto))
}
cursor.close()
这是抽取专辑图片的方法,扫描歌曲的时候自己把歌曲的id和专辑的id传进去就能获取private static final Uri sArtworkUri = Uri
.parse("content://media/external/audio/albumart")
/**
* 将MP3里图片读取出来
*
* @param context
* @param songid
* @param albumid
* @return
*/
public static Bitmap getMusicBitemp(Context context, long songid,
long albumid) {
Bitmap bm = null
// 专辑id和歌曲id小于0说明没有专辑、歌曲,并抛出异常
if (albumid <0 &&songid <0) {
throw new IllegalArgumentException(
"Must specify an album or a song id")
}
try {
if (albumid <0) {
Uri uri = Uri.parse("content://media/external/audio/media/"
+ songid + "/albumart")
ParcelFileDescriptor pfd = context.getContentResolver()
.openFileDescriptor(uri, "r")
if (pfd != null) {
FileDescriptor fd = pfd.getFileDescriptor()
bm = BitmapFactory.decodeFileDescriptor(fd)
}
} else {
Uri uri = ContentUris.withAppendedId(sArtworkUri, albumid)
ParcelFileDescriptor pfd = context.getContentResolver()
.openFileDescriptor(uri, "r")
if (pfd != null) {
FileDescriptor fd = pfd.getFileDescriptor()
bm = BitmapFactory.decodeFileDescriptor(fd)
} else {
return null
}
}
} catch (FileNotFoundException ex) {
}
return bm
}
另一种:
// 查找sdcard卡上的所有歌曲信息
public List>getMultiData() {
ArrayList>musicList = new ArrayList>()
// 加入封装音乐信息的代码
// 查询所有歌曲
ContentResolver musicResolver = this.getContentResolver()
Cursor musicCursor = musicResolver.query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,
null)
int musicColumnIndex
if (null != musicCursor &&musicCursor.getCount() >0) {
for (musicCursor.moveToFirst()!musicCursor.isAfterLast()musicCursor
.moveToNext()) {
Map musicDataMap = new HashMap()
Random random = new Random()
int musicRating = Math.abs(random.nextInt()) % 10
musicDataMap.put("musicRating", musicRating)
// 取得音乐播放路径
musicColumnIndex = musicCursor
.getColumnIndex(MediaStore.Audio.AudioColumns.DATA)
musicPath = musicCursor.getString(musicColumnIndex)
musicDataMap.put("musicPath", musicPath)
// 取得音乐的名字
musicColumnIndex = musicCursor
.getColumnIndex(MediaStore.Audio.AudioColumns.TITLE)
musicName = musicCursor.getString(musicColumnIndex)
musicDataMap.put("musicName", musicName)
// 取得音乐的专辑名称
musicColumnIndex = musicCursor
.getColumnIndex(MediaStore.Audio.AudioColumns.ALBUM)
musicAlbum = musicCursor.getString(musicColumnIndex)
musicDataMap.put("musicAlbum", musicAlbum)
// 取得音乐的演唱者
musicColumnIndex = musicCursor
.getColumnIndex(MediaStore.Audio.AudioColumns.ARTIST)
musicArtist = musicCursor.getString(musicColumnIndex)
musicDataMap.put("musicArtist", musicArtist)
// 取得歌曲对应的专辑对应的Key
musicColumnIndex = musicCursor
.getColumnIndex(MediaStore.Audio.AudioColumns.ALBUM_KEY)
musicAlbumKey = musicCursor.getString(musicColumnIndex)
String[] argArr = { musicAlbumKey }
ContentResolver albumResolver = this.getContentResolver()
Cursor albumCursor = albumResolver.query(
MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, null,
MediaStore.Audio.AudioColumns.ALBUM_KEY + " = ?",
argArr, null)
if (null != albumCursor &&albumCursor.getCount() >0) {
albumCursor.moveToFirst()
int albumArtIndex = albumCursor
.getColumnIndex(MediaStore.Audio.AlbumColumns.ALBUM_ART)
musicAlbumArtPath = albumCursor.getString(albumArtIndex)
if (null != musicAlbumArtPath
&&!"".equals(musicAlbumArtPath)) {
musicDataMap.put("musicAlbumImage", musicAlbumArtPath)
} else {
musicDataMap.put("musicAlbumImage",
"file:///mnt/sdcard/alb.jpg")
}
} else {
// 没有专辑定义,给默认图片
musicDataMap.put("musicAlbumImage",
"file:///mnt/sdcard/alb.jpg")
}
musicList.add(musicDataMap)
}
}
return musicList
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)