ContentProvider之通过ContentResolver获取图像、视频、音频举例

来源:互联网 发布:韩国lte是什么网络 编辑:程序博客网 时间:2024/05/16 12:36

MediaStore中定义了一系列的数据表格,通过ContentResolver提供的查询接口,我们可以得到各种需要的媒体信息。通过以下两个URI可以扫描设备外部和内部的媒体文件。Android系统提供了MediaProvider,MediaStore,MediaScanner接口,通过Content Provider的方式提供给用户。以下是一个简单的例子:(注意,项目使用AndroidAnnotation框架)

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. package com.example.testaa;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6.   
  7. import org.androidannotations.annotations.AfterViews;  
  8. import org.androidannotations.annotations.Click;  
  9. import org.androidannotations.annotations.EActivity;  
  10. import org.androidannotations.annotations.ViewById;  
  11.   
  12. import android.app.Activity;  
  13. import android.database.Cursor;  
  14. import android.net.Uri;  
  15. import android.provider.MediaStore;  
  16. import android.widget.Button;  
  17. import android.widget.TextView;  
  18. /* 
  19.  *@author: ZhengHaibo   
  20.  *web:     http://blog.csdn.net/nuptboyzhb 
  21.  *mail:    zhb931706659@126.com 
  22.  *2014-4-15  Nanjing,njupt,China 
  23.  */  
  24. @EActivity(R.layout.activity_main)  
  25. public class MainActivity extends Activity {  
  26.   
  27.     @ViewById  
  28.     Button getImage;  
  29.   
  30.     @ViewById  
  31.     Button getVideo;  
  32.   
  33.     @ViewById  
  34.     Button getAudio;  
  35.   
  36.     @ViewById  
  37.     TextView myTextView;  
  38.   
  39.     /** 
  40.      * 加载完View之后进行的处理 
  41.      */  
  42.     @AfterViews  
  43.     void afterViewProcess() {  
  44.   
  45.     }  
  46.   
  47.     /** 
  48.      * 获取图像列表 
  49.      */  
  50.     @Click  
  51.     void getImage() {  
  52.         String[] projection = { MediaStore.Images.Media._ID,  
  53.                 MediaStore.Images.Media.DISPLAY_NAME,  
  54.                 MediaStore.Images.Media.DATA };  
  55.         String orderBy = MediaStore.Images.Media.DISPLAY_NAME;  
  56.         Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;  
  57.         getContentProvider(uri,projection, orderBy);  
  58.     }  
  59.   
  60.     /** 
  61.      * 获取视频列表 
  62.      */  
  63.     @Click  
  64.     void getVideo() {  
  65.         // TODO Auto-generated method stub  
  66.          String []projection = { MediaStore.Video.Media._ID,    
  67.                  MediaStore.Video.Media.DISPLAY_NAME,    
  68.                  MediaStore.Video.Media.DATA};   
  69.         String orderBy = MediaStore.Video.Media.DISPLAY_NAME;  
  70.         Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;  
  71.         getContentProvider(uri,projection, orderBy);  
  72.     }  
  73.   
  74.     /** 
  75.      * 获取音频列表 
  76.      */  
  77.     @Click  
  78.     void getAudio() {  
  79.         String []projection = { MediaStore.Audio.Media._ID,    
  80.                 MediaStore.Audio.Media.DISPLAY_NAME,    
  81.                 MediaStore.Audio.Media.DATA,    
  82.                 MediaStore.Audio.Media.SIZE};   
  83.         String orderBy = MediaStore.Audio.Media.DISPLAY_NAME;  
  84.         Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;  
  85.         getContentProvider(uri,projection, orderBy);  
  86.     }  
  87.       
  88.     /** 
  89.      * 获取ContentProvider 
  90.      * @param projection 
  91.      * @param orderBy 
  92.      */  
  93.     public void getContentProvider(Uri uri,String[] projection, String orderBy) {  
  94.         // TODO Auto-generated method stub  
  95.         List<HashMap<String, String>> listImage = new ArrayList<HashMap<String, String>>();  
  96.         Cursor cursor = getContentResolver().query(uri, projection, null,  
  97.                 null, orderBy);  
  98.         if (null == cursor) {  
  99.             return;  
  100.         }  
  101.         while (cursor.moveToNext()) {  
  102.             HashMap<String, String> map = new HashMap<String, String>();  
  103.             for(int i=0;i<projection.length;i++){  
  104.                 map.put(projection[i], cursor.getString(i));  
  105.                 System.out.println(projection[i]+":"+cursor.getString(i));  
  106.             }  
  107.             listImage.add(map);  
  108.         }  
  109.         myTextView.setText(listImage.toString());  
  110.     }  
  111.   
  112. }  

项目下载地址: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

0 0