ContentResolver如何获取本地媒体文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ContentResolver如何获取本地媒体⽂件
⼀本地媒体⽂件的URI:
Android系统的ContentProvider提供的媒体⽂件信息都在"android.provider.MediaStore"类中
android.provider.MediaStore:该类封装了Audio,Files, Images, Video等媒体⽂件的URI信息和数据表结构信息
"红⾊"----表⽰媒体⽂件的类别 "黄⾊"----表⽰对应媒体⽂件操作的数据表
所有⾳乐⽂件的URI:MediaStore.Audio.Media.EXTERNAL_CONTENT_URI 实际值为:content://media/external/audio/media ⾳乐⽂件对应专辑(Albums)URI : MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI 实际值
为:content://media/external/audio/albums
⼆通过ContentResolver获取所⽤⾳乐⽂件
1public class LocalMusicUtil {
2
3private static final String TAG = LocalMusicUtil.class.getSimpleName();
4/**
5 * 获取本地所有的⾳乐⽂件
6*/
7//表⽰操作的表 Uri.parse("content://media/external/audio/media");
8private static Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
9//表⽰要获取的字段
10private static String[] projection = new String[]{
11 String.valueOf(Media._ID),
12 Media.TITLE,
13 Media.ALBUM,
14 Media.ALBUM_ID,
15 Media.ARTIST,
16 Media.DURATION,
17 Media.DATA};
18//表⽰where ⼦句
19private static String selection = "mime_type in ('audio/mpeg','audio/x-ms-wma') and is_music>0 ";
20//表⽰排序字段
21private static String sortOrder = Media.DEFAULT_SORT_ORDER;
22
23public static ArrayList<Music> getLocalMusics(){
24 ArrayList<Music> musicList = new ArrayList<Music>();
25 ContentResolver content = MyApp.appContext.getContentResolver();
26 Cursor cursor = content.query(uri, projection, selection, null, sortOrder);
27if(cursor==null){
28 Log.v(TAG, "Music corsor==null");
29 }else if(!cursor.moveToFirst()){
30 Log.v(TAG, "Music corsor.moveToForst() is false");
31 }else{
32int idCol = cursor.getColumnIndex(Media._ID);
33int titleCol = cursor.getColumnIndex(Media.TITLE);
34int albumCol = cursor.getColumnIndex(Media.ALBUM);
35int albumIdCol = cursor.getColumnIndex(Media.ALBUM_ID);
36int artistCol = cursor.getColumnIndex(Media.ARTIST);
37int durationCol = cursor.getColumnIndex(Media.DURATION);
38int dataCol = cursor.getColumnIndex(Media.DATA);
39do{
40int id = cursor.getInt(idCol);
41 String title = cursor.getString(titleCol);
42 String album = cursor.getString(albumCol);
43 String albumImage = getAlbumImage(cursor.getString(albumIdCol));
44 String artist = cursor.getString(artistCol);
45int duration = cursor.getInt(durationCol);
46 String data = cursor.getString(dataCol);
47
48 Music music = new Music();
49 music.setId(id);
50 music.setTitle(title);
51 music.setAlbum(album);
52 music.setAlbumImage(albumImage);
53 music.setArtist(artist);
54 music.setDuration(duration);
55 music.setData(data);
56 musicList.add(music);
57
58 }while(cursor.moveToNext());
59 }
60 cursor.close();
61return musicList.size()==0?null:musicList;
62 }
63
64/**
65 * 通过专辑名id(albumId)获取专辑的图⽚地址
66*/
67
68public static String getAlbumImage(String albumId){
69 String albumImage = "";
70 Cursor cursor = null;
71try {
72 cursor = MyApp.appContext.getContentResolver().query(
73 Uri.parse(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI+"/"+albumId), 74new String[] { "album_art" },
75null, null, null);
76for (cursor.moveToFirst(); !cursor.isAfterLast();) {
77 albumImage = cursor.getString(0);
78break;
79 }
80 } catch (Exception e) {
81 e.printStackTrace();
82 } finally {
83if (null != cursor) {
84 cursor.close();
85 }
86 }
87return albumImage;
88 }
89 }。