从媒体库中查找音频、视频、图片文件的相关信息,并获取视频、图片、专辑图片的缩略图

和一些文件操作

package com.uwatch.swconnectservice.util;

import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.MediaScannerConnection;
import android.media.MediaScannerConnection.OnScanCompletedListener;
import android.media.ThumbnailUtils;
import android.net.Uri;
import android.os.ParcelFileDescriptor;
import android.provider.MediaStore;
import android.util.Log;

public class FileOper {
public static final String [] IMAGE_COLUMN = {MediaStore.Images.Media.DATA,MediaStore.Images.Media.SIZE};
public static final String [] AUDIO_COLUMN = {MediaStore.Audio.Media.DATA,MediaStore.Audio.Media.SIZE,MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media._ID,MediaStore.Audio.Media.ALBUM_ID};
public static final String [] VIDEO_COLUMN = {MediaStore.Video.Media.DATA,MediaStore.Video.Media.SIZE,MediaStore.Audio.Media.DURATION};
private static final Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");

///创建文件夹

public static void createFile(String path){
File file = new File(path);
if(!file.exists()){
file.mkdirs();
}
}

//删除文件,并刷新媒体库
public static void deleteFile(String path,final Context context,final int type){
File file = new File(path);
if(file.exists()){
if(file.isFile()){
file.delete();
}else if(file.isDirectory()){
deleteDirs(file);
}

}

///监听媒体库刷新情况

MediaScannerConnection.scanFile(context, new String[]{"/storage/sdcard0"}, null,new OnScanCompletedListener(){

@Override
public void onScanCompleted(String path, Uri uri) {刷新完后做相应处理
if(type == 1){
String lists = FileOper.getVideoFile(context);
SentMessage.SendToBluetooth(context, SentMessage.WATCH_PATH, lists);
}else if(type == 2){
String lists = FileOper.getAudioFiles(context);
SentMessage.SendToBluetooth(context, SentMessage.WATCH_PATH, lists);
}else if(type == 3){
String lists = FileOper.getImageFiles(context);
SentMessage.SendToBluetooth(context, SentMessage.WATCH_PATH, lists);
}
}

});/
}
public static void deleteDirs(File file){
if(file.isDirectory()){
File[]files = file.listFiles();
if(files == null || files.length == 0){
file.delete();
}else {
for(int i = 0;i<files.length;i++){
if(files[i].isDirectory()){
deleteDirs(files[i]);
}else{
files[i].delete();
}
}
}
file.delete();
}
}

///获取相应目录下的文件、文件夹

public static String getFileInfoList(String path) {
File file = new File(path);
String lists = "";
File[] files = file.listFiles();
if(files != null){
if(files.length>0){
for(int i = 0;i<files.length;i++){
if(file.exists()){
if(files[i].isFile()){
lists = lists+"1,"+Util.encodeBase64(files[i].getName())+","+Util.encodeBase64(files[i].getAbsolutePath())+","+getFileSize(files[i])+"}";
}else if(files[i].isDirectory()){
lists = lists+"0,"+Util.encodeBase64(files[i].getName())+","+Util.encodeBase64(files[i].getAbsolutePath())+",0}";
}  
}
}
}
}
return lists;
}

查询视频文件
public static String getVideoFile(Context context){
ContentResolver resolver = context.getContentResolver();
Cursor cursor = resolver.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, VIDEO_COLUMN, null, null, null);
String tp = "video}";
if(cursor != null){
if(cursor.moveToFirst()){
String path = cursor.getString(cursor.getColumnIndex(VIDEO_COLUMN[0]));
String size = cursor.getString(cursor.getColumnIndex(VIDEO_COLUMN[1]));
String duration = cursor.getString(cursor.getColumnIndex(VIDEO_COLUMN[2]));
//String thumbnail = Util.bitmaptoString(getVideoThumbnail(path, 96, 96, MediaStore.Images.Thumbnails.MICRO_KIND));
//tp = tp+Util.encodeBase64(path)+","+size+","+duration+","+thumbnail+"}";
tp = tp+Util.encodeBase64(path)+","+size+","+duration+"}";
while(cursor.moveToNext()){
path = cursor.getString(cursor.getColumnIndex(VIDEO_COLUMN[0]));
size = cursor.getString(cursor.getColumnIndex(VIDEO_COLUMN[1]));
duration = cursor.getString(cursor.getColumnIndex(VIDEO_COLUMN[2]));
//tp = tp+Util.encodeBase64(path)+","+size+","+duration+","+thumbnail+"}";
tp = tp+Util.encodeBase64(path)+","+size+","+duration+"}";
}
}
}
return tp;
}

