android搜索本地媒体库中的音乐文件

来源:互联网 发布:mysql修改表字段语句 编辑:程序博客网 时间:2024/05/20 09:09

建立一个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())));      }


0 0