CameraX 概览
CameraX 是一个 Jetpack 支持库,旨在帮助您简化相机应用的开发工作。它提供一致且易用的 API 接口,适用于大多数 Android 设备,并可向后兼容至 Android 5.0(API 级别 21)。
虽然 CameraX 利用了 camera2 的功能,但采取了一种具有生命周期感知能力且基于用例的更简单方式。它还解决了设备兼容性问题,因此您无需在代码库中添加设备专属代码。这些功能减少了将相机功能添加到应用时需要编写的代码量。
最后,借助 CameraX,开发者只需两行代码就能实现与预安装的相机应用相同的相机体验和功能。CameraX Extensions 提供了一些可选的插件,让您可以在支持的设备上添加各种特效,例如人像、HDR、夜间和美颜模式。
核心 CameraX 库目前处于 Beta 版阶段。Beta 版功能稳定,并且具有特性完整的 API Surface。它们可以投入实际使用,但可能包含错误。
如需详细了解每个库的状态,请参阅 CameraX 库状态页面。
主要优势
CameraX 从以下几个方面改善了开发者体验:
易用性
图 1. CameraX 以 Android 5.0(API 级别 21)及更高版本为目标平台,涵盖了大多数 Android 设备
CameraX 引入了多个用例,使您可以专注于需要完成的任务,而无需花时间处理不同设备之间的细微差别。一些基本用例如下所示:
预览:在屏幕上显示图像
图像分析:无缝访问缓冲区中的图像以便在算法中使用,例如将其传入 MLKit
图片拍摄:保存优质图片
这些用例适用于搭载 Android 5.0(API 级别 21)或更高版本的所有设备,从而确保了同样的代码适用于市场中的大多数设备。
确保各设备间的一致性
图 2. 自动化 CameraX 测试实验室可确保在多种类型的设备和多个制造商之间实现一致的 API 体验。
要跨不同的应用实现一致的相机行为并非易事。需要考虑的因素有很多,其中包括宽高比、屏幕方向、旋转角度、预览大小和高分辨率图像大小。有了 CameraX,这些基本行为都不用您再费心。
我们投入资源打造了一个自动化 CameraX 测试实验室,用于测试搭载了 Android 5.0(API 级别 21)及更高版本的一系列设备和这些版本的操作系统中的各种相机行为。我们将持续运行这些测试,以找出各种各样的问题并进行修复。
我们的目标是逐步大幅减轻您的测试负担。
新的相机体验
图 3. CameraX 可助您实现新的应用内体验,例如人像特效。这是使用 CameraX 的 Huawei Mate 20 Pro 拍摄的图片,拍摄时使用了焦外虚化效果。
CameraX 有一个名为 Extensions 的可选插件,您只需两行代码,便可借助该插件实现与设备自带的原生相机应用相同的特性和功能。
首批可用功能包括人像、HDR、夜间和美颜模式。这些功能可在受支持的设备上使用。
案例研究
如需了解 CameraX 如何简化 Monzo 的开发工作,请参阅他们的案例研究。
其他资源
要详细了解 CameraX,请参阅下面列出的其他资源。
Codelab
代码示例