//查询音频文件
public static String getAudioFiles(Context context){
ContentResolver resolver = context.getContentResolver();
Cursor cursor = resolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, AUDIO_COLUMN, null, null, null);
String tp = "audio}";
if(cursor != null){
if(cursor.moveToFirst()){
String path = cursor.getString(cursor.getColumnIndex(AUDIO_COLUMN[0]));
String size = cursor.getString(cursor.getColumnIndex(AUDIO_COLUMN[1]));
String duration = cursor.getString(cursor.getColumnIndex(AUDIO_COLUMN[2]));
/*String id = cursor.getString(cursor.getColumnIndex(AUDIO_COLUMN[3]));
String albumid = cursor.getString(cursor.getColumnIndex(AUDIO_COLUMN[4]));
Bitmap bt = getMusicBitemp(context,Long.valueOf(id),Long.valueOf(albumid));
String thumbnail = "audio";
if(bt != null){
thumbnail = Util.bitmaptoString(getAudioThumbnail(bt, 96, 96));
}
tp = tp+Util.encodeBase64(path)+","+size+","+duration+","+thumbnail+"}";*/
tp = tp+Util.encodeBase64(path)+","+size+","+duration+"}";
while(cursor.moveToNext()){
path = cursor.getString(cursor.getColumnIndex(AUDIO_COLUMN[0]));
size = cursor.getString(cursor.getColumnIndex(AUDIO_COLUMN[1]));
duration = cursor.getString(cursor.getColumnIndex(AUDIO_COLUMN[2]));
/*id = cursor.getString(cursor.getColumnIndex(AUDIO_COLUMN[3]));
albumid = cursor.getString(cursor.getColumnIndex(AUDIO_COLUMN[4]));
bt = getMusicBitemp(context,Long.valueOf(id),Long.valueOf(albumid));
thumbnail = "audio";
if(bt != null){
thumbnail = Util.bitmaptoString(getAudioThumbnail(bt, 96, 96));
}
tp = tp+Util.encodeBase64(path)+","+size+","+duration+","+thumbnail+"}";*/
tp = tp+Util.encodeBase64(path)+","+size+","+duration+"}";
}
}
}
return tp;
}

查询图片
public static String getImageFiles(Context context){
ContentResolver resolver = context.getContentResolver();
Cursor cursor = resolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_COLUMN, null, null, null);
String tp = "image}";
if(cursor != null){
if(cursor.moveToFirst()){
String path = cursor.getString(cursor.getColumnIndex(IMAGE_COLUMN[0]));
String size = cursor.getString(cursor.getColumnIndex(IMAGE_COLUMN[1]));
/*String thumbnail = Util.bitmaptoString(getImageThumbnail(path, 96, 96));
tp = tp+Util.encodeBase64(path)+","+size+","+thumbnail+"}";*/
tp = tp+Util.encodeBase64(path)+","+size+"}";
while(cursor.moveToNext()){
path = cursor.getString(cursor.getColumnIndex(AUDIO_COLUMN[0]));
size = cursor.getString(cursor.getColumnIndex(AUDIO_COLUMN[1]));
/*thumbnail = Util.bitmaptoString(getImageThumbnail(path, 96, 96));
tp = tp+Util.encodeBase64(path)+","+size+","+thumbnail+"}";*/
tp = tp+Util.encodeBase64(path)+","+size+"}";
}
}
}
return tp;
}

