ContentProvider之通过ContentResolver获取图像视频音频举例
Posted yutingliuyl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ContentProvider之通过ContentResolver获取图像视频音频举例相关的知识,希望对你有一定的参考价值。
MediaStore中定义了一系列的数据表格,通过ContentResolver提供的查询接口,我们能够得到各种须要的媒体信息。
通过下面两个URI能够扫描设备外部和内部的媒体文件。
android系统提供了MediaProvider,MediaStore,MediaScanner接口,通过Content Provider的方式提供给用户。
下面是一个简单的样例:(注意。项目使用AndroidAnnotation框架)
package com.example.testaa; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.Click; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.ViewById; import android.app.Activity; import android.database.Cursor; import android.net.Uri; import android.provider.MediaStore; import android.widget.Button; import android.widget.TextView; /* *@author: ZhengHaibo *web: http://blog.csdn.net/nuptboyzhb *mail: [email protected] *2014-4-15 Nanjing,njupt,China */ @EActivity(R.layout.activity_main) public class MainActivity extends Activity { @ViewById Button getImage; @ViewById Button getVideo; @ViewById Button getAudio; @ViewById TextView myTextView; /** * 载入完View之后进行的处理 */ @AfterViews void afterViewProcess() { } /** * 获取图像列表 */ @Click void getImage() { String[] projection = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media.DATA }; String orderBy = MediaStore.Images.Media.DISPLAY_NAME; Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; getContentProvider(uri,projection, orderBy); } /** * 获取视频列表 */ @Click void getVideo() { // TODO Auto-generated method stub String []projection = { MediaStore.Video.Media._ID, MediaStore.Video.Media.DISPLAY_NAME, MediaStore.Video.Media.DATA}; String orderBy = MediaStore.Video.Media.DISPLAY_NAME; Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; getContentProvider(uri,projection, orderBy); } /** * 获取音频列表 */ @Click void getAudio() { String []projection = { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.SIZE}; String orderBy = MediaStore.Audio.Media.DISPLAY_NAME; Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; getContentProvider(uri,projection, orderBy); } /** * 获取ContentProvider * @param projection * @param orderBy */ public void getContentProvider(Uri uri,String[] projection, String orderBy) { // TODO Auto-generated method stub List<HashMap<String, String>> listImage = new ArrayList<HashMap<String, String>>(); Cursor cursor = getContentResolver().query(uri, projection, null, null, orderBy); if (null == cursor) { return; } while (cursor.moveToNext()) { HashMap<String, String> map = new HashMap<String, String>(); for(int i=0;i<projection.length;i++){ map.put(projection[i], cursor.getString(i)); System.out.println(projection[i]+":"+cursor.getString(i)); } listImage.add(map); } myTextView.setText(listImage.toString()); } }
项目下载地址:http://download.csdn.net/detail/nuptboyzhb/7220227
扩展阅读:
【1】http://blog.csdn.net/gaomatrix/article/details/6216880
【2】http://developer.android.com/reference/android/content/ContentProvider.html
以上是关于ContentProvider之通过ContentResolver获取图像视频音频举例的主要内容,如果未能解决你的问题,请参考以下文章
ContentProvider之通过ContentResolver获取图像视频音频举例
ContentProvider之通过ContentResolver获取图像视频音频举例
入职小白随笔之Android四大组件——内容提供器详解(Content Provider)