Skip to content

内置扫码模块

软解码

language
// 注:使用该接口需确认当前硬件是否具备内置扫描
// 导入 class
import com.hcd.hcdpos.scannermanager.scannerdecode.ScannerDecode;

// 定义内置扫码类
private ScannerDecode mScannerDecode;

// 初始化,如可放置于 onCreate 中
mScannerDecode = new ScannerDecode(this);

// 判断当前设备是否支持,在硬件支持的情况下,再使用扫码功能;
// 软解 & 硬解 选择其一,硬件上只会支持其中一种;
// 支持 软解的扫码模块
boolean isSupportSW = mScannerDecode.isSupportScanner();

// 启动 & 结束 必须成对出现,启动一次,必须有一次结束,不允许交叉调用 (如启动两次) ; // 启动扫码,带监听,预览 & 不需要预览,同一时刻只能选择一种 ;
// 启动&关闭 扫码因为会打开&关闭摄像头,建议在子线程中执行;
// 带预览的界面,建议在 预览窗体 SurfaceView 绘制好之后 200ms,再启动扫码;

/* 扫描头不需要预览 Sample */
private void initScannerDecodeListener() {
mScannerDecode.startSoftwareScanCode(new
ScannerDecode.ScannerValueListener() {
@Override
public void onScannerValue(String value) {
// String value 即为扫描的结果;

                            // 如果在收到扫描内容后,想重新出发扫描执行如下屏蔽部分
                            // mScannerDecode.releaseSoftwareScanCode();
                            // initScannerDecodeListener();
                      }              
           });

/* 需要预览 Sample */
<SurfaceView
android:id="@+id/camerascanner_preview"
android:layout_width="400dip"
android:layout_height="300dip"
android:layout_gravity="center" />

private void initScannerDecodeListener() {
mScannerDecode.startScanCode(new ScannerDecode.ScannerValueListener() { @Override
public void onScannerValue(String value) {
// String value 即为扫描的结果;

                                // 如果在收到扫描内容后,想重新出发扫描执行如下屏蔽部分
                                // mScannerDecode.releaseSoftwareScanCode();
                                // initScannerDecodeListener();
                      }
           },
           ((SurfaceView) findViewById(R.id.camerascanner_preview)).getHolder()); 
}

// 关闭扫码模块(使用完需调用)
mScannerDecode.stopScanCode()
mScannerDecode = null; //建议释放

硬解码

language
// 注:使用该接口需确认当前硬件是否具备内置扫描
// 导入 class
import com.hcd.hcdpos.scannermanager.scannerdecode.ScannerDecode;

// 定义内置扫码类
private ScannerDecode mScannerDecode;

// 初始化,如可放置于 onCreate 中
mScannerDecode = new ScannerDecode(this);

// 判断当前设备是否支持,在硬件支持的情况下,再使用扫码功能;
// 如下软解 & 硬解 选择其一,硬件上只会支持其中一种;
// 支持 硬解的扫码模块
boolean isSupportHW = mScannerDecode.isSupportHWScanner();

// 启动 & 结束 必须成对出现,启动一次,必须有一次结束,不允许交叉调用 (如启动两次) ; // 启动扫码,带监听,当有扫码内容时,监听即可收到扫描内容;
// 持续扫描过程,无需 结束+重新启动,只需要 一直等待监听即可;
// 不在需要扫码的时候,再将 扫码 结束

/* 硬解扫描头 */
private void initHWScannerDecodeListener() {
mScannerDecode.startScanCode(new ScannerDecode.ScannerValueListener() { @Override
public void onScannerValue(String value) {
// String value 即为扫描的结果,此处无需重新触发,持续等待 value 值回调即可
Log.d(TAG, "onScannerValue value: " + value);
}
});
}

// 关闭扫码模块(使用完需调用)
mScannerDecode.stopScanCode()  mScannerDecode = null; //建议释放