国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android編程實現獲取多媒體庫視頻、音頻、圖片的方法

2019-10-22 18:16:44
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程實現獲取多媒體庫視頻、音頻、圖片的方法。分享給大家供大家參考,具體如下:

從媒體庫中查找音頻、視頻、圖片文件的相關信息,并獲取視頻、圖片、專輯圖片的縮略圖
和一些文件操作

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(){@Overridepublic 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 blocke.printStackTrace();}catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(is!=null){try {is.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}return size;}}

希望本文所述對大家Android程序設計有所幫助。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乐昌市| 新乡市| 滦平县| 遵化市| 黄骅市| 微博| 梧州市| 繁峙县| 嘉荫县| 洛南县| 双流县| 洱源县| 胶南市| 久治县| 吉林市| 石狮市| 上饶县| 卢氏县| 固安县| 汕头市| 西华县| 桂东县| 石棉县| 漯河市| 田阳县| 云南省| 阿勒泰市| 德江县| 武城县| 竹北市| 清河县| 来凤县| 汤阴县| 环江| 五指山市| 广平县| 锡林浩特市| 全州县| 保定市| 丘北县| 开平市|