|
|
@@ -1,16 +1,19 @@
|
|
|
package io.legado.app.ui.qrcode
|
|
|
|
|
|
import com.google.zxing.Result
|
|
|
-import com.king.zxing.CaptureFragment
|
|
|
+import com.king.camera.scan.AnalyzeResult
|
|
|
+import com.king.camera.scan.CameraScan
|
|
|
+import com.king.camera.scan.analyze.Analyzer
|
|
|
+import com.king.zxing.BarcodeCameraScanFragment
|
|
|
import com.king.zxing.DecodeConfig
|
|
|
import com.king.zxing.DecodeFormatManager
|
|
|
import com.king.zxing.analyze.MultiFormatAnalyzer
|
|
|
+import com.king.zxing.analyze.QRCodeAnalyzer
|
|
|
|
|
|
+class QrCodeFragment : BarcodeCameraScanFragment() {
|
|
|
|
|
|
-class QrCodeFragment : CaptureFragment() {
|
|
|
-
|
|
|
- override fun initCameraScan() {
|
|
|
- super.initCameraScan()
|
|
|
+ override fun initCameraScan(cameraScan: CameraScan<Result>) {
|
|
|
+ super.initCameraScan(cameraScan)
|
|
|
//初始化解码配置
|
|
|
val decodeConfig = DecodeConfig()
|
|
|
//如果只有识别二维码的需求,这样设置效率会更高,不设置默认为DecodeFormatManager.DEFAULT_HINTS
|
|
|
@@ -24,9 +27,22 @@ class QrCodeFragment : CaptureFragment() {
|
|
|
cameraScan.setAnalyzer(MultiFormatAnalyzer(decodeConfig))
|
|
|
}
|
|
|
|
|
|
- override fun onScanResultCallback(result: Result?): Boolean {
|
|
|
- (activity as? QrCodeActivity)?.onScanResultCallback(result)
|
|
|
- return true
|
|
|
+ override fun createAnalyzer(): Analyzer<Result> {
|
|
|
+ // 初始化解码配置
|
|
|
+ val decodeConfig = DecodeConfig()
|
|
|
+ decodeConfig.setHints(DecodeFormatManager.QR_CODE_HINTS) //如果只有识别二维码的需求,这样设置效率会更高,不设置默认为DecodeFormatManager.DEFAULT_HINTS
|
|
|
+ .setFullAreaScan(false) //设置是否全区域识别,默认false
|
|
|
+ .setAreaRectRatio(0.8f) //设置识别区域比例,默认0.8,设置的比例最终会在预览区域裁剪基于此比例的一个矩形进行扫码识别
|
|
|
+ .setAreaRectVerticalOffset(0).areaRectHorizontalOffset =
|
|
|
+ 0 //设置识别区域水平方向偏移量,默认为0,为0表示居中,可以为负数
|
|
|
+
|
|
|
+ // BarcodeCameraScanActivity默认使用的MultiFormatAnalyzer,这里可以改为使用QRCodeAnalyzer
|
|
|
+ return QRCodeAnalyzer(decodeConfig)
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onScanResultCallback(result: AnalyzeResult<Result>) {
|
|
|
+ cameraScan.setAnalyzeImage(false)
|
|
|
+ (activity as? QrCodeActivity)?.onScanResultCallback(result.result)
|
|
|
}
|
|
|
|
|
|
}
|