利用ContentProvider获得本设备上所有的音/视频文件信息

来源:互联网 发布:远程软件哪个好用mac 编辑:程序博客网 时间:2024/05/20 23:59

利用ContentProvider获得本设备上所有的音/频文件信息

 

  

ArrayList<Song> songs = null;

 

Cursor cursor = context.getContentResolver().query(

MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,  // 第一个参数:指定是去媒体库取数据

new String[] {

MediaStore.Audio.Media._ID,   // 歌曲编号

MediaStore.Audio.Media.DISPLAY_NAME,  // 文件名,如:2034783742837.mp3

MediaStore.Audio.Media.TITLE,    // 歌曲名,如:双节棍

MediaStore.Audio.Media.DURATION,  // 歌曲播放的时长

MediaStore.Audio.Media.ARTIST,    // 艺术家(唱歌的人/弹奏的人)

MediaStore.Audio.Media.ALBUM,     // 专辑

MediaStore.Audio.Media.YEAR,      // 年份

MediaStore.Audio.Media.MIME_TYPE, // 歌曲类型,如mp3wmarm之类

MediaStore.Audio.Media.SIZE,      // 占多大的空间,如3.14M

MediaStore.Audio.Media.DATA       // 文件的存放路径

},   // 第二个参数:指定取哪些列

null,  // 查询的过滤条件

null,  // 查询的过滤条件

null);

 

songs = new ArrayList<Song>();

 

if (cursor.moveToFirst()) {

 

Song song = null;

 

do {

song = new Song();

// 文件名

song.setFileName(cursor.getString(1));

// 歌曲名

song.setTitle(cursor.getString(2));

// 时长

song.setDuration(cursor.getInt(3));

// 歌手名

song.setSinger(cursor.getString(4));

// 专辑名

song.setAlbum(cursor.getString(5));

// 年代

if (cursor.getString(6) != null) {

song.setYear(cursor.getString(6));

} else {

song.setYear("未知");

}

// 歌曲格式

if ("audio/mpeg".equals(cursor.getString(7).trim())) {

song.setType("mp3");

} else if ("audio/x-ms-wma".equals(cursor.getString(7).trim())) {

song.setType("wma");

}

// 文件大小

if (cursor.getString(8) != null) {

float size = cursor.getInt(8) / 1024f / 1024f;

song.setSize((size + "").substring(0, 4) + "M");

} else {

song.setSize("未知");

}

// 文件路径

if (cursor.getString(9) != null) {

song.setFileUrl(cursor.getString(9));

}

songs.add(song);

} while (cursor.moveToNext());

 

cursor.close();

 

}  

0 0
原创粉丝点击