Android开发之多媒体文件获取工具类实例【音频,视频,图片等】
作者:CharlinGod 发布时间:2022-03-05 22:44:24
标签:Android,多媒体,工具类
本文实例讲述了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


猜你喜欢
- 本文实例为大家分享了Java实现通讯录管理系统的具体代码,供大家参考,具体内容如下题目:1、完成一个通讯录,需求:(1)添加联系人(联系人:
- 比如要获取打开摄像头的应用程序名称,只需要在frameworks/base/core/android/hardware/Camera.jav
- 网易Java程序员两轮面试题,请作答。part 1:网易JAVA程序员一面1.volatile有什么用?2.Minor GC和Full GC
- Android中图片的左右切换随处可见,今天我也试着查阅资料试着做了一下,挺简单的一个小Demo,却也发现了一些问题,话不多说,上代码~:使
- 前言上一篇:微服务网关Zuul上文中,我们介绍了微服务网关Zuul,Zuul 是 Netflix 公司开源的产品,被称为第一代网关,也是 S
- AI 平台:http://ai.baidu.com/开发工具:vs 2017准备工作1、注册百度账号2、登录百度 AI 开发平台,http:
- 前言相信大家在写前端脚本的时候经常会遇到发送数据到后台的情况,但是由于浏览器的限制,不同域名之间的数据是不能互相访问的,那前端怎么和后端如何
- 本文以在chart控件上和窗体上画矩形为例子讲述了C# GDI在控件上绘图的方法。分享给大家供大家参考。具体方法如下:具体的实现方法就不多解
- 本文实例讲述了C#中数组初始化与数组元素复制的方法。分享给大家供大家参考。具体如下:下面的代码演示如何创建和初始化数组,以及C#中如何将数组
- springboot static调用service为null@PostConstruct注解好多人以为是Spring提供的。其实是Java
- 使用GroupingSearch对搜索结果进行分组Package org.apache.lucene.search.grouping Des
- 背景我们在android超级优化-线程监控与线程统一可以知道,我们能够通过asm插桩的方式,进行了线程的监控与线程的统一,通过一系列的黑科技
- 本文实例为大家分享了java实现猜数字小游戏的具体代码,供大家参考,具体内容如下介绍:电脑随机生成一个1-100的随机数,用户输入一个数;电
- 实现“摇一摇”功能,其实很简单,就是检测手机的重力感应,具体实现代码如下:1、在 AndroidManifest.xml 中添加操作权限2、
- 本文实例为大家分享了Unity实现截图功能的具体代码,供大家参考,具体内容如下一、使用Unity自带APIusing UnityEngine
- Android平台有三种网络接口可以使用,他们分别是:java.net.*(标准Java接口)、Org.apache接口和Android.n
- 前言《接月饼小游戏》是一个基于java的自制游戏,不要被月亮砸到,尽可能地多接月饼。此小项目可用来巩固JAVA基础语法,swing的技巧用法
- GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台
- 本文主要介绍了java(包括springboot)读取resources下文件方式实现,分享给大家,具体如下:1、使用项目内路径读取,该路径
- Demo环境JDK8Maven3.6.3springboot2.4.3redis_version:6.2.1仓库地址https://gite