建立一个bean来存储音乐信息
public class MediaEntity implements Serializable {
private static final long serialVersionUID = 1L;
public int id; //id标识
public String title; // 显示名称
public String display_name; // 文件名称
public String path; // 音乐文件的路径
public int duration; // 媒体播放总时间
public String albums; // 专辑
public String artist; // 艺术家
public String singer; //歌手
public long size;
}通过ContentResolver获取音乐列表
public static List<MediaEntity> getAllMediaList(Context context, String selection) {
Cursor cursor = null;
List<MediaEntity> mediaList = new ArrayList<MediaEntity>();
try {
cursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] {
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.SIZE},
selection, null, MediaStore.Audio.Media.DATE_ADDED + " DESC");
if(cursor == null) {
Log.d(TAG, "The getMediaList cursor is null.");
return mediaList;
}
int count= cursor.getCount();
if(count <= 0) {
Log.d(TAG, "The getMediaList cursor count is 0.");
return mediaList;
}
mediaList = new ArrayList<MediaEntity>();
MediaEntity mediaEntity = null;
// String[] columns = cursor.getColumnNames();
while (cursor.moveToNext()) {
mediaEntity = new MediaEntity();
mediaEntity.id = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media._ID));
mediaEntity.title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
mediaEntity.display_name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
mediaEntity.duration = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
mediaEntity.size = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE));
mediaEntity.durationStr = longToStrTime(mediaEntity.duration);
if(!checkIsMusic(mediaEntity.duration, mediaEntity.size)) {
continue;
}
mediaEntity.artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
mediaEntity.path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
mediaList.add(mediaEntity);
}
} catch (Exception e) {
} finally {
if(cursor != null) {
cursor.close();
}
}
return mediaList;
} /**
* 根据时间和大小,来判断所筛选的media 是否为音乐文件,具体规则为筛选小于30秒和1m一下的
*/
public static boolean checkIsMusic(int time, long size) {
if(time <= 0 || size <= 0) {
return false;
}
time /= 1000;
int minute = time / 60;
// int hour = minute / 60;
int second = time % 60;
minute %= 60;
if(minute <= 0 && second <= 30) {
return false;
}
if(size <= 1024 * 1024){
return false;
}
return true;
}检查sd卡上的媒体文件
private void scanSdCard(){
sendBroadcast(new Intent(/*Intent.ACTION_MEDIA_SCANNER_SCAN_FILE*/Intent.ACTION_MEDIA_MOUNTED,Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath())));
}
本文介绍了如何在Android平台上搜索并获取本地媒体库中的音乐文件信息,通过创建一个Bean来存储音乐的相关元数据。

271

被折叠的 条评论
为什么被折叠?



