CameraX 概览

CameraX 是一个 Jetpack 支持库,旨在帮助您简化相机应用的开发工作。它提供一致且易于使用的 API 界面,适用于大多数 Android 设备,并可向后兼容至 Android 5.0(API 级别 21)。

虽然它利用的是 camera2 的功能,但使用的是更为简单且基于用例的方法,该方法具有生命周期感知能力。它还解决了设备兼容性问题,因此您无需在代码库中包含设备专属代码。这些功能减少了将相机功能添加到应用时需要编写的代码量。

最后,借助 CameraX,开发者只需两行代码就能利用与预安装的相机应用相同的相机体验和功能。 CameraX Extensions 是可选插件,通过该插件,您可以在支持的设备上向自己的应用中添加人像、HDR、夜间模式和美颜等效果。

CameraX 库目前处于 Alpha 版测试阶段,因为其 API 界面尚未最终确定。我们不建议在生产环境中使用 Alpha 库。CameraX 库应在生产环境中严格避免依赖 Alpha 库,因为其 API 界面可能会以与源代码和二进制文件不兼容的方式发生变化。

主要优势

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,请参阅下面列出的其他资源。

Codelab

  • CameraX 使用入门
  • 向应用中添加 CameraView 片段
  • 代码示例

  • 官方 CameraX 示例应用