[英]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.