Android中的相机功能一直以来比较难用,截止目前出现了Camera,Camera2,Camera2支持API 21以上设备,要支持5.0一下还得需要Camera,Camera2比Camera更加复杂,更加灵活和解耦,但是然后用起来比较麻烦,因此CameraX就出现了,目前CameraX还是刚刚起步,还不是很稳定,版本还是1.0.0。CameraX 由两个概念来完成实现 Camera View 和 Camera Core。Camera View 可被单独用于处理基本的相机要求,比如拍照,录视频,生命周期管理以及相机切换等。而核心库能够搭配 Camera View 处理更复杂的 CameraX 实现。

一、Camrea整体架构
- 预览:接受用于显示预览的 Surface,例如
PreviewView。 - 图片分析:提供 CPU 可访问的缓冲区以进行分析(例如进行机器学习)。
- 图片拍摄:拍摄并保存照片。
不同用例可以相互组合使用,也可以同时处于活动状态。例如,应用中可以加入预览用例供用户查看进入相机视野的画面,加入图片分析用例来确定照片里的人物是否在微笑,以及包含一个图片拍摄用例以便在人物微笑时拍摄照片。
二、配置
1、依赖
google官方文档最新的CameraX稳定版本是:1.0.0-beta04,这里集成最新的稳定版。
implementation "androidx.camera:camera-core:1.0.0-beta04"
implementation "androidx.camera:camera-camera2:1.0.0-beta04"
implementation "androidx.camera:camera-view:1.0.0-alpha11"
implementation "androidx.camera:camera-lifecycle:1.0.0-beta04"
implementation "androidx.camera:camera-extensions:1.0.0-alpha09"
2、添加布局
<androidx.camera.view.PreviewView
android:id="@+id/preview_view"
android:layout_width="match_parent"
android:layout_height="240dp"
app:scaleType="fillCenter" />
app:scaleType表示相机宽高尺寸设置无法满足硬件本身显示条件时候的显示样式,这里是fillCenter表示居中。
previewView = findViewById(R.id.preview_view);
previewView.post(new Runnable() {
@Override
public void run() {
//动态获取宽高

本文深入探讨了Android CameraX库的使用,从整体架构到配置、预览、拍照及录像功能,提供了详细的代码示例与步骤说明。
最低0.47元/天 解锁文章
824

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



