android 扫码

45 阅读1分钟

1.加入依赖

com.github.jenly1314.MLKit:mlkit-common:2.0.1
com.github.jenly1314.MLKit:mlkit-barcode-scanning:2.0.1

2.布局文件里加入, visibility 可以控制是否显示扫描框

<androidx.camera.view.PreviewView
    android:id="@+id/previewView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="invisible"/>

3.fragment继承 BaseCameraScanFragment

Fragment: BaseCameraScanFragment<List<Barcode>>()

override fun getLayoutId(): Int {
    return R.layout.fragment_input
}

override fun getPreviewViewId(): Int {
    return R.id.previewView
}
override fun initCameraScan(cameraScan: CameraScan<List<Barcode>>) {
    super.initCameraScan(cameraScan)
    cameraScan.setPlayBeep(true)
        .setVibrate(true)
}

override fun onScanResultCallback(result: AnalyzeResult<List<Barcode>>) {
    cameraScan.setAnalyzeImage(false)
    Toast.makeText(requireContext(), "${result.result.first().rawValue}", Toast.LENGTH_SHORT).show()
    mBinding.edtInput.setText("${result.result.first().rawValue}")

    result.result.first().rawValue?.let {}
}

override fun createAnalyzer(): Analyzer<List<Barcode>>? {
    return BarcodeScanningAnalyzer(Barcode.FORMAT_ALL_FORMATS)
}

override fun onResume() {
    super.onResume()
    mBinding.edtInput.setText("")
    cameraScan.setAnalyzeImage(true)
}

override fun onPause() {
    super.onPause()
    cameraScan.setAnalyzeImage(false)
}