///获取音频文件专辑图片
public static Bitmap getMusicBitemp(Context context, Long songid,
Long albumid) {
Bitmap bm = null;
if (albumid < 0 && songid < 0) {
throw new IllegalArgumentException(
"Must specify an album or a song id");
}
try {
if (albumid < 0) {
Uri uri = Uri.parse("content://media/external/audio/media/"
+ songid + "/albumart");
ParcelFileDescriptor pfd = context.getContentResolver()
.openFileDescriptor(uri, "r");
if (pfd != null) {
FileDescriptor fd = pfd.getFileDescriptor();
bm = BitmapFactory.decodeFileDescriptor(fd);
}
} else {
Uri uri = ContentUris.withAppendedId(sArtworkUri, albumid);
ParcelFileDescriptor pfd = context.getContentResolver()
.openFileDescriptor(uri, "r");
if (pfd != null) {
FileDescriptor fd = pfd.getFileDescriptor();
bm = BitmapFactory.decodeFileDescriptor(fd);
} else {
return null;
}
}
} catch (FileNotFoundException ex) {
return null;
}
return bm;
}

获取图片缩略图
public static Bitmap getImageThumbnail(String imagePath, int width, int height) {  
Bitmap bitmap = null;  
BitmapFactory.Options options = new BitmapFactory.Options();  
options.inJustDecodeBounds = true;  
bitmap = BitmapFactory.decodeFile(imagePath, options);  
options.inJustDecodeBounds = false;

int h = options.outHeight;  
int w = options.outWidth;  
int beWidth = w / width;  
int beHeight = h / height;  
int be = 1;  
if (beWidth < beHeight) {  
be = beWidth;  
} else {  
be = beHeight;  
}  
if (be <= 0) {  
be = 1;  
}  
options.inSampleSize = be;

bitmap = BitmapFactory.decodeFile(imagePath, options);  
 
bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,  
ThumbnailUtils.OPTIONS_RECYCLE_INPUT);  
return bitmap;  
}

获取音频专辑图片的缩略图
public static Bitmap getAudioThumbnail(Bitmap bitmap, int width, int height) {  
BitmapFactory.Options options = new BitmapFactory.Options();  
int h = bitmap.getHeight();  
int w = bitmap.getWidth();  
int beWidth = w / width;  
int beHeight = h / height;  
int be = 1;  
if (beWidth < beHeight) {  
be = beWidth;  
} else {  
be = beHeight;  
}  
if (be <= 0) {  
be = 1;  
}  
bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,  
ThumbnailUtils.OPTIONS_RECYCLE_INPUT);  
return bitmap;  
}  
 /获取视频文件缩略图
public static Bitmap getVideoThumbnail(String videoPath, int width, int height,  
int kind) {  
Bitmap bitmap = null;

bitmap = ThumbnailUtils.createVideoThumbnail(videoPath, kind);  
System.out.println("w"+bitmap.getWidth());  
System.out.println("h"+bitmap.getHeight());  
bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,  
ThumbnailUtils.OPTIONS_RECYCLE_INPUT);  
return bitmap;  
}

