存储配置¶
CameraXStoreConfig
object类,存储配置全局生效。
函数 | 描述 |
---|---|
configPhoto | 配置拍照存储位置 |
configVideo | 配置录制存储位置 |
一共有三种存储方式:file,MediaStore,saf访问框架。
若不进行配置,则默认存储到相册的CameraX
文件夹下
- 调用CameraXStoreConfig.configPhoto()配置图片存储位置
- 调用CameraXStoreConfig.configVideo()配置录制存储位置,使用方式与配置图片没有区别,仅方法名称不同
推荐存储设置¶
- 对于android10以下,可以使用file方式存储。
- 对于android10以上,由于存储权限收紧
- 对于存入app自身目录的,可以使用file
- 对于存入相册、视频目录的,可以使用MediaStore
- 对于其他目录的,可以使用saf框架
使用示例¶
视频的存储配置同拍照的存储配置相同,不过是把名称从configPhoto
换成configVideo
.可以参考app示例中的MainActivity
- 使用file绝对路径存储
val targetDir = "fff" //目标文件夹
CameraXStoreConfig.configPhoto(
IStore.FileStoreConfig(
application.cacheDir.absolutePath,
targetDir
)
)
- 使用MediaStore存储
CameraXStoreConfig.configPhoto(
IStore.MediaStoreConfig(
saveCollection = FileLocate.IMAGE.uri,
mediaFolder = Environment.DIRECTORY_DCIM,
targetFolder = relativePath
)
)
- 使用SAF框架存储到任意文件夹
StoreX.with(this).safHelper.requestOneFolder { it ->
//使用SAF框架获取某一个文件夹的授权和uri,然后配置存储
CameraXStoreConfig.configPhoto(
IStore.SAFStoreConfig(it)
)
}
拍摄完成,录制结束,获取文件地址¶
首先,我们在CameraExampleActivity
或CameraExampleActivity2
中
都实现了CaptureResultListener
接口来接收拍摄、录制完成的事件。
因此,在接口的方法参数中,可以获取到拍摄、录制完成后的文件地址。
/**
* 拍完照片
*/
override fun onPhotoTaken(saveFileData: SaveFileData?) {
super.onPhotoTaken(saveFileData)
Log.d("CameraXFragment", "onPhotoTaken: $saveFileData")
cameraXF.indicateTakePhoto()//拍照闪光
}
/**
* 录完视频
*/
override fun onVideoRecorded(saveFileData: SaveFileData?) {
super.onVideoRecorded(saveFileData)
saveFileData?.let {
Log.d(TAG, "onVideoRecorded: $it")
}
}
SaveFileData类¶
- 描述文件存储位置
- 若使用了MediaStore,path为空,uri为content开头
- 若使用文件,path不为空,uri为file开头
- 若使用SAF,path为空,uri为content开头