class QRCodeAnalyzer(private val listener: (List) ->Unit) : ImageAnalysis.Analyzer {
@SuppressLint(“UnsafeExperimentalUsageError”)
override fun analyze(imageProxy: ImageProxy) {
val mediaImage = imageProxy.image
if (mediaImage != null) {
val image =
InputImage.fromMediaImage(mediaImage, imageProxy.imageInfo.rotationDegrees)
processImage(image = image, imageProxy = imageProxy)
}
}
private val options = BarcodeScannerOptions.Builder()
//设置扫码类型,支持同时设置多个
.setBarcodeFormats(Barcode.FORMAT_QR_CODE)
.build()
private val scanner = BarcodeScanning.getClient(options)
private fun processImage(image: InputImage, imageProxy: ImageProxy) {
scanner.process(image)
.addOnSuccessListener(listener)
.addOnFailureListener {
// Do nothing
}
.addOnCompleteListene
r {
imageProxy.close()
}
}
}