Android开发之多媒体文件获取工具类实例【音频,视频,图片等】

作者:CharlinGod 时间:2022-03-05 22:44:24 

本文实例讲述了Android开发之多媒体文件获取工具类。分享给大家供大家参考,具体如下:


package com.android.ocr.util;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.provider.MediaStore;
/**
* 根据MediaStore查询信息
* @Project  App_ReadCard
* @Package  com.android.ocr.util
* @author   chenlin
* @version  1.0
* @Date    2013年6月16日
* @Note    TODO
*/
public class MediaStoreUtil {
 private static final String TAG = "MediaStoreUtil";
 /**
  * 查询音频文件名称
  *
  * @param context
  * @return
  */
 public static List<String> getAudioNames(Context context) {
   List<String> list = new ArrayList<String>();
   Cursor cursor = context.getContentResolver().query(
       MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
       new String[] { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DISPLAY_NAME, 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, MediaStore.Audio.Media.SIZE,
           MediaStore.Audio.Media.DATA }, null, new String[] {}, null);
   while (cursor.moveToNext()) {
     String fileName = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
     list.add(fileName);
   }
   return list;
 }
 /**
  * 查询图片文件名称
  *
  * @param context
  * @return
  */
 public static List<String> getImageNames(Context context) {
   List<String> list = new ArrayList<String>();
   Cursor cursor = context.getContentResolver().query(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
       new String[] { MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media.TITLE,
           MediaStore.Images.Media.MIME_TYPE, MediaStore.Images.Media.SIZE, MediaStore.Images.Media.DATA }, null,
       new String[] {}, null);
   while (cursor.moveToNext()) {
     Logger.i(TAG, "filePath==" + MediaStore.Images.Media.DATA);
     String filePath = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
     String fileName = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME));
     list.add(filePath + "/" + fileName);
   }
   return list;
 }
 /**
  * 查询图片文件
  *
  * @param context
  * @return
  */
 public static List<File> getImages(Context context) {
   List<File> list = new ArrayList<File>();
   Cursor cursor = context.getContentResolver().query(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
       new String[] { MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media.TITLE,
           MediaStore.Images.Media.MIME_TYPE, MediaStore.Images.Media.SIZE, MediaStore.Images.Media.DATA }, null,
       new String[] {}, null);
   while (cursor.moveToNext()) {
     String filePath = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
     Logger.i(TAG, "filePath==" + filePath);
     String fileName = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME));
     //Logger.i(TAG, "fileName==" + fileName);
     File file = new File(filePath);
     list.add(file);
   }
   return list;
 }
 /**
  * 查询文件
  *
  * @param context
  * @return
  */
 public static List<File> getAllFiles(Context context) {
   List<File> list = new ArrayList<File>();
   Cursor cursor = context.getContentResolver().query(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
       new String[] { MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media.TITLE,
           MediaStore.Images.Media.MIME_TYPE, MediaStore.Images.Media.SIZE, MediaStore.Images.Media.DATA }, null,
       new String[] {}, null);
   while (cursor.moveToNext()) {
     String filePath = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
     Logger.i(TAG, "filePath==" + filePath);
     String fileName = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME));
     //Logger.i(TAG, "fileName==" + fileName);
     File file = new File(filePath);
     list.add(file);
   }
   return list;
 }
 /**
  * 获取所有的缩列图
  *
  * @param context
  * @return
  */
 public static Bitmap[] getBitmaps(Context context) {
   Bitmap[] bitmaps;
   String[] projection = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA };
   Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null,
       MediaStore.Images.Media._ID);
   int count = cursor.getCount();
   int image_column_index = cursor.getColumnIndex(MediaStore.Images.Media._ID);
   bitmaps = new Bitmap[count];
   for (int i = 0; i < count; i++) {
     cursor.moveToPosition(i);
     int id = cursor.getInt(image_column_index);
     bitmaps[i] = MediaStore.Images.Thumbnails.getThumbnail(context.getContentResolver(), id,
         MediaStore.Images.Thumbnails.MICRO_KIND, null);
   }
   return bitmaps;
 }
 /**
  * 查询图片缩列文件名称
  *
  * @param context
  * @return
  */
 public static List<String> getThumbNames(Context context) {
   List<String> list = new ArrayList<String>();
   Cursor cursor = context.getContentResolver().query(
       MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
       new String[] { MediaStore.Images.Thumbnails._ID, MediaStore.Images.Thumbnails.DATA, MediaStore.Images.Thumbnails.KIND,
           MediaStore.Images.Thumbnails.IMAGE_ID }, null, new String[] {}, null);
   while (cursor.moveToNext()) {
     String fileName = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME));
     list.add(fileName);
   }
   return list;
 }
 /**
  * 获得所有视频文件
  * @param context
  */
 public static ArrayList<VideoInfo> getVideoInfo(Context context){
   String[] thumbColumns = new String[]{
       MediaStore.Video.Thumbnails.DATA,
       MediaStore.Video.Thumbnails.VIDEO_ID
   };
   String[] mediaColumns = new String[]{
       MediaStore.Video.Media.DATA,
       MediaStore.Video.Media._ID,
       MediaStore.Video.Media.TITLE,
       MediaStore.Video.Media.MIME_TYPE
   };
   //首先检索SDcard上所有的video
   Cursor cursor = context.getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, mediaColumns, null, null, null);
   ArrayList<VideoInfo> videoList = new ArrayList<VideoInfo>();
   if(cursor.moveToFirst()){
     do{
       VideoInfo info = new VideoInfo();
       info.filePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));
       info.mimeType = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE));
       info.title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE));
       //获取当前Video对应的Id,然后根据该ID获取其Thumb
       int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID));
       String selection = MediaStore.Video.Thumbnails.VIDEO_ID +"=?";
       String[] selectionArgs = new String[]{
           id+""
       };
       Cursor thumbCursor = context.getContentResolver().query(MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI, thumbColumns, selection, selectionArgs, null);
       if(thumbCursor.moveToFirst()){
         info.thumbPath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Thumbnails.DATA));
       }
       //然后将其加入到videoList
       videoList.add(info);
     }while(cursor.moveToNext());
   }
   return videoList;
 }
 static class VideoInfo{
   String filePath;
   String mimeType;
   String thumbPath;
   String title;
 }
}

