Android NDK开发详解相机之CameraX 概览


Android Jetpack 的一部分。

CameraX 是一个 Jetpack 库,旨在帮助您更轻松地开发相机应用。如果您要开发新应用,我们建议您从 CameraX 开始。它提供了一个一致且易于使用的 API,该 API 适用于绝大多数 Android 设备,并向后兼容 Android 5.0(API 级别 21)。如果您要将应用从 Camera1 迁移到 CameraX,请参阅从 Camera1 迁移到 CameraX 的迁移指南。
在这里插入图片描述

CameraX 使用入门

主要优势

CameraX 从几个主要方面改善了开发者体验。

广泛的设备兼容性

CameraX 支持搭载 Android 5.0(API 级别 21)或更高版本的设备,覆盖现有 Android 设备的 98% 以上。

易用性

CameraX 着重于用例,使您可以专注于需要完成的任务,而无需花时间处理不同设备之间的细微差别。CameraX 支持大多数常见的相机用例:

预览:在屏幕上查看图片。
图片分析:无缝访问缓冲区中的图片以便在算法中使用,例如将其传递到机器学习套件。
图片拍摄:保存图片。
视频拍摄:保存视频和音频。

确保各设备间的一致性

图 2. 自动化 CameraX 测试实验室可确保在多种类型的设备和多个制造商之间实现一致的 API 体验。
在这里插入图片描述

要维持一致的相机行为并非易事。您必须考虑宽高比、屏幕方向、旋转角度、预览大小和图像大小。有了 CameraX,这些基本行为都不用您再费心。

我们设立了一个自动化 CameraX 测试实验室,用于测试搭载 Android 5.0 及更高版本的一系列设备和这些操作系统版本中的各种相机行为。我们将持续运行这些测试,以找出各种各样的问题并进行修复。

相机扩展

图 3. 使用 CameraX 的焦外成像(人像)效果拍摄的图片。
在这里插入图片描述

CameraX 有一个可选的 Extensions API,您只需两行代码,便可借助该 API 实现与设备的原生相机应用相同的特性和功能。

扩展程序包含焦外成像(人像)、高动态范围 (HDR)、夜间模式和脸部照片修复功能,所有这些都需要设备支持。
在这里插入图片描述

案例研究

如需了解 CameraX 如何简化 Monzo 的开发工作,请参阅他们的案例研究。

Monzo 利用 CameraX 缩减了 9,000 多行代码并使注册流程中的访问者流失率降低了 5 倍

Monzo 是一家银行服务公司并提供了同名应用,仅在移动设备上提供数字金融服务。他们的使命是向每个人传授生财之道。为了完成新客户注册,Monzo 应用会拍摄身份证明文件(例如护照、驾照或身份证)的图片,并拍摄自拍视频来证明身份证明文件属于申请者。

策略

Monzo 应用的早期版本使用的是 camera2 API。在某些设备上会随机发生崩溃和异常行为,这导致 25% 的潜在客户无法继续进行身份证明拍摄和自拍视频步骤。

为了应对这些挑战,Monzo 转为采用 CameraX。这是一个 Jetpack 支持库,旨在简化相机应用的开发,以满足他们的图片和视频拍摄要求。通过 CameraView,Monzo 使用 takePicture() 方法实现了身份证明文件的图片拍摄。对于自拍视频,他们则使用了 startRecording() 和 stopRecording() 方法。他们希望从设计上更改注册流程,并希望相机库更为简洁,从而赋予他们更多设计灵活性。

结果

引入 CameraX 使 Monzo 得以简化代码,使代码更具可维护性,并且有助于简化开发。迁移到 CameraX 后,崩溃次数大幅减少,并且没有再出现相机闪光灯随机激活的现象。所有这些措施都有助于降低注册流程中的访问者流失率,并且获得了更多用户的正面反馈。

受益于 CameraX 的代码简化使得代码行数减少了约 9,000 行,其中包括 6,000 行界面代码。CameraX 的使用不仅使代码更易于维护、简化了开发工作,而且还提高了单元测试中的代码覆盖率。

重要的是,这对注册流程带来了非常大的影响。随着 CameraX 的引入以及流程设计的简化,身份证明图片拍摄和自拍视频录制流程中的访问者流失率从 25% 下降到了 5% 左右。

“对于我们来说,CameraX 的引入完全是为了提高稳定性,并为我们的开发者提供了轻松的集成体验。这个库给我们带来了非常理想的效果 - 我们只希望能够轻松拍摄图片和视频。CameraX 让我们实现了这个目标,而且我们的代码得到了简化,用户体验也得到了提升。”Anastasios Morfopoulos – Monzo 的 Android 开发者

开始使用

请查看 CameraX 文档,了解如何为应用或游戏引入更强大且经过简化的图片拍摄代码。

文档

CameraX 架构
配置选项
实现预览
图片分析
图片拍摄
视频拍摄
相机扩展
转换输出
用例旋转
实验室测试设备

其他资源

要详细了解 CameraX,请参阅下面列出的其他资源。
Codelab

CameraX 使用入门

代码示例

CameraX 示例应用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五一编程

程序之路有我与你同行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值