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)
}