Fix QRCode scanner
This commit is contained in:
@@ -62,8 +62,8 @@ class QRScanActivity : AbstractActivity<ActivityQrScanBinding>() {
|
||||
} else {
|
||||
setResult(RESULT_CANCELED)
|
||||
finish()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private lateinit var imageAnalysis: ImageAnalysis
|
||||
private lateinit var imageAnalyzer: ImageAnalysis.Analyzer
|
||||
@@ -75,10 +75,21 @@ class QRScanActivity : AbstractActivity<ActivityQrScanBinding>() {
|
||||
}
|
||||
private val onFailure: (Exception) -> Unit = {
|
||||
lifecycleScope.launch {
|
||||
errorDialogBuilder(it).show()
|
||||
resetAnalyzer()
|
||||
errorDialogBuilder("MLKit error: ${it.localizedMessage}").show()
|
||||
}
|
||||
}
|
||||
private val vendorAnalyzer = Vendor.createQRCodeAnalyzer(onSuccess, onFailure)
|
||||
private var useVendorAnalyzer = vendorAnalyzer != null
|
||||
private fun resetAnalyzer() {
|
||||
if (useVendorAnalyzer) {
|
||||
useVendorAnalyzer = false
|
||||
imageAnalysis.clearAnalyzer()
|
||||
imageAnalyzer = ZxingQRCodeAnalyzer(onSuccess, onFailure)
|
||||
imageAnalysis.setAnalyzer(analysisExecutor, imageAnalyzer)
|
||||
}
|
||||
}
|
||||
|
||||
private lateinit var cameraProvider: ProcessCameraProvider
|
||||
private lateinit var cameraPreview: Preview
|
||||
private lateinit var camera: Camera
|
||||
@@ -146,11 +157,19 @@ class QRScanActivity : AbstractActivity<ActivityQrScanBinding>() {
|
||||
finish()
|
||||
}
|
||||
|
||||
override fun onPrepareOptionsMenu(menu: Menu?): Boolean {
|
||||
if (!useVendorAnalyzer) {
|
||||
menu!!.findItem(R.id.action_use_vendor_analyzer).also {
|
||||
it.isEnabled = false
|
||||
it.isChecked = false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
menuInflater.inflate(R.menu.qr_scan_menu, menu)
|
||||
if (vendorAnalyzer == null) {
|
||||
menu.findItem(R.id.action_use_vendor_analyzer).isEnabled = false
|
||||
} else {
|
||||
if (useVendorAnalyzer) {
|
||||
menu.findItem(R.id.action_use_vendor_analyzer).isChecked = true
|
||||
}
|
||||
return true
|
||||
|
||||
Reference in New Issue
Block a user