Open cch-dev-arch opened 3 years ago
这里一定要判断result和result.text的, 你需要识别成功仍然启动就调用unProscibeCamera()。 记得star , 谢谢
加过判断,也调用了unProscibeCamera()
,识别后还是会停止
我的理解是,FreeZxingView
中的onParseResult
在执行resultBackFile
后对相机进行了操作
没有识别到二维码则执行
resultBackFile(null)
unProscibeCamera()
这里会重新启用相机, 识别到二维码则会执行
resultBackFile(result)
scanSucHelper()
而在scanSucHelper中调用了onCameraPause,所以相机停止了
private final void scanSucHelper() {
this.onCameraPause();
AbleManager var10000 = this.ableCollect;
if (var10000 != null) {
var10000.clear();
}
ScanBarCallBack var1 = this.getScanBarView();
if (var1 != null) {
var1.stopScanAnimator();
}
VibrateHelper.playVibrate();
VibrateHelper.playBeep();
}
如果需要在resultBackFile中启用相机生效,可能需要调整调用顺序为:
scanSucHelper()
resultBackFile(result)
也可能是我理解不到位,请见谅
unProscibeCamera() 放在scanSucHelper() 之后执行
我是继承的NBZxingView,onParseResult和scanSucHelper是FreeZxingView的私有方法,这两没法改动的吧
外边改的话,只能加一个延迟了
使用unProscibeCamera()会卡ui一下
使用parseFile识别图片,当识别不出时会重新启用相机,但是识别成功后默认就会关闭相机,无法在resultBackFile中控制重新启用相机。 FreeZxingView中 private fun onParseResult(result: com.ailiwean.core.zxing.core.Result?) {
这块调整为 scanSucHelper(); resultBackFile(result); 是否更好?