RxFile 一款选择多媒体文件精巧的工具类
来源:互联网 发布:wordpress分类目录seo 编辑:程序博客网 时间:2024/06/01 20:04
- Tamic/CSDN原创 http://blog.csdn.net/sk719887916/article/details/78011503
RxJava对于Java和android开发者已经是耳熟能详的技术了,RxJava的异步通讯技术更是让开发者们青睐,本文就带来一款通过RxJava实现的选择手机相册来获取多媒体的工具RxFile。
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<List<File>>() { @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<File> 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<File>() { @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。
项目地址:https://github.com/pavlospt/RxFile
更多文章可微信搜搜关注我的 公众号:开发者技术前线
- RxFile 一款选择多媒体文件精巧的工具类
- 如何选择一款好的 APM 工具?
- Android 多媒体文件获取工具类
- 如何选择一款最好的硬盘对拷工具
- 一款bootstrap支持选择多文件上传的控件
- 一款适用的日期工具类
- 介绍一款很好用的文件,图片对比工具
- 一款好用的文件比较工具Meld
- 推荐一款反编译文件的工具onekey-decompile-apk
- 一款用于在Android设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库
- 设计精巧的openERP
- 设计精巧的openERP
- 两个精巧的算法
- 为你的SQLite开发选择一款比较好的工具
- 在选择一款web漏洞扫描工具时,你最关心的哪一点?
- 一款别致的telnet工具
- 网页抓取的一款工具
- Vitamio一款Android&iOS上的全能多媒体开发框架
- Android中关于Handle的用法和分析
- vb.net 教程 3-12 资源文件 1-1
- 多线程操作数据库时为了防止数据的增删改的混乱该在数据库层还是程序层面上进行同步?
- js + jquery 实现无限加载页面的分页(类似京东手机版)
- 在Cygwin跨平台编译GTK+程序
- RxFile 一款选择多媒体文件精巧的工具类
- Python爬虫防封杀方法集合
- 猜数字游戏
- Python3:《机器学习实战》之Logistic回归(1)算法概述
- python批量下载网页图片及列表
- 【第二周】项目3
- Hibernate配置Log4J
- tomcat 配置登录
- JS事件-2