RN实现摄像头扫码功能

第三方包为

react-native-vision-camera

自行安装

yarn add react-native-vision-camera

安卓和ios权限配置

安卓配置
android/app/src/AndroidManifest.xml 加入以下代码

<uses-permission android:name="android.permission.CAMERA" />

android/gradle.properties 加入下面这行代码,用以下载扫码模块,代表开启二维码条形码扫描(不添加下面这行会报错,会一直提示正在等待扫码模块下载)

VisionCamera_enableCodeScanner=true // 我在这个文件最后一行加的,各位随意

ios配置
ios/项目名/Info.plist 加入以下代码

// 获取相机权限
<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) needs access to your Camera.</string>

RN代码如下

import React, {useEffect, useState} from 'react';
import {View, Text, Platform, Button} from 'react-native';
import {
  Camera,
  useCodeScanner,
  useCameraPermission,
  useCameraDevice,
} from 'react-native-vision-camera';

export default function App() {
  const [checked, setChecked] = useState(false); // 获取权限,当有了权限再打开摄像头
  const device = useCameraDevice('back'); // 控制扫码为后置摄像头
  const {hasPermission, requestPermission} = useCameraPermission(); // 获取/申请权限(第一次需要申请,后续不用)
  useEffect(() => {
    requestPermission(); // 进入页面申请权限
    setChecked(hasPermission); // 获取权限结果
  }, []);

  const codeScanner = useCodeScanner({ // 后置扫码主要组件
    codeTypes: ['qr', 'ean-13'],
    onCodeScanned: codes => {
      console.log('codes', codes);
      console.log(`Scanned ${codes.length} codes!`);
    },
  });

  return (
    <View>
      <Button
        title="获取权限"
        onPress={() => {
          setChecked(hasPermission); // 点击按钮获取权限(因为第一次安装软件,获取完权限后页面不会立即显示,需要点一下按钮,后续不用)
        }}></Button>
      {device && checked ? (
        <Camera
          style={{width: 200, height: 400}}
          device={device}
          isActive={true}
          codeScanner={codeScanner}
        />
      ) : (
        <Text>未获取权限</Text>
      )}
    </View>
  );
}

扫描到的结果
在这里插入图片描述

相关推荐

  1. uniapp 功能

    2024-04-08 16:52:04       40 阅读
  2. 微信小程序如何实现一键连WiFi功能

    2024-04-08 16:52:04       16 阅读
  3. Android方案

    2024-04-08 16:52:04       33 阅读
  4. uniapp前置摄像头拍照功能怎么实现

    2024-04-08 16:52:04       36 阅读
  5. asp.net+h5网页调用摄像头实现拍照功能

    2024-04-08 16:52:04       26 阅读
  6. vue3 html5-qrcode 实现扫描二维 仿照wx样式

    2024-04-08 16:52:04       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 16:52:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 16:52:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 16:52:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 16:52:04       18 阅读

热门阅读

  1. GO - 标准库

    2024-04-08 16:52:04       15 阅读
  2. Hamilton-Jacobi-Bellman (HJB) 方程

    2024-04-08 16:52:04       17 阅读
  3. 第十四届蓝桥杯省赛大学B组填空题(c++)

    2024-04-08 16:52:04       13 阅读
  4. Android Apk签名算法使用SHA256

    2024-04-08 16:52:04       17 阅读
  5. C++ 动态字符串String的介绍及经典用法展示

    2024-04-08 16:52:04       15 阅读
  6. linux知识点

    2024-04-08 16:52:04       13 阅读