CameraX简单地使用预览、拍照、录像功能

710 阅读1分钟

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,很多处理都已经封装好了。