cameraX调用相机实例

本文介绍了在Android项目中使用CameraX调用相机并拍照的步骤,包括获取权限、导入依赖、布局设计和解决适配问题。在Android不同版本设备上测试时遇到了权限和相机显示异常的问题,强调了Android适配的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

这段时间公司的项目进行到了人脸检测的内容,因为刚实习还不精通,老板之说让我调出摄像头并且能够拍照就可以了,他的思路:每隔几秒钟客户端就自动拍照传递给后端,由后端判定人脸识别的信息。


一、获取权限

涉及到客户端的东西免不了需要向设备申请权限,因为项目需要做到拍照保存,所以我在AndroidManifest.xml中加入了申请权限的代码

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera.any" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

但是在实验过程中却显示未授予权限的信息,于是在网上又找到了在代码中直接获取权限的方式:

private void checkPermission() {
   
//        直接获取应用的拍照和存储权限
        ActivityCompat.requestPermissions(
                getActivity(), new String[]{
   Manifest.permission.CAMERA,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE,
                        Manifest.permission.READ_EXTERNAL_STORAGE,
                        Manifest.permission.RECORD_AUDIO
                }, 123456789
               //这个code我也不知道是什么东西,当初找资料的时候一并抄过来了
        );
    }

二、使用CameraX

1.导入依赖

代码如下:

def camerax_version = "1.2.0-rc01"
    implementation "androidx.camera:camera-core:${camerax_version}"
    implementation "androidx.camera:camera-camera2:${camerax_version}"
    implementation "androidx.camera:camera-lifecycle:${camerax_version}"
    implementation "androidx.camera:camera-view:${camerax_version}"

2.布局

代码如下(示例):

<androidx.camera.view.PreviewView
        android:id="@+id/viewFinder"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginEnd="10dp"
        android:layout_marginHorizontal="40dp"
        android:layout_marginVertical="60dp"
        app:layout_constraintBottom_toBottomOf="@+id/login_hor_back"
        app:layout_constraintEnd_toEndOf="@+id/login_hor_back"
        app:layout_constraintStart_toStartOf="@+id/login_hor_back"
        app:layout_constraintTop_toTopOf="@+id/login_hor_back" />

在写布局的时候遇到了一个问题,软件调用摄像头时页面会出现一条横线,后来经过指点发现是布局和设备不匹配的问题,原来的宽高是自定义宽高0dp根据其他控件位置来调整大小,改成全屏之后就没有那个问题了


3.具体代码

private 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值