///获取文件大小
public static int getFileSize(File file){
InputStream is=null;
int size=0;
try {
is=new FileInputStream(file);
size= is.available();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(is!=null){
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return size;
}
}

android获取多媒体库的视频、音频、图片相关推荐

  1. 格式工厂 – 万能视频/音频/图片多媒体格式转换软件 (完全免费)

    如今视频.音频.图片的格式越来越多,相信没几个人能数得过来了吧.经常有人问我转换某某格式用什么软件好?事实上我并不是视频压制的高手,难以从万千收费.免费的音视频格式转换软件中对比出一个结果来.对于像我 ...

  2. Android 获取SDCard中某个目录下图片

    本文介绍Android开发中如何获取SDCard中某目录下的所有图片并显示出来,下面的我们提供的这个函数是通用的,只要提供路径就可以查询出该目录下所有图片的路径信息,并保存到一个List<Str ...

  3. Python: 玩转各种多媒体+视频+音频+图片

    我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑.字幕编辑.分离音频.视频音频混流等.又比如对音频文件的操作:音频剪辑,音频格式转换.再比如我们最常用的图片文件,格式转换.各 ...

  4. android 多媒体文件信息,Android 获取多媒体信息

    在做多媒体应用开发时,往往需要获取到多媒体文件的相关信息. Android 提供了 MediaMetadataRetriever 类来获取输入媒体文件的帧(Frame)和元数据(Meta data). ...

  5. android 媒体库扫描,如何扫描出Android系统媒体库中视频文件

    Android系统启动时会去扫描系统文件,并将系统支持的视频文件(mp4,3gp,wmv)扫描到媒体库(MediaStore)中,下面代码演示如何获得这些文件的信息: publicstatic Lis ...

  6. 对象方法Android之多媒体使用——MediaPlayer播放音频

    每日一贴,今天的内容关键字为对象方法 MediaPlayer类 静态构造方法 常用方法 绑定事件监听器 播放音频 1.播放应用的资源文件(res/raw/) 通过我们下面介绍的几个静态构造函数创立Me ...

  7. android 获取图片

    Android获取手机或者内存卡里面的图片有两种方式 1.这是通过一种action Intent intent=new Intent();intent.setAction(Intent.ACTION_ ...

  8. Python 获取网页内视频或图片

    使用BeautifulSoup 和 Requests,来获取网页内的视频和图片. import requests from bs4 import BeautifulSoup# Send request ...

  9. android中调用系统功能 来显示本地相册图片 拍照 视频 音频功能

    android中调用系统功能 来显示本地相册图片 拍照 视频 音频功能 效果图如下: 本地相册跟拍照可直接调用系统功能 Intent img = new Intent(MediaStore.ACTIO ...

最新文章

  1. 设置系统和管理计算机硬件的应用程序,Windows7操作系统中用于设置系统和管理计算机硬件的应用程序是()...
  2. 程序员偷偷深爱的9个不良编程习惯
  3. adapt和adopt的区别_adopt和adapt的区别
  4. Linux创建oracle11实例
  5. AES地址栏传参加密
  6. JavaScriptCore框架在iOS7中的对象交互和管理
  7. oracle主机修改IP后客户端无法连接
  8. 变分模态分解(VMD)前言
  9. 第五章 PYTHON标准库
  10. eclipse中文版官方下载
  11. 安装torch与luarocks的一些问题
  12. 二级Visual Basic语言视频教程
  13. labelImg 的pip安装
  14. zedBoard USB转串口驱动下载问题
  15. 快速原型制造_快速原型初学者指南
  16. 基于以太网为基础的POE供电温湿度变送器解决方案
  17. UnityShader学习教程之<矩阵的左乘还是右乘所导致的效果问题>
  18. 学习笔记之Markdown(一)
  19. VUE UI框架对比 element-ui 与 iView
  20. IMF国际货币基金组织

热门文章

  1. 华清远见-创客学院-专业:嵌入式人工智能开发 C++ 课程(包含天猫精灵)
  2. python代码举例量子纠缠
  3. 【SQL注入-13】利用SQL注入漏洞读写文件案例
  4. 年薪20万、50万、100万的管理者,有什么分别?
  5. 软件工程小分队第一次会议
  6. Spring IOC源码解析笔记
  7. 【数据结构】小项目:航班查询系统
  8. Will的替代词汇_59
  9. 【商业分析 01】商业分析网站汇总
  10. VC++电脑锁屏(附源码)