需求:1.扫描界面不全屏。2.识别一次后不跳转,继续识别。
如何设置竖屏扫描,和调节全屏的扫描区域在此不再讲解,网上有一大堆教程。
扫描界面不全屏
比如扫描界面有Toolbar
,或者底部有选项卡的如何处理?
CameraConfigurationManager.initFromCameraParameters()
方法默认会根据全屏的宽高来计算相机扫描区域的位置,只需修改此方法和CameraManager.openDriver()
的入参,把SurfaceView
的父容器当作参数传入。同时修改CameraConfigurationManager.initFromCameraParameters()
中计算screenResolution
的代码为
screenResolution = new Point(scanArea.getWidth(), scanArea.getHeight());
这样识别区域就调整到SurfaceView
父容器正中了。当然,画扫描框的代码还是需要修改的。
识别一次后不跳转,继续识别。
修改实现扫描界面的Activity
和Fragment
中的handleDecode()
方法,注释掉inactivityTimer.onActivity()
,然后把 CaptureActivityHandler.restartPreviewAndDecode()
修改为pulibc
,在handleDecode()
方法最后添加如下代码:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
CameraManager.get().startPreview();
handler.restartPreviewAndDecode();
}
}, 5000);
}
其中handler
为CaptureActivityHandler
的对象。