zoukankan      html  css  js  c++  java
  • 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:    zhb931706659@126.com
     *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

  • 相关阅读:
    ORACLE 查看进程数,已执行任务数, 剩余任务数,删除指定任务
    ORACLE 收集统计整个用户数据
    解决Hystrix dashboard Turbine 一直 Loading…… 及其他坑
    利用 Maven 构造 Spring Cloud 微服务架构 模块使用 spring Boot构建
    AES加解密
    JAVA POI XSSFWorkbook导出扩展名为xlsx的Excel,附带weblogic 项目导出Excel文件错误的解决方案
    JAVA 文件的上传下载
    shell启停服务脚本模板
    JAVA 设计模式之 原型模式详解
    JAVA 设计模式之 工厂模式详解
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6805169.html
Copyright © 2011-2022 走看看