RN实现摄像头扫码功能

第三方包为

react-native-vision-camera

自行安装

js 复制代码
yarn add react-native-vision-camera

安卓和ios权限配置

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

js 复制代码
<uses-permission android:name="android.permission.CAMERA" />

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

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

RN代码如下

js 复制代码
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>
  );
}

扫描到的结果

相关推荐
Sailing13 分钟前
🚀AI 写代码越来越快,但我开始不敢上线了
前端·后端·面试
Alair‎13 分钟前
Vue 3 基础教程:从入门到精通
前端·javascript·vue.js
Sylvia33.15 分钟前
体育数据API实战:用火星数据实现NBA赛事实时比分与状态同步
java·linux·开发语言·前端·python
码农阿豪16 分钟前
Vue+Ant Design表格组件开发实战:从问题到优化的完整指南
前端·javascript·vue.js
QQ243919717 分钟前
spring boot医院挂号就诊系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·vue.js·spring boot
用户693717500138419 分钟前
OS级AI Agent:手机操作系统的下一个战场
android·前端·人工智能
百锦再19 分钟前
Vue不是万能的:前后端不分离开发的优势
前端·javascript·vue.js·前端框架·vue
毕设源码_王学姐20 分钟前
2026毕设ssm+vue民宿管理系统论文+程序
前端·vue.js·课程设计
程序员鱼皮20 分钟前
万字干货 | OpenClaw 进阶玩法大全:技能 / 多 Agent / 省钱 / 安全,50+ 实战技巧一次学会
前端·后端·ai编程
一天拉了7遍21 分钟前
安利一款超实用的前端可视化打印设计器:Vue Print Designer
前端·javascript·vue.js