编程知识 购物 网址 新闻 笑话 | 软件 日历 阅读 图书馆 China 头条阅读 学淘股 China Travel
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
   -> Android开发 -> Android -> 正文阅读

[Android开发]Android

干货
从API 8开始,新增了一个类:
android.media.ThumbnailUtils这个类提供了3个静态方法一个用来获取视频第一帧得到的Bitmap,2个对图片进行缩略处理。

public static Bitmap createVideoThumbnail (String filePath, int kind)

第一个参数是视频文件的路径,第二个参数是指定图片的大小,有两种选择Thumbnails.MINI_KIND与Thumbnails.MICRO_KIND。
第一种文档上说大小是512 x 384 ,我用一个MP4格式文件测试得到544 x 960,用一个wmv格式文件测试得到160 x 120。明显不靠谱。 第二种参数两种格式文件得到的大小都是 96 x 96,这个才是缩略图。

extractThumbnail(Bitmap source, int width, int height, int options)
extractThumbnail(Bitmap source, int width, int height)

这两种方法都是用来处理Bitmap的大小的,第一个参数是要处理的Bitmap,第二个参数是处理后宽度,第三个是高度,第四个参数options,如果options定义为OPTIONS_RECYCLE_INPUT,则回收资源。也就是说可以用第三种方法把截取到的视频第一帧的Bitmap转成任意想要的大小,第三个方法还可以获取内存卡内图片的缩略图。

Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(path1, Thumbnails.MINI_KIND);  
bitmap = ThumbnailUtils.extractThumbnail(bitmap, 210, 210);

从API 10开始新增一类MediaMetadataRetriever可以用来获取媒体文件的信息

MediaMetadataRetriever mmr = new MediaMetadataRetriever();  
mmr.setDataSource("/sdcard/33.mp4");  
Bitmap bitmap = mmr.getFrameAtTime();  
image.setImageBitmap(bitmap);  
System.out.println(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE)+"");  
System.out.println(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_MIMETYPE)+"");  
mmr.release();

MediaMetadataRetriever可以获取视频任何一帧的缩略图。

public static Bitmap createVideoThumbnail(String filePath) {  
    // MediaMetadataRetriever is available on API Level 8  
    // but is hidden until API Level 10  
    Class<?> clazz = null;  
    Object instance = null;  
    try {  
        clazz = Class.forName("android.media.MediaMetadataRetriever");  
        instance = clazz.newInstance();  
  
        Method method = clazz.getMethod("setDataSource", String.class);  
        method.invoke(instance, filePath);  
  
        // The method name changes between API Level 9 and 10.  
        if (Build.VERSION.SDK_INT <= 9) {  
            return (Bitmap) clazz.getMethod("captureFrame").invoke(instance);  
        } else {  
            byte[] data = (byte[]) clazz.getMethod("getEmbeddedPicture").invoke(instance);  
            if (data != null) {  
                Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);  
                if (bitmap != null) return bitmap;  
            }  
            return (Bitmap) clazz.getMethod("getFrameAtTime").invoke(instance);  
        }  
    } catch (IllegalArgumentException ex) {  
        // Assume this is a corrupt video file  
    } catch (RuntimeException ex) {  
        // Assume this is a corrupt video file.  
    } catch (InstantiationException e) {  
        Log.e(TAG, "createVideoThumbnail", e);  
    } catch (InvocationTargetException e) {  
        Log.e(TAG, "createVideoThumbnail", e);  
    } catch (ClassNotFoundException e) {  
        Log.e(TAG, "createVideoThumbnail", e);  
    } catch (NoSuchMethodException e) {  
        Log.e(TAG, "createVideoThumbnail", e);  
    } catch (IllegalAccessException e) {  
        Log.e(TAG, "createVideoThumbnail", e);  
    } finally {  
        try {  
            if (instance != null) {  
                clazz.getMethod("release").invoke(instance);  
            }  
        } catch (Exception ignored) {  
        }  
    }  
    return null;  
}

我是天王盖地虎的分割线
  Android开发 最新文章
Android动态权限申请
使用Kotlin,抛弃findViewById
.net程序员做的第一个安卓APP
Android学习笔记
计算机毕业设计源码分享
计算机毕业设计源码分享
ELF Format 笔记(一)—— 概述
Fragment学习笔记
Android复制Assets目录下的文件到指定目录
Android网络请求框架AsyncHttpClient实例详
上一篇文章      下一篇文章      查看所有文章
加:2015-03-30 07:50:33  更:2017-05-16 20:15:19 
 
360图书馆 软件开发资料 购物精选 新闻资讯 Chinese Culture 三丰软件 开发 中国文化 阅读网 头条阅读 学淘股 China Travel 日历 万年历 2020年7日历
2020-7-6 16:32:06
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程知识