添加依赖
rootDir/build.gradle
allprojects { repositories { ... google { url 'https://maven.aliyun.com/repository/google' } }}module/build.gradle
dependencies { // Barcode model api 'com.google.mlkit:barcode-scanning:17.0.0'}扫码工具类
BarcodeScannerProcessor.kt
import android.graphics.Bitmapimport android.util.Logimport com.google.mlkit.vision.barcode.Barcodeimport com.google.mlkit.vision.barcode.BarcodeScannerimport com.google.mlkit.vision.barcode.BarcodeScanningimport com.google.mlkit.vision.common.InputImageimport java.util.concurrent.Executors
class BarcodeScannerProcessor {
private val barcodeScanner: BarcodeScanner = BarcodeScanning.getClient() private val executor = Executors.newSingleThreadExecutor()
fun stop() { barcodeScanner.close() executor.shutdown() }
fun processBitmap(bitmap: Bitmap, onNext: (barcode: Barcode?) -> Unit) { val image = InputImage.fromBitmap(bitmap, 0) barcodeScanner.process(image).continueWith(executor) { val barcodes = it.result if (barcodes.isEmpty()) { Log.v("BarcodeScanner", "No barcode has been detected") } onNext(barcodes.firstOrNull()) } }}使用方法
private final BarcodeScannerProcessor processor = new BarcodeScannerProcessor();
public void decodeByMlkit(Bitmap bitmap) { processor.processBitmap(bitmap, (barcode) -> { if (barcode != null) { // String text = barcode.getRawValue() // byte[] bytes = barcode.getRawBytes() } return null; });}
public void onScanDone() { processor.stop();}注意事项
TODO 待补充