繁体   English   中英

ML Kit 条码扫描器在检测到第一个时不会停止

[英]ML Kit barcode Scanner don't stop when first is detected

我正在尝试使用条形码扫描仪(rawValue 和格式)从 cameraX 和 ML Kit 获取两个值,但是当检测到第一个时,我无法停止扫描并将数据插入房间。 我的代码在房间中插入了与过程中检测到的条码一样多的元素(多次相同的条码)

这是我在 processImageProxy function 中的 addOnSuccessListener:

   scanner.process(inputImage).addOnSuccessListener { barcodeList ->
                processBarcode(barcodeList)
            }

这是我保存数据的实际方法:

    private fun processBarcode(barcodeList: List<Barcode>) {
        if (barcodeList.isNotEmpty()) {
            with (barcodeList.first()) {

                activityCameraScannerViewModel.rawValue = this.rawValue.toString()
                activityCameraScannerViewModel.format = this.format.toString()
                activityCameraScannerViewModel.setNewCard()

                val intent = Intent(applicationContext, MainActivity::class.java)
                intent.putExtra("rawValue", this.rawValue.toString())
                intent.putExtra("format", this.format.toString())
                startActivity(intent)
            }
        }
    }

代码的实际结果是很多插入(随机数)。 我将不胜感激任何帮助。 如果有人需要更多代码,我将编辑问题。 谢谢。

简单解决:

将扫描器作为 processBarcode function 的参数传递并调用

scanner.close()

完整代码:

 private fun processBarcode(barcodeList: List<Barcode>, scanner: BarcodeScanner) {
        if (barcodeList.isNotEmpty()) {
            with (barcodeList.first()) {

                val rawValue = this.rawValue.toString()
                val format = this.format.toString()
                activityCameraScannerViewModel.rawValue = rawValue
                activityCameraScannerViewModel.format = format

                activityCameraScannerViewModel.setNewCard()
                val intent = Intent(applicationContext, MainActivity::class.java)
                startActivity(intent)
                scanner.close()
            }
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM