EasyAndroid基础集成组件库之:EasyPhoto 文件选择库

675 阅读2分钟

什么是 EasyAndroid


EasyAndroid是一款专注于提供各种基础组件的集成库

作为一款集成组件库,此库中所集成的组件,均包含以下特点:

  1. 精简:作为一款集成库,我不希望有那种大组件,尽量控制好集成库的大小。每个组件的方法数均不超过100. 大部分组件方法数甚至不超过50。
  2. 内敛:尽量减少甚至避免单一组件对别的模块进行依赖。做到组件间独立。

什么是 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>

2. 所提供的Activity启动模式如果为singleInstance单例模式,则所在的ActivityEasyPhoto均无法得到返回的数据,因此需要注意避免