# BaseScanAndroid **Repository Path**: winsafe_app/base-scan-android ## Basic Information - **Project Name**: BaseScanAndroid - **Description**: Android各种设备的基础库,目前支持Honeywell,iData,Seuic(东集),NewLand(新大陆),Urovo(优博讯),XIAOBANG(肖邦),ZEBRA(斑马) - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 2 - **Created**: 2022-11-07 - **Last Updated**: 2025-12-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BaseScanAndroid #### 介绍 Android各种设备的基础库,目前支持Honeywell,iData,Seuic(东集),Newland(新大陆),UROVO(优博讯),XIAOBANG(肖邦),ZEBRA(斑马) #### 使用说明 1. 项目的根gradle下添加 allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 2. app的gradle下添加dependency依赖 implementation 'com.gitee.winsafe_app:base-scan-android:v1.4.0' 3. 在Application的onCreate()方法中初始化 public class MyApp extends MultiDexApplication { @Override public void onCreate() { super.onCreate(); // 初始化采集器扫描头 try { ScanInitHelper.init(this, new String[]{ScanDevice.HONEYWELL, ScanDevice.IDATA, ScanDevice.SEUIC, ScanDevice.NEWLAND, ScanDevice.UROVO, ScanDevice.XIAOBANG,ScanDevice.ZEBRA}); } catch (Exception e) { e.printStackTrace(); } } } 4. 继承BaseScanActivity,实现onScanResult(String code)方法 @Override protected void onScanResult(String idCode) { //此处处理扫描结果 Log.e(TAG,"onScanResult = " + idCode); } 5.如果扫码只在单个Fragment中进行,则可直接继承BaseScanFragment,实现onScanResult(String code)方法。 但是如果是同时在两个Fragment(例如:A Fragment 与 B Fragment)中进行扫码,需要注意在A Fragment 不显示时候执行unregisterScan(),然后B Fragment执行registerScan(),保证广播接收在正确页面。 如果是一个Activity中有多个Fragment,推荐方案为在Activity中统一接收扫描结果,然后通知Fragment进行扫码结果处理,避免Fragment不同的加载方法导致的生命周期调用不同而导致的暗坑。 6.也可以在自己项目的base类中,设置扫码相关代码实现 ` @Override protected void onResume() { super.onResume(); try { registerScan(); } catch (Exception e) { e.printStackTrace(); } } @Override protected void onPause() { super.onPause(); try { unregisterScan(); } catch (Exception e) { e.printStackTrace(); } } /** * 扫描注册 * onResume */ protected void registerScan() { //Honeywell HoneywellScanner.mHandler = mHandler; HoneywellScanner.registerBroadcastReceiver(); HoneywellScanner.startScanner(); //iData IDataScanner.mHandler = mHandler; IDataScanner.registerBroadcastReceiver(); //Seuic 东集 SeuicScanner.mHandler = mHandler; SeuicScanner.registerSeuicBroadcastReceiver(); //Newland NewlandScanner.mHandler = mHandler; NewlandScanner.registerBroadcastReceiver(); //优博讯 UrovoScanner.mHandler = mHandler; UrovoScanner.registerBroadcastReceiver(); //肖邦 XiaoBangScanner.mHandler = mHandler; XiaoBangScanner.registerBroadcastReceiver(); //斑马 ZebraScanner.mHandler = mHandler; ZebraScanner.registerBroadcastReceiver(); } /** * 解绑扫描 * onPause */ protected void unregisterScan() { //Honeywell HoneywellScanner.unregisterBroadcastReceiver(); HoneywellScanner.stopScanner(); //iData IDataScanner.unregisterBroadcastReceiver(); //Seuic 东集 SeuicScanner.unregisterSeuicBroadcastReceiver(); //iData NewlandScanner.unregisterBroadcastReceiver(); //优博讯 UrovoScanner.unregisterBroadcastReceiver(); //肖邦 XiaoBangScanner.unregisterBroadcastReceiver(); //斑马 ZebraScanner.unregisterBroadcastReceiver(); } /** * 获取数据 */ private Handler mHandler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message message) { switch (message.what) { case HoneywellScanResultReceiver.READ_RESULT: case ScanResultReceiver.READ_RESULT: String result = (String) message.obj; onScanResult(result); break; } return false; } }); public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_F9 && event.getRepeatCount() == 0) { try { IDataScanner.startScanning(); SeuicScanner.startScanning(); NewlandScanner.startScanning(); UrovoScanner.startScanning(); XiaoBangScanner.startScanning(); ZebraScanner.startScanning(); } catch (Exception e) { e.printStackTrace(); } return true; } return super.onKeyDown(keyCode, event); } public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_F9) { try { IDataScanner.stopScanning(); SeuicScanner.stopScanning(); NewlandScanner.stopScanning(); UrovoScanner.stopScanning(); XiaoBangScanner.stopScanning(); ZebraScanner.stopScanning(); } catch (Exception e) { e.printStackTrace(); } return true; } return super.onKeyUp(keyCode, event); } /** * 扫码结果,如果页面不需要,在实现后,不做处理即可 * * @param idCode */ protected abstract void onScanResult(String idCode); `