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