一款用于在Android设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库
效果展示:
TakePhoto 包括以下功能:
- 支持通过相机拍照获取图片
- 支持从相册选择图片
- 支持从文件选择图片
- 支持批量图片选取
- 支持图片压缩以及批量图片压缩
- 支持图片裁切以及批量图片裁切
- 支持照片旋转角度自动纠正
- 支持自动权限管理(无需关心SD卡及摄像头权限等问题)
- 支持对裁剪及压缩参数个性化配置
- 提供自带裁剪工具(可选)
- 支持智能选取及裁剪异常处理
- 支持因拍照Activity被回收后的自动恢复
- 支持Android7.0
- +支持多种压缩工具
使用TakePhoto有以下两种方式:
方式一:通过继承的方式三者之一。
- 继承TakePhotoActivity
- TakePhotoFragmentActivity
TakePhotoFragment
通过getTakePhoto()
获取TakePhoto
实例进行相关操作。
重写以下方法获取结果void takeSuccess(TResult result); void takeFail(TResult result,String msg); void takeCancel();复制代码
方式二:通过组装的方式
在相对应的类中进行添加代码1.实现TakePhoto.TakeResultListener,InvokeListener
接口。2.在 onCreate,onActivityResult,onSaveInstanceState
方法中调用TakePhoto对用的方法。- 3.重写onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
压缩图片
你可以选择是否对图片进行压缩处理,你只需要告诉它你是否要启用压缩功能以及CompressConfig即可
API
/**
* 启用图片压缩
* @param config 压缩图片配置
* @param showCompressDialog 压缩时是否显示进度对话框
* @return
*/
void onEnableCompress(CompressConfig config,boolean showCompressDialog);复制代码
Usage:
TakePhoto takePhoto=getTakePhoto();
takePhoto.onEnableCompress(compressConfig,true);
takePhoto.onPickFromGallery();复制代码
兼容性
Android6.0
由于Android6.0新增了"运行时权限控制(Runtime Permissions)",为了应对这一改变,TakePhoto加入和自动权限管理,当TakePhoto检测到需要权限时,TakePhoto会自动申请权限,所以小伙伴们不用担心权限的使用问题。
Android7.0
在Android N中,Android 框架执行了 StrictMode,应用间共享文件和以前也有所区别。为了适配Android7.0的改变,同时也为了方便大家使用TakePhoto,TakePhoto会自动根据手机的Android版本自行适配,小伙伴们依旧可以向TakePhoto传递Uri imageUri = Uri.fromFile(file);
类型的Uri而不用担心兼容性问题。- TakePhoto在深度兼容性方面的测试
兼容性测试报告
博客地址:
项目地址:
相信自己,没有做不到的,只有想不到的
如果你觉得此文对您有所帮助,欢迎入群 QQ交流群 :232203809
微信公众号:终端研发部