前言
在 Android 应用中要实现 Camera 功能还是比较困难的,
为了保证在各品牌手机设备上的兼容性、响应速度等体验细节,
Camera 应用的开发者往往需要花很大的时间和精力进行测试,
甚至需要手动在数百种不同设备上进行测试。
简单的拍照功能,可以直接调用系统相机
但是当面对一些复杂的Camera页面定制时
小型开发团队往往显得束手无策
CameraX 正是为解决这个痛点而诞生的。
这篇文章,就来探索下谷歌jetpack库里的Camerax
看下它是如何帮助开发者更好地定制相机应用的
Camerax是什么
来自谷歌官方文档的介绍:
CameraX 是一个 Jetpack 支持库,
旨在帮助您简化相机应用的开发工作。
它提供一致且易用的 API 接口,适用于大多数 Android 设备,并可向后兼容至 Android 5.0(API 级别 21)。
虽然 CameraX 利用了 camera2 的功能,
但采取了一种具有生命周期感知能力且基于用例的更简单方式。
它还解决了设备兼容性问题,因此您无需在代码库中添加设备专属代码。
这些功能减少了将相机功能添加到应用时需要编写的代码量。
最后,借助 CameraX,开发者只需两行代码就能实现与预安装的相机应用相同的相机体验和功能。
CameraX Extensions 提供了一些可选的插件,让您可以在支持的设备上添加各种特效,例如人像、HDR、夜间和美颜模式。
关于Camerax支持的设备,可以参考官方文档的Camerax设备页
Camerax支持设备
Camerax优点和使用场景
1、CameraX 和 Lifecycle 结合在一起,方便开发者管理生命周期。且相比较 camera2 减少了大量样板代码的使用。
2、CameraX 是基于 Camera2 API 实现的,兼容至 Android L (API 21),从而确保兼容到市面上绝大多数手机
3、开发者可以通过扩展的形式使用和原生摄像头应用同样的功能(如:人像、夜间模式、HDR、滤镜、美颜)
4、Google 自己还打造了 CameraX 自动化测试实验室,对摄像头功能进行深度测试,确保能覆盖到更加广泛的设备。相当于 Google 帮我们把设备兼容测试工作给做了。
Camerax的功能,可以从下面几个方向研究
预览:在屏幕上显示图像
图像分析:无缝访问缓冲区中的图像以便在算法中使用,例如将其传入 MLKit
图片拍摄:保存优质图片
一般图像分析用的较少,要实现自定义相机
使用里面预览和拍摄功能即可
Camerax基础使用
初始化预览
初始化之前,记得检查拍照权限
//初始化相机
private fun initCamera(lensFacing: Int = CameraSelector.LENS_FACING_BACK) {
val cameraProviderFuture = ProcessCameraProvider.getInstance(this)
cameraProviderFuture.addListener(Runnable {
try {
cameraProvider = cameraProviderFuture.get()
preview = Preview.Builder().build()
//配置参数(后置摄像头等)注释的是自己配置的,其实系统提供了
//CameraSelector.DEFAULT_FRONT_CAMERA
//CameraSelector.DEFAULT_BACK_CAMERA
//两个默认的配置方法(一个是前置摄像头,一个是后置摄像头)
// Choose the camera by requiring a lens facing
// cameraSelector =
// CameraSelector.Builder()
// .requireLensFacing(lensFacing)
// .build()
if (l

本文深入探讨了Camerax在Android应用开发中的作用,详细介绍了其简化相机应用开发的优势及其实现复杂相机功能的方法。从预览、图像分析到图片拍摄,文章提供了丰富的示例代码,并总结了使用Camerax时应注意的关键点。
最低0.47元/天 解锁文章
849

被折叠的 条评论
为什么被折叠?



