Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Barcode scanning using react native

I am using react-native-camera to build a barcode scanner for Android and iOS both.

I am able to scan the barcode in iOS but the issue is there is no visual for the scanning boundary. And I want the whole screen to be able to scan the bar code not just the middle of the screen.

Is there any way around it? If there is some other library that would also work for me.

like image 876
Rohit Goyal Avatar asked Feb 10 '16 08:02

Rohit Goyal


3 Answers

I recommend using React Native Community's React Native Camera. It's quite well maintained and you can simply pass a callback prop to receive the output:

<RNCamera onBarCodeRead={this.handleBarCodeRead}></RNCamera>

Your callback will be invoked when a barcode is detected in the camera's view. From the docs:

Event contains data (the data in the barcode) and type (the type of the barcode detected).

like image 162
Sam Avatar answered Oct 22 '22 16:10

Sam


Well it took me all day but I finally found a library that worked. If anyone finds their way here and is looking for a barcode scanner for react native that works on android...I am here to help.

https://github.com/ideacreation/react-native-barcodescanner

1st if you do not have rnpm get it...it is very helpful!(npm install -g rnpm)(https://github.com/rnpm/rnpm)

then run these commands in your project file:

npm install --save react-native-barcodescanner

rnpm link react-native-barcodescanner

at this point I synced gradle and reran the app from android studios...not sure if it is needed(also sometimes rnpm link forgets a new line character...if you have an error message about the word include it is because this...just find it in your setting.gradle file add a new line before the word include)

now it is ready to use.

import it:

import BarcodeScanner from 'react-native-barcodescanner';

then use it in your render function's return statment:

<BarcodeScanner
    onBarCodeRead={this._BarCodeRead}
    style={styles.preview}
    torchMode='off'
    cameraType='back'
  />

If you need more info check out that link. I hope this helped someone avoid the torture I endured going through library after old library that did not work.

Happy coding! :)

like image 9
James Hollyer Avatar answered Oct 22 '22 16:10

James Hollyer


There is a react-native library for scanning QR codes with Highlighting scanning area with animated scan bar that moves up and down.

You can use isShowScanBar prop to show scan bar or either disable by passing false to this prop.

Github Link https://github.com/shifeng1993/react-native-qr-scanner#readme

It's npm is also here https://www.npmjs.com/package/react-native-qr-scanner

It's props are listed here https://www.npmjs.com/package/react-native-qr-scanner#qrscanner

Firstly, Install the react-native-camera library as this library is dependent on it.

Just run this command in root directory of your project npm i react-native-qr-scanner

then run this link command react-native link react-native-camera && react-native-qr-scanner

Import it using : import {QRscanner} from 'react-native-qr-scanner';

 <QRscanner onRead={this.onRead}
    cornerBorderColor ='black'
    cornerRadius={40}
    isRepeatScan = {true}
    cornerBorderRadius={40}
    cornerColor ='black'
    scanBarColor='black'
    cornerBorderWidth={10}
    cornerBorderLength={60}
    hintText="Please Align QRCode"
    renderBottomView={this.bottomView} flashMode={this.state.flashMode}
    finderY={50}/>

 onRead = (res) => {
   alert(JSON.stringify(res))
}

It works for both Android and iOS

like image 1
HarshitMadhav Avatar answered Oct 22 '22 16:10

HarshitMadhav