📅  最后修改于: 2023-12-03 15:37:06.098000             🧑  作者: Mango
BarCodeScanner 是一个基于 React Native 开发的用于扫描条码的组件。它能够捕捉各种类型的条码,提供了丰富的配置选项和回调函数,具有高度的可定制性和灵活性,适用于多种场景和应用。
import React, { useState } from 'react';
import { StyleSheet, Text, View, Button } from 'react-native';
import { BarCodeScanner } from 'expo-barcode-scanner';
export default function App() {
const [hasPermission, setHasPermission] = useState(null);
const [scanned, setScanned] = useState(false);
const handleBarCodeScanned = ({ type, data }) => {
setScanned(true);
alert(`Bar code with type ${type} and data ${data} has been scanned!`);
};
const askForCameraPermission = () => {
(async () => {
const { status } = await BarCodeScanner.requestPermissionsAsync();
setHasPermission(status === 'granted');
})();
};
if (hasPermission === null) {
return <View><Text>Requesting for camera permission</Text></View>;
}
if (hasPermission === false) {
return <View><Text>No access to camera</Text></View>;
}
return (
<View style={styles.container}>
<BarCodeScanner
onBarCodeScanned={scanned ? undefined : handleBarCodeScanned}
style={StyleSheet.absoluteFillObject}
/>
{scanned && <Button title={'Tap to Scan Again'} onPress={() => setScanned(false)} />}
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
});
BarCodeScanner 组件的常见参数和属性如下:
onBarCodeScanned
: 回调函数,当扫描到条码时触发,可通过参数获取条码信息;barCodeTypes
: 数组类型,指定支持扫描的条码类型和格式,默认为所有类型;type
: 字符串类型,指定扫描的条码类型,默认为二维码;torchMode
: 字符串类型,指定照明模式,可选值为 off、on、auto,默认为 off;cameraType
: 字符串类型,指定前后摄像头,可选值为 front、back,默认为 back;focusMode
: 字符串类型,指定聚焦模式,可选值为 on、off、auto,默认为 on;ratio
: 字符串类型,指定相对尺寸,可选值为 16:9、4:3、1:1、2:3、3:4、9:16,默认为 16:9;useCamera2Api
: 布尔类型,指定是否使用 Camera2 API,默认为 false;barCodeScannerSettings
: 对象类型,表示扫描器的配置信息,包括各种选项和参数,比如扫描区域、光源强度、扫描线颜色、提示信息等;style
: 对象类型,指定组件的样式和布局,如位置、大小、背景等。