SWITCH_SIMULSCAN_PARAMS
在 DataWedge 6.8 中引入。
用于将一个或多个 SimulScan 参数作为捆绑包进行传递,从而临时更新活动配置文件的设置。可随时使用此 API 来更改 SimulScan 设置,以响应更改的条件。例如,开发人员可能希望使应用程序能够通过编程方式更改输入模板或区域分隔符(在一天的各个时间或响应不同条件)。
注意:通过此 API 配置的设置会在下一次配置文件切换时废弃。
函数原型
Intent i = new Intent(); i.setAction("com.symbol.datawedge.api.ACTION"); i.putExtra("com.symbol.datawedge.api.SWITCH_SIMULSCAN_PARAMS", [bundle]);
参数
ACTION [字符串]:"com.symbol.datawedge.api.ACTION"
EXTRA_DATA [字符串]:"com.symbol.datawedge.api.SWITCH_SIMULSCAN_PARAMS"
EXTRA_DATA [捆绑包]:"<名称, 值>" - 接受以下 SimulScan 参数作为名称-值对:
simulscan_input_source
[字符串] - 用于数据捕获的输入设备。可能的值:- "Default" - 接受系统选择的默认扫描设备
- "Camera" - 选择主设备摄像头
- "Imager" - 选择设备上的内部成像器
simulscan_trigger_mode
[字符串] - 启用/禁用 Simulscan 的硬件触发器。可能的值:- "0" - 禁用硬件触发器
- "1" - 启用硬件触发器(默认值)
simulscan_template
[字符串] - 要使用的 XML 模板的文件名(例如 "BankCheck.xml")。文件必须驻留在设备上的/enterprise/device/settings/datawedge/templates
文件夹中。simulscan_region_separator
[字符串] - 要作为分隔符在数据区域之间插入的字符。可能的值:- "NONE"(默认值)
- "TAB" - Tab 字符
- "LF" - 换行符
- "CR" = 回车符
simulscan_log_dir
[字符串] - 更改设备上用于存储 SimulScan 日志的默认文件夹路径 (/storage/emulated/0/simulscan/logs
)。注意:SimulScan 日志记录由所使用的 SimulScan 模板进行启用/禁用;日志记录不由 DataWedge 控制。simulscan_enable_timestamp
[字符串] - 启用/禁用随已获取数据一起自动插入时间戳yyyy-mm-dd hh:mm:ss
。可能的值:- true
- false(默认值)
simulscan_template_params
[捆绑包] - 基于选定模板的用户定义自定义参数捆绑包。可能的值:dymanic_quantity
- 单次扫描中要解码的条码数(1-99;默认值=5)
了解关于 SimulScan 参数的更多信息。
结果代码
如果应用程序包括 Intent 额外项 RECEIVE_RESULT
和 COMMAND_IDENTIFIER
以使应用程序能够使用 DataWedge 结果 Intent 机制获取结果,则 DataWedge 返回以下错误代码。请参阅以下示例。
- VALUE_ALREADY_SET - 无参数集;等于以前存在的值
- PARAMETER_INVALID - 给定 SimulScan 参数无效或无法识别
- VALUE_INVALID - SimulScan 参数的给定值无效
有关更多信息,请参阅结果代码指南。
返回值
将错误和调试消息记录到可通过 logcat 命令查看和过滤的 Android 日志记录系统。从 ADB Shell 使用 logcat 查看日志消息:
$ adb logcat -s DWAPI
记录无效操作、缺少参数或其他故障的错误消息。
示例代码
下面的代码演示如何传递为活动配置文件中的当前扫描器切换 SimulScan 参数的 Intent。要验证切换的结果(或如果预期会出现错误),请包括 Intent 额外项 RECEIVE_RESULT
和 COMMAND_IDENTIFIER
以获取结果。
//Create param bundle Bundle paramBundle = new Bundle(); paramBundle.putString("simulscan_input_source", ”Camera”); paramBundle.putString("simulscan_template", ”BankCheck.xml”); //add dynamic parameters bundle Bundle templateParamsBundle = new Bundle(); templateParamsBundle.putString("dynamic_quantity",”3”); paramBundle.putBundle("simulscan_template_params",templateParamsBundle); paramBundle.putString("simulscan_region_separator", “TAB”); paramBundle.putString("simulscan_log_dir",”/storage/emulated/0/simulscan/logs”); paramBundle.putString("simulscan_enable_timestamp", “true”); Intent i = new Intent(); i.setAction("com.symbol.datawedge.api.ACTION"); i.putExtra("com.symbol.datawedge.api.SWITCH_SIMULSCAN_PARAMS", paramBundle); //request and identify the result code i.putExtra("SEND_RESULT","true"); i.putExtra("COMMAND_IDENTIFIER","123456789");//user specified unique id this.sendBroadcast(i);
接收结果
//get the results BroadcastReceiver resultReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String command = intent.getStringExtra("COMMAND"); String commandIdentifier = intent.getStringExtra("COMMAND_IDENTIFIER"); String result = intent.getStringExtra("RESULT"); Bundle bundle; String resultInfo = ""; if(intent.hasExtra("RESULT_INFO")){ bundle = intent.getBundleExtra("RESULT_INFO"); Set<String> keys = bundle.keySet(); for (String key: keys) { Object object = bundle.get(key); if(object instanceof String){ resultInfo += key + ": "+object+ "\n"; } else if(object instanceof String[]){ String[] codes = (String[])object; for(String code : codes){ resultInfo += key + ": "+code+ "\n"; } } } } String text = "Command: "+command+"\n" + "Result: " +result+"\n" + "Result Info: " +resultInfo + "\n" + "CID:"+commandIdentifier; Log.d("TAG",text); } };
备注
前提条件和假设:
- 必须启用 DataWedge 及相应的配置文件
- 应在活动配置文件中启用 SimulScan 输入
- 如果 Intent 包含无效或不受支持的扫描器参数或值,将会发送结果代码
另请参阅:
SimulScan 参数 | DataWedge 的 SimulScan 输入参数指南
SimulScan 用户指南 | 完整的 SimulScan 文档和用户指南
Zebra 支持中心 | 集成商指南、产品手册、软件下载和支持
LaunchPad | Zebra 开发人员社区
Intent | Android 开发人员
Intent 和 Intent 过滤器 | Android 开发人员
Android Intent | 教程