KEMBAR78
MainActivity KT | PDF | Mobile Linux | Input/Output
0% found this document useful (0 votes)
27 views3 pages

MainActivity KT

Uploaded by

wasif alvi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views3 pages

MainActivity KT

Uploaded by

wasif alvi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

package com.example.

googleqrscanner

import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.google.android.gms.common.moduleinstall.ModuleInstall
import com.google.android.gms.common.moduleinstall.ModuleInstallRequest
import com.google.mlkit.vision.barcode.common.Barcode
import com.google.mlkit.vision.codescanner.GmsBarcodeScanner
import com.google.mlkit.vision.codescanner.GmsBarcodeScannerOptions
import com.google.mlkit.vision.codescanner.GmsBarcodeScanning

class MainActivity : AppCompatActivity() {


private lateinit var scanQrBtn: Button
private lateinit var scannedValueTv: TextView
private var isScannerInstalled = false
private lateinit var scanner: GmsBarcodeScanner

override fun onCreate(savedInstanceState: Bundle?) {


super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_main)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets

}
installGoogleScanner()
initVars()
registerUiListener()
}
private fun installGoogleScanner() {
val moduleInstall = ModuleInstall.getClient(this)
val moduleInstallRequest = ModuleInstallRequest.newBuilder()
.addApi(GmsBarcodeScanning.getClient(this))
.build()

moduleInstall.installModules(moduleInstallRequest).addOnSuccessListener {
isScannerInstalled = true
}.addOnFailureListener {
isScannerInstalled = false
Toast.makeText(this, it.message, Toast.LENGTH_SHORT).show()
}
}

private fun initVars() {


scanQrBtn = findViewById(R.id.scanQrBtn)
scannedValueTv = findViewById(R.id.scannedValueTv)

val options = initializeGoogleScanner()


scanner = GmsBarcodeScanning.getClient(this, options)
}

private fun initializeGoogleScanner(): GmsBarcodeScannerOptions {


return GmsBarcodeScannerOptions.Builder().setBarcodeFormats(Barcode.FORMAT_QR_CODE)
.enableAutoZoom().build()
}

private fun registerUiListener() {


scanQrBtn.setOnClickListener {
if (isScannerInstalled) {
startScanning()
} else {
Toast.makeText(this, "Please try again...", Toast.LENGTH_SHORT).show()
}
}
}

private fun startScanning() {


scanner.startScan().addOnSuccessListener {
val result = it.rawValue
result?.let {
scannedValueTv.text = buildString {
append("Scanned Value : ")
append(it)
}
}
}.addOnCanceledListener {
Toast.makeText(this, "Cancelled", Toast.LENGTH_SHORT).show()

}
.addOnFailureListener {
Toast.makeText(this, it.message, Toast.LENGTH_SHORT).show()

}
}
}

You might also like