CameraX实现预览、拍照、录制视频

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

 

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() {
                //动态获取宽高
         
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值