[[oktatas:telefon:react_native|< React Native]]
====== BarCodeScanner ======
* **Szerző:** Sallai András
* Copyright (c) Sallai András, 2023
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== Telepítés =====
A BarCodeScanner telepítése:
npx expo install expo-barcode-scanner
===== Alap példa =====
A következő példa egy másolat a következő oldalról, magyar nyelvre átírva:
* https://docs.expo.dev/versions/v48.0.0/sdk/bar-code-scanner/
import { BarCodeScanner } from 'expo-barcode-scanner';
import { StatusBar } from 'expo-status-bar';
import { useEffect, useState } from 'react';
import { Button, StyleSheet, Text, View } from 'react-native';
export default function App() {
const [hasPermission, setHasPermission] = useState(null);
const [scanned, setScanned] = useState(false);
useEffect(() => {
const getBarCodeScannerPermissions = async () => {
const { status } = await BarCodeScanner.requestPermissionsAsync();
setHasPermission(status === 'granted');
};
getBarCodeScannerPermissions();
}, []);
const handleBarCodeScanned = ({ type, data }) => {
setScanned(true);
alert(`A vonalkód típusa ${type}\nAz olvasott adat: ${data}`);
};
if (hasPermission === null) {
return Szükséges a kamerához hozzáférés;
}
if (hasPermission === false) {
return A kamera nem elérhető;
}
return (
{scanned &&
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
});
===== Bővített példa =====
A kamera-olvasó nem jelenik meg azonnal. Gombnyomásra indul.
import { BarCodeScanner } from 'expo-barcode-scanner';
import { StatusBar } from 'expo-status-bar';
import { useEffect, useState } from 'react';
import { Button, StyleSheet, Text, View } from 'react-native';
export default function App() {
const [hasPermission, setHasPermission] = useState(null);
const [scanned, setScanned] = useState(false);
const [scanning, setScanning] = useState(false);
useEffect(() => {
const getBarCodeScannerPermissions = async () => {
const { status } = await BarCodeScanner.requestPermissionsAsync();
setHasPermission(status === 'granted');
};
getBarCodeScannerPermissions();
}, []);
const handleBarCodeScanned = ({ type, data }) => {
setScanned(true);
alert(`A vonalkód típusa ${type}\nAz olvasott adat: ${data}`);
};
if (hasPermission === null) {
return Szükséges a kamerához hozzáférés;
}
if (hasPermission === false) {
return A kamera nem elérhető;
}
return (
A "Szkennelés" gombra kattintva elindual a QR-kód szkenner.
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
});
===== Linkek =====
* https://www.qrcode.com/en/ (2023)