Min API Level = 21
Add the JitPack repository to your project level build.gradle
:
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}
Add this to your app build.gradle
:
dependencies {
implementation 'com.github.murgupluoglu:qrreader-android:lastVersion'
}
This library using Camera permission. Please grant permission before start.
<uses-permission android:name="android.permission.CAMERA"/>
Add QRReaderFragment to your XML like any other fragment.
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/qrCodeReaderFragment"
android:layout_width="0dp"
android:name="com.murgupluoglu.qrreader.QRReaderFragment"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Define your fragment for access later
val qrCodeReader : QRReaderFragment by lazy {
qrCodeReaderFragment as QRReaderFragment
}
Add listener for returned qr code.
qrCodeReaderView.setListener(object : QRReaderListener{
override fun onRead(barcode: FirebaseVisionBarcode, barcodes: List<FirebaseVisionBarcode>) {
}
override fun onError(exception: Exception) {
}
})
Start camera
qrCodeReaderView.startCamera(this@MainActivity)
Set configuration and enable torch
val qrOptions: BarcodeScannerOptions = BarcodeScannerOptions.Builder()
.setBarcodeFormats(
Barcode.FORMAT_QR_CODE,
Barcode.FORMAT_AZTEC)
.build()
val config = QRCameraConfiguration(lensFacing = CameraSelector.LENS_FACING_FRONT, options = qrOptions)
qrCodeReaderView.startCamera(this@MainActivity, config)
qrCodeReaderView.enableTorch(true)
If you have CameraX setup in your code. You can use only QRAnalyzer class.
imageAnalyzer.setAnalyzer(mainExecutor, QRAnalyzer(rotation, config.options).apply {
onFrameAnalyzed { qrStatus, barcode, barcodes, exeption ->
})