枚举扫描器

DataWedge 7.4

ENUMERATE_SCANNERS

在 DataWedge 6.3 中引入。

在设备上生成可用扫描器的编号列表(索引)。

重要说明:扫描器索引并非在所有设备上都是固定的。根据在生成索引时安装和/或连接到设备受支持的内部和/或外部扫描器数量,它会有所不同。

函数原型

Intent i = new Intent(); i.setAction("com.symbol.datawedge.api.ACTION"); i.putExtra("com.symbol.datawedge.api.ENUMERATE_SCANNERS", "");

参数

ACTION [字符串]:"com.symbol.datawedge.api.ENUMERATE_SCANNERS"

返回值

通过广播 Intent 返回扫描器的枚举列表 com.symbol.datawedge.api.ACTION_ENUMERATEDSCANNERLIST。扫描器列表作为字符串数组返回(请参见下面内容)。

捆绑包额外项

SCANNER_NAME [字符串]:

SCANNER_INDEX [字符串]:

SCANNER_CONNECTION_STATE [字符串]:

SCANNER_IDENTIFIER [字符串]:在设备中支持的每个扫描器的每个扫描器信息捆绑包中(在 DataWedge 6.5 中引入)。DataWedge 6.6 及更高版本支持这两个参数;如果在代码中也引用了索引,则扫描器标识符值优先。

可能的值

  • AUTO - 自动扫描器选择
  • INTERNAL_IMAGER - 内置成像器扫描器
  • INTERNAL_LASER - 内置激光扫描器
  • INTERNAL_CAMERA - 内置摄像头扫描器
  • SERIAL_SSI - 用于 ET50/ET55 的可插入 Z 式背面扫描器
  • BLUETOOTH_SSI - RS507 蓝牙扫描器
  • BLUETOOTH_RS6000 - RS6000 蓝牙扫描器
  • BLUETOOTH_DS3678 - DS3678 蓝牙扫描器
  • PLUGABLE_SSI - 串行 SSI 扫描器 RS429(与 WT6000 一起使用)
  • PLUGABLE_SSI_RS5000 - 串行 SSI 扫描器 RS5000(与 WT6000 一起使用)
  • USB_SSI_DS3608 - DS3608 可插入 USB 扫描器

将错误和调试消息记录到可通过 logcat 命令查看和过滤的 Android 日志记录系统。从 ADB Shell 使用 logcat 查看日志消息:

$ adb logcat -s DWAPI

记录无效操作和参数的错误消息。

示例代码

枚举扫描器

// // Call before sending the enumeration query // public void registerReciever(){ IntentFilter filter = new IntentFilter(); filter.addAction("com.symbol.datawedge.api.RESULT_ACTION");//RESULT_ACTION filter.addCategory(Intent.CATEGORY_DEFAULT); registerReceiver(enumeratingBroadcastReceiver, filter); } // // Send the enumeration command to DataWedge // public void enumerateScanners(){ Intent i = new Intent(); i.setAction("com.symbol.datawedge.api.ACTION"); i.putExtra("com.symbol.datawedge.api.ENUMERATE_SCANNERS", ""); this.sendBroadcast(i); } public void unRegisterReciever(){ unregisterReceiver(enumeratingBroadcastReceiver); } // // Create broadcast receiver to receive the enumeration result // private BroadcastReceiver enumeratingBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.d(TAG, "Action: " + action); if(action.equals("com.symbol.datawedge.api.RESULT_ACTION")){ // // enumerate scanners // if(intent.hasExtra("com.symbol.datawedge.api.RESULT_ENUMERATE_SCANNERS")) { ArrayList<Bundle> scannerList = (ArrayList<Bundle>) intent.getSerializableExtra("com.symbol.datawedge.api.RESULT_ENUMERATE_SCANNERS"); if((scannerList != null) && (scannerList.size() > 0)) { for (Bundle bunb : scannerList){ String[] entry = new String[4]; entry[0] = bunb.getString("SCANNER_NAME"); entry[1] = bunb.getBoolean("SCANNER_CONNECTION_STATE")+""; entry[2] = bunb.getInt("SCANNER_INDEX")+""; entry[3] = bunb.getString("SCANNER_IDENTIFIER"); Log.d(TAG, "Scanner:" + entry[0] + " Connection:" + entry[1] + " Index:" + entry[2] + " ID:" + entry[3]); } } } } } };

获取扫描器详细信息

// RESULT_ACTION_EXTRA_ENUMERATE_SCANNERS if(intent.hasExtra("com.symbol.datawedge.api.RESULT_ENUMERATE_SCANNERS")) { Log.d(TAG, ">>> RESULT_ACTION_EXTRA_ENUMERATE_SCANNERS <<<"); ArrayList<Bundle> scannerList = (ArrayList<Bundle>) intent.getSerializableExtra("com.symbol.datawedge.api.RESULT_ENUMERATE_SCANNERS"); if((scannerList != null) && (scannerList.size() > 0)) { for ( Bundle bunb: scannerList) { String ScannerName = bunb.getString("SCANNER_NAME"); int ScannerIndex = bunb.getInt("SCANNER_INDEX")); Boolean ScannerConnectionState = bunb.getBoolean("SCANNER_CONNECTION_STATE"); String ScannerId = bunb.getString("SCANNER_IDENTIFIER"); } } }

注释

基于当前处于活动状态的“配置文件”设置扫描器及其参数。


另请参阅

Zebra 支持中心 | 集成商指南、产品手册、软件下载和支持

LaunchPad | Zebra 开发人员社区

Intent | Android 开发人员

Intent 和 Intent 过滤器 | Android 开发人员

Android Intent | 教程