希望本文所述对大家Android程序设计有所帮助。

来源:http://blog.csdn.net/lovoo/article/details/51704560

标签:Android,多媒体,工具类
0
投稿

猜你喜欢

  • 基于ThreadLocal 的用法及内存泄露(内存溢出)

    2023-11-23 20:22:28
  • Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)

    2023-11-27 11:02:17
  • 详解C#中的System.Timers.Timer定时器的使用和定时自动清理内存应用

    2022-11-07 14:09:54
  • Java lombok中@Accessors注解三个属性的作用

    2022-04-20 14:32:27
  • 基于Java的guava开源库工具类

    2022-04-07 05:37:53
  • Java 从互联网上爬邮箱代码示例

    2022-02-27 16:40:57
  • springboot配置文件绑定实现解析

    2022-06-07 23:32:38
  • java基础之注解示例详解

    2022-05-08 23:47:20
  • 一文精通Java中的volatile关键字

    2023-11-24 04:17:14
  • Redisson公平锁的源码解读分享

    2022-12-13 01:20:40
  • Java类加载器ClassLoader用法解析

    2023-05-05 21:46:38
  • JAVA读取属性文件的几种方法总结

    2023-10-21 04:36:40
  • C# yield关键字详解

    2021-08-01 13:06:06
  • Java中的Object.getClass()方法解析

    2022-05-06 18:54:48
  • Unity实现菜品识别的示例代码

    2023-06-11 22:16:10
  • C# web.config之<customErrors>节点说明案例详解

    2023-07-06 20:20:15
  • Java排序算法总结之希尔排序

    2022-07-16 13:19:11
  • SpringMVC按Ctrl上传多个文件的方法

    2023-11-25 07:19:04
  • Java中过滤器 (Filter) 和 拦截器 (Interceptor)的使用

    2023-07-07 00:20:28
  • C语言数据结构之二叉树的非递归后序遍历算法

    2021-12-23 07:10:52
  • asp之家 软件编程 m.aspxhome.com