CameraX简单地使用预览、拍照、录像功能
方便之处
使用CameraX不需要在activity的onResume和onPause中放置启动和停止方法,只需要让相机关联上组件生命周期就可以自动管理了
CameraX 会自动确定要使用的最佳分辨率。所有这些操作均由库进行处理,无需您编写设备专属代码。
动态获取权限
private fun allPermissionsGranted() = REQUIRED_PERMISSIONS.all {
ContextCompat.checkSelfPermission(baseContext, it) == PackageManager.PERMISSION_GRANTED
}
绑定preview
preview.Builder().build()
it.setSurfaceProvider(viewFinder.createSurfaceProvider())
绑定生命周期自动管理
camera = cameraProvider?.bindToLifecycle(
this,
cameraSelector,
preview,
imageCamera,
videoCapture
)//绑定用例
绑定相关会在动态获取到权限后调用。
拍照:
imageCapture.takePicture 参数:
outputOptions
ContextCompat.getMainExecutor(this)
object : ImageCapture.OnImageSavedCallback:实现image保存回调,重写onError、onImageSaved两个方法(网上很多例子)。
录像:
videoCapture?.startRecording 参数: file:保存位置
Executors.newSingleThreadExecutor():VideoCapture自带的
object : OnVideoSavedCallback:实现视频保存回调,重写onVideoSaved、onError方法。
总结:
对于cameraX拍照录像,封装的很好,只需要在库里引入cameraX相关dependence,很多处理都已经封装好了。