什么是 EasyAndroid
EasyAndroid是一款专注于提供各种基础组件的集成库
作为一款集成组件库,此库中所集成的组件,均包含以下特点:
- 精简:作为一款集成库,我不希望有那种大组件,尽量控制好集成库的大小。每个组件的方法数均不超过100. 大部分组件方法数甚至不超过50。
- 内敛:尽量减少甚至避免单一组件对别的模块进行依赖。做到组件间独立。
什么是 EasyPhoto
EasyPhoto 是开源库EasyAndroid的基础组件之一,主要用于对文件的选择
若你不需要其他集成组件。只想用 EasyPhoto 。可以直接拷贝集成库中的 EasyPhoto 类到项目中,直接进行使用。
特性
流程图
下图为图片功能的执行流程(音频与视频类似):
用法举例
PS: 请注意request方法传入的Activity,需要为当前栈顶层的Activity实例,否则将可能导致无法接收返回图片的问题
重要的事情说三遍——运行时权限、运行时权限、运行时权限,该库需要的权限如下:
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.CAMERA
下面是拍照以及选择图片的具体方法:
EasyPhoto()
// 默认地址在 "Android/data/easy_" + activity.packageName 下
// 非必要参数
.setFilePath(null)
// 是否裁剪
// 非必要参数
.setCrop(false)
// 错误回调
// 非必要参数
.setError { error ->
}
// 返回文件
// 必要参数
.setCallback { file ->
}
// 选择图片
// .selectPhoto(this)
// 拍照
// .takePhoto(this)
// 拍照或选择图片
// .getImage(this)
// 选择音频
// .selectAudio(this)
// 录制音频
// .takeAudio(this)
// 录制音频或选择音频
// .getAudio(this)
// 选择视频
// .selectVideo(this)
// 录制视频
// .takeVideo(this)
// 录制视频或选择视频
// .getVideo(this)
// 选择文件(支持联系人(需要申请权限)、音频、视频、word等各种类型文件)
.selectFile(this)
最后来一个效果图:
局限性
1. android 10
适配
因为裁剪图片以及录制(拍摄)的时候会涉及到SD
卡存储,而Android Q
对存储空间进行了限制,因此可以增加下面的代码进行修复。
<application
...
android:requestLegacyExternalStorage="true">
...
</application>