博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RxFile 一款选择多媒体文件精巧的工具类
阅读量:5937 次
发布时间:2019-06-19

本文共 4100 字,大约阅读时间需要 13 分钟。

  • Tamic/原创

    RxJava对于Java和android开发者已经是耳熟能详的技术了,RxJava步通讯技术更是让开发者们青睐,本文就带来一款通过RxJava实现的选择手机相册来获取多媒体的工具RxFile。

Tamic出品

RxFile是一款从安卓设备获取图片或者视频的工具类,让你的需要读取相册返回图片功能更流畅,并防止ANR现象。RxFile是国外的名叫Tournaris 写的,本文开始介绍怎么使用RxFIle。

集成

在Gradle 的 jCenter() 和 mavenCentral()添加下面依赖:

compile 'com.github.pavlospt:rxfile:1.5'

使用

1 开启LOG日志

RxFile.setLoggingEnabled(true);

2 从ClipData获取多个文件

RxFile.createFilesFromClipData(this,clipData)                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Subscriber
>() { @Override public void onCompleted() { Timber.e("onCompleted() for Files called"); } @Override public void onError(Throwable e) { Timber.e("Error on files fetching:" + e.getMessage()); } @Override public void onNext(List
files) { Timber.e("Files list size:" + files.size()); for(File f : files){ Timber.e("onNext() file called:" + f.getAbsolutePath()); } } });复制代码

3 通过URI对媒体文件

RxFile.createFileFromUri(this,uri)                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Subscriber
() { @Override public void onCompleted() { Timber.e("onCompleted() for File called"); } @Override public void onError(Throwable e) { Timber.e("Error on file fetching:" + e.getMessage()); } @Override public void onNext(File file) { Timber.e("onNext() file called:" + file.getAbsolutePath()); } });复制代码

3 通过URI获取大文件Thumball

相信安卓用户都深有体会,有个叫.thumbnails的文件随着时间发展会变的超级大,因为它可能导致相机因为存储空间不够无法照相、蓝牙无法传送文件等。有时候我们需要读取这个这个文件来进行某些操作。

RxFile.getThumbnail(this,data)                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Subscriber
() { @Override public void onCompleted() { Timber.e("onCompleted() called"); } @Override public void onError(Throwable e) { Timber.e("onError called with: " + e.getMessage()); } @Override public void onNext(Bitmap bitmap) { mBitmap.setImageBitmap(bitmap); } });`复制代码

更多API

以下是RXFile提供的一些上层可调用的方法,你可以通过这些方法来从不同渠道获取不同的文件格式,让你面对相册,视频选择的需求时候是不再头痛。

Observable getFileExtension(final String fileName);

Observable ifExists(final String path);
Observable getThumbnail(String filePath);
Observable getVideoThumbnail(final String filePath);
Observable getVideoThumbnailFromPath(final String path, final int kind);
Observable getThumbnailFromPath(String filePath);
Observable getFileType(String filePath);
Observable getPathFromUriForFileDocument(final Context context, final Uri contentUri);
Observable getPathFromUriForImageDocument(final Context context, final String mediaDocumentId);
Observable getPathFromUriForVideoDocument(final Context context, final String mediaDocumentId);
String getMimeType(String fileName);

结束

RxFile是非常轻的一个框架,Rxfile代码只有616行,因此在你开发的时候 根本不需要关心package大小过大问题。也能解决读取图片导致卡死或者Anr的现象。RxFIle原理非常简单,入门了RxJava的基本都能自己写RxFIle。

项目地址:

更多文章可微信搜搜关注我的 公众号:开发者技术前线

转载地址:http://zuttx.baihongyu.com/

你可能感兴趣的文章
RabbitMQ集群
查看>>
Apache防盗链和隐藏版本信息
查看>>
ARP协议与路由
查看>>
SCI检索介绍
查看>>
Android开发之生成自己的签名文件及App签名打包
查看>>
如何提高阿里云上应用的可用性(二)
查看>>
云宏WinCloud前端工程师告诉你什么是UI扁平化
查看>>
如何压缩PDF文件,有什么简单的方法
查看>>
SpringMVC常用注解标签详解
查看>>
day18 Set集合
查看>>
Oracle event之db file read
查看>>
ORA 00600 [ktrexc_1]
查看>>
Docker 安装
查看>>
查询文件系统容量与每个目录的容量
查看>>
如何确定一个网站是用Wordpress开发的
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
wdcp 安装
查看>>
C语言运算符优先级相关问题
查看>>
MP4视频播放器代码
查看>>