簡體   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