SET_CONFIG
Used to create, update or replace a DataWedge Profile and its settings, and can configure multiple options with a single intent action. SET_CONFIG
implements nested bundles, where a PARAM_LIST
(parameter list) bundle can be nested within its corresponding PLUGIN_CONFIG
(option based on input, data processing, utilities, or output) bundle, which can then be nested within the main SET_CONFIG
bundle. Multiple PLUGIN_CONFIG
bundles can be nested within the SET_CONFIG
bundle.
Figure 1. Visual representation of nested bundles.
To create a Profile without configuring its settings parameters, use CREATE_PROFILE.
Version History
- DataWedge 6.4 - API introduced
- DataWedge 6.6 - Added support for configuring multiple Plug-ins with a single Action
- DataWedge 6.7 - Enhanced inter-character delay feature (More info)
- DataWedge 6.8 - Support for ADF settings:
- New ADF_RULE bundle with Action, Device, Decoder and Label_ID sub-bundles
- New result code: RESULT_ACTION_RESULT_CODE_EMPTY_RULE_NAME
- DataWedge 6.9/7.0 - Added support for Voice Input and Global Scanner Configuration
- DataWedge 7.1 - New configuration for: full profile (all plugins, APP_LIST, and Data Capture Plus), Data Capture Plus, IP (Internet Protocol), MSR (Magnetic Stripe Reader), and Simulscan. New SEND_RESULT result code for multiple plugins.
- DataWedge 7.2 - Added new DotCode decoder support.
- DataWedge 7.3 - Added new Decoder Signature support, new Grid Matrix decoder support and new keystroke output parameters.
- DataWedge 7.3.22 - Added new RFID Input feature.
- DataWedge 7.4.44 - New Enterprise Keyboard Configuration feature.
- DataWedge 7.5 - Added DPM support. Increased the maximum number of barcodes supported by MultiBarcode. Added new voice input parameters. Deprecated voice_enter_command and voice_tab_command voice input parameters. Added new RFID input parameters.
- DataWedge 7.6 - Added new Dutch Postal 3S parameter. Support for SimulScan API is deprecated; SimulScan support will be removed beginning with Android 10 devices.
- DataWedge 8.0 - New secure intent delivery with intent_component_info, new unlicensed error code.
- DataWedge 8.2 - New scanner input parameter scanner_trigger_resource, new multiple scanner support.
Function Prototype
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SET_CONFIG", <mainbundle>);
Parameters
ACTION [String]: "com.symbol.datawedge.api.ACTION"
EXTRA_DATA [String]: "com.symbol.datawedge.api.SET_CONFIG"
BUNDLE: <mainbundle> (see parameters below)
MAIN BUNDLE
The main SET_CONFIG
bundle includes the following properties:
- PROFILE_NAME [String]: The name of the Profile on which to perform action(s)
- CONFIG_MODE [String]: (Default=OVERWRITE) Applies to the Profile (from PROFILE_NAME). Can be used in place of CREATE_PROFILE. Options:
- CREATE_IF_NOT_EXIST: If the Profile does not exist, it creates the Profile and sets the parameters specified in the SET_CONFIG intent. If the profile exists, it updates the parameters specified in the SET_CONFIG intent, while other parameters remain unchanged. RESET_CONFIG flag can be used to reset the plug-in to its default values before applying the new values specified in the intent.
- OVERWRITE: If the Profile exists, all options are reset to the default, then the specified settings are applied.
- UPDATE: Updates only specified settings. The specified Profile must exist in DataWedge. RESET_CONFIG flag can be used to reset the plug-in to its default values before applying the new values specified in the intent.
- PROFILE_ENABLED [String]: Optional; Controls whether to enable (true) or disable (false) a Profile (default=true). If not specified, no change is made to the Profile state.
- PLUGIN_CONFIG [Bundle[ ]]: A bundle array (nested within the main bundle) that contains settings of each Plug-in
- APP_LIST [Array]: An array of bundles to be associated with the Profile. Each APP_LIST bundle contains the following properties:
- PACKAGE_NAME [String]: The package name for the app to be associated with the profile. For example: "com.symbol.emdk.barcodesample1" or a wildcard (*) character.
- ACTIVITY_LIST [List]: A list of activities from the
PACKAGE_NAME
. Wildcard (*) character is also supported.
PLUGIN_CONFIG BUNDLE
The PLUGIN_CONFIG
bundle is configured using the following properties:
RESET_CONFIG [String]: Optional - applies to an existing Profile with CONFIG_MODE CREATE_IF_NOT_EXIST or UPDATE. Values:
True (Default) – Clear any existing configuration and create a new configuration with the specified parameter values
False – Merge existing configuration with changes from the new configuration - update the existing values and add values not already in the configuration
PLUGIN_NAME [String]: Name (case-sensitive) of the Plug-in to configure. See tables below for
PARAM_LIST
values. For DataWedge 6.5 and below, each intent involving a Plug-in requires a separate intent Action:BARCODE input
MSR (Magnetic Stripe Reader) input
RFID (Radio-frequency Identification) input
- **SERIAL** input
VOICE input
BDF (Basic Data Formatting) processing
ADF (Advanced Data Formatting) processing
TOKENS (data formatting and ordering for Keystroke and IP output with UDI/Multi-barcode data) processing
INTENT output
KEYSTROKE output
IP (Internet Protocol) output
DCP (Data Capture Plus) utilities
EKB (Enterprise Keyboard) utilities
PARAM_LIST [Bundle]: A parameter list bundle nested within the
PLUGIN_CONFIG
bundle. Includes the list of parameters to be updated under the specified Plug-in. Setting an empty string in any parameter value resets that parameter to its default setting.OUTPUT_PLUGIN_NAME [String]: Applies only to ADF and BDF when specified as the
PLUGIN_NAME
. Specifies the output plug-in associated with the ADF or BDF parameters:- KEYSTROKE
- INTENT
- IP
PARAM_LIST BUNDLE
The PARAM_LIST
bundle is configured by specifying the parameter name and values from the respective PLUGIN_NAME
parameter tables below. Applies to parameters matching the PLUGIN_NAME
specified in PLUGIN_CONFIG
bundle:
BARCODE – accepts values from the Scanner Input Parameters table below; specify decoder and other input settings as
EXTRA_DATA
in thePARAM_LIST
nested bundle. It is required to specify which scanner the configurations apply to either by usingscanner_selection
set to auto,scanner_selection_by_identifier
orconfigure_all_scanners
scanner_selection_by_identifier
[string]- accepts a value from the list of Scanner Identifiers below.configure_all_scanners
[string]- true/false
If set to “true”, the parameter scanner_selection_by_identifier is ignored and the configuration is saved as a Global Scanner Configuration. If there is any previous configuration for any individual scanners, they will be replaced with the new global configuration.
If set to "false", the configuration will be saved for the individual selected scanner only. In the event the scanner selection is set to “Auto”, the current default scanner configuration is updated.MSR - Accepts values from the MSR Input Parameters table below.
RFID - Accepts values from the RFID Input Parameters table below.
SERIAL - Accepts values from the Serial Input Parameters table below.
VOICE - Accepts values from the Voice Input Parameters table below.
DCP - Accepts values from the DCP (Data Capture Plus) Utilities Parameters table below.
EKB - Accepts values from the Enterprise Keyboard Configuration Parameters table below.
BDF - Applies Basic Data Formatting rules to the acquired data. Accepts values from the BDF Processing Parameters table below.
ADF - Applies Advanced Data Formatting rules to the acquired data. This bundle contains Action, Device, Decoder and Label_ID sub-bundles. Accepts values from the ADF Processing Parameters table below. See Important for ADF section below.
TOKENS - Applicable for UDI or multibarcodes; accepts values from the Token Parameters table below.
INTENT - Accepts values from the Intent Output Parameters table below.
KEYSTROKE - Accepts values from the Keystroke Output Parameters table below; specify output settings as
EXTRA_DATA
in thePARAM_LIST
nested bundle.IP (Internet Protocol) - Accepts values from the IP Output Parameters table below.
IMPORTANT FOR ADF:
- If a Profile is created without at least one Rule, DataWedge creates a "Rule0" with a single action to "SEND_REMAINING" data without modification.
- If values in one or more newly created Rules are missing or invalid, DataWedge uses default values.
- To update one or more Actions in an existing Profile using an intent, all Actions in the Profile must be included in the intent.
Figure 2. Visual representation of nested SET_CONFIG
bundle. Bundles are designated in blue with corresponding properties listed. PLUGIN_NAME
lists the name of the plug-ins (options) available to configure. Dotted arrows from each plug-in point to the corresponding PARAM_LIST
, properties that can be configured for that particular plug-in. See example code.
Scanner Identifiers
The scanner identifier (introduced in DataWedge 6.5) permits scanners to be identified by a friendly name rather than an index number.
SCANNER_IDENTIFIER [String]: Present in each scanner info bundle for each scanner supported in the device. Index and identifier parameters are both supported in DataWedge and higher; the scanner identifier value takes precedence if an index also is referenced in the code.
Possible values:
- AUTO - Automatic scanner selection
- INTERNAL_IMAGER - Built-in imager scanner
- INTERNAL_LASER - Built-in laser scanner
- INTERNAL_CAMERA - Built-in camera scanner
- SERIAL_SSI - Pluggable Z-back scanner for ET50/ET55
- BLUETOOTH_SSI - RS507 Bluetooth scanner
- BLUETOOTH_RS6000 - RS6000 Bluetooth scanner
- BLUETOOTH_DS2278 - DS2278 Bluetooth scanner
- BLUETOOTH_DS3678 - DS3678 Bluetooth scanner
- PLUGABLE_SSI - Serial SSI scanner RS429 (for use with WT6000)
- PLUGABLE_SSI_RS5000 - Serial SSI scanner RS5000 (for use with WT6000)
- USB_SSI_DS3608 - DS3608 pluggable USB scanner
Result Codes
DataWedge returns the following error codes if the app includes the intent extras SEND_RESULT
and COMMAND_IDENTIFIER
to enable the app to get results using the DataWedge result intent mechanism. See Example, below.
- PLUGIN_NOT_SUPPORTED - An attempt was made to configure a plug-in that is not supported by DataWedge intent APIs
- BUNDLE_EMPTY - The bundle contains no data
- PROFILE_NAME_EMPTY - An attempt was made to configure a Profile name with no data
- PROFILE_NOT_FOUND - An attempt was made to perform an operation on a Profile that does not exist
- PLUGIN_BUNDLE_INVALID - A passed plug-in parameter bundle is empty or contains insufficient information
- PARAMETER_INVALID - The passed parameters were empty, null or invalid
- APP_ALREADY_ASSOCIATED - An attempt was made to associate an app that was already associated with another Profile
- OPERATION_NOT_ALLOWED - An attempt was made to rename or delete a protected Profile or to associate an app with Profile0
- RESULT_ACTION_RESULT_CODE_EMPTY_RULE_NAME - Rule name empty or undefined in
ADF_RULE
bundle - UNLICENSED_FEATURE - An attempt was made to call SetConfig or Switch Scanner Params API to change the scanning mode to MultiBarcode or NextGen SimulScan on an unlicensed Zebra Professional-series device.
Also see the Result Codes guide for more information.
Scanner Input Parameters
Refer to Barcode Input for more information on decoders, decoder parameters, and scan parameters.
See Decoders for supported decoders and decoder parameters.
Important: Support for decode parameters can vary depending on the selected scanning device. For device-specific support notes, please refer to the Integrator Guide that accompanied the unit.
All parameters are case sensitive.
UPC/EAN Parameters
For more information, see UPC/EAN Params.
Parameter Name | Parameter Value |
---|---|
databar_to_upc_ean | true false |
upc_enable_marginless_decode | true false |
upcean_security_level | 0 - Level 0 1 - Level 1 2 - Level 2 3 - Level 3 |
upcean_supplemental2 | true false |
upcean_supplemental5 | true false |
upcean_supplemental_mode | 0 - No Supplementals 1 - Supplemental Always 2 - Supplemental Auto 3 - Supplemental Smart 4 - Supplemental 378-379 5 - Supplemental 978-979 6 - Supplemental 414-419-434-439 7 - Supplemental 977 |
upcean_retry_count | Integer from 2 to 20 |
upcean_linear_decode | true false |
upcean_bookland | true false |
upcean_coupon | true false |
upcean_coupon_report | 0 - Old Coupon Report Mode 1 - New Coupon Report Mode 2 - Both Coupon Report Modes |
upcean_ean_zero_extend | true false |
upcean_bookland_format | 0 - Format ISBN-10 1 - Format ISBN-13 |
NextGen SimulScan Parameters
For more information, see Barcode Input.
Parameter Name | Parameter Value |
---|---|
scanning_mode | 3 - MultiBarcode 5 - Document Capture |
doc_capture_template | [Name of the Document Capture template] |
common_barcode_dynamic_quantity | Integer from 1 to 100 (default 5) |
UDI Parameters
For more information, see Barcode Input.
Parameter Name | Parameter Value |
---|---|
enable_udi_gs1 | true false |
enable_udi_hibcc | true false |
enable_udi_iccbba | true false |
OCR Parameters
For more information, see Barcode Input.
Parameter Name | Parameter Value |
---|---|
ocr_orientation | DEGREE_0 (0) (default) DEGREE_270 (1) DEGREE_180 (2) DEGREE_90 (3) OMNIDIRECTIONAL (4) |
ocr_lines | Set number of lines to scan during OCR reading: LINE_1 (1) (default) LINE_2 (2) LINE_3 (3) |
ocr_min_chars | Set minimum number of OCR characters (not including spaces) per line to decode during OCR reading. Integer value: Low - 3 (default) High - 100 |
ocr_max_chars | Set maximum number of OCR characters (not including spaces) per line to decode during OCR reading. Integer value: Low - 3 (default) High - 100 |
ocr_subset | Defines a custom group of characters in place of a preset font variant. Minimum length - 1 Maximum Length - 100 |
ocr_quiet_zone | Set field width of blank space to stop scanning during OCR reading. The default is 50, indicating a six character width quiet zone. Integer values: Low - 20 High - 99 (Default - 50) |
ocr_template | Creates a template for precisely matching scanned OCR characters to a desired input format, which helps eliminate scanning errors. The template expression is formed by numbers and letters. The default is 99999999 which accepts any alphanumeric character OCR string. If there are less than 8 '9' characters, the '9' represents only digit values. Minimum length - 3 Maximum Length - 100 (Default - 99999999) See OCR Params for more information. |
ocr_check_digit_modulus | Sets the Check Digit Modulus value for OCR Check Digit Calculation. Integer value: Low - 1 (default) High - 99 |
ocr_check_digit_multiplier | Sets OCR check digit multipliers for the character positions. Minimum length - 1 Maximum Length - 100 (Default - 121212121212) |
ocr_check_digit_validation | None - 0 (default) Product Add Left to Right - 3 Product Add Right to Left - 1 Digit Add Left to Right - 4 Digit Add Right to Left - 2 Product Add Right to Left Simple Remainder - 5 Digit Add Right to Left Simple Remainder - 6 Health Industry - HIBCC43 - 9 |
inverse_ocr | White or light words on black or dark background. This option is used to select normal, inverse or both OCR scanning. REGULAR_ONLY (0) (default) INVERSE_ONLY (1) AUTO_DISCRIMINATE (2) |
Other Scanner Input Parameters
Parameter Name | Parameter Value |
---|---|
presentation_mode_sensitivity | 80 - Low 120 - Medium 190 - High (default) More info |
barcode_trigger_mode | 0 - Disabled 1 - Enabled More info |
auto_switch_to_default_on_event | 0 - Disabled 1 - On connect 2 - On disconnect 3 - On connect/disconnect More info |
digimarc_decoding | true false |
scanning_mode | 1 - Single 2 - UDI - supported on selected Zebra devices up to Android P (version 9.x) only |
multi_barcode_count | Integer from 2–100 |
instant_reporting_enable | true false |
report_decoded_barcodes | true false |
scanner_selection_by_identifier | See Scanner Identifiers table. (*) See Notes below this table for more information. |
scanner_trigger_resource | LEFT RIGHT CENTER GUN PROXIMITY KEY_MAPPER_SCAN KEY_MAPPER_L1 KEY_MAPPER_R1 WIRED_LEFT WIRED_RIGHT |
trigger-wakeup | true false |
scanner_input_enabled | true false |
scanner_selection | auto 0-n (valid scanner index from ENUMERATE_SCANNERS API) |
aim_mode | on - On off - Off |
beam_timer | Integer from 0–60000 |
Adaptive_Scanning | 0 - Enable 1 - Disable |
Beam_Width | 0 - Narrow 1 - Normal 2 - Wide |
power_mode | 0 - Low Power Mode 1 - Optimized Power Mode 2 - High Power Mode 3 - Always On |
mpd_mode | 0 - Disable Mobile Phone Display Mode 3 - Enable Mobile Phone Display Mode |
reader_mode | 0 - Triggered Mode 7 - Presentation Mode |
linear_security_level | 1 - Security Short Or Codabar 2 - Security All Twice 3 - Security Long And Short 4 - Security All Thrice |
picklist | 0 - Disabled 1 – Enabled/HW picklist 2 – Software Picklist |
aim_type | 0 - Trigger 1 - Timed Hold 2 - Timed Release 3 - Press And Release 4 - Presentation 5 - Continuous Read 6 - Press and Sustain 7 – Press and Continue |
scene_detect_qualifier | 0 - None 1 - Proximity Sensor Input |
aim_timer | Integer from 0–60000 |
same_barcode_timeout | Integer from 0–5000 |
trigger_wakeup_scan | true false |
different_barcode_timeout | Integer from 0–5000 |
illumination_mode | off - Off torch - On |
illumination_brightness | Integer from 0–10 |
cd_mode | 0 - Disabled 3 - Enabled |
low_power_timeout | Integer from 0–1000 |
delay_to_low_power_mode | 16 - 1 Second 29 - 30 Seconds 32 - 1 Minute 37 - 5 Minutes |
inverse_1d_mode | 0 - Disable 1 - Enable 2 - Auto |
viewfinder_size | Integer from 0–100 |
viewfinder_posx | Integer from 0–100 |
viewfinder_posy | Integer from 0–100 |
1d_marginless_decode_effort_level | 0 - Level 0 1 - Level 1 2 - Level 2 3 - Level 3 |
poor_quality_bcdecode_effort_level | 0 - Level 0 1 - Level 1 2 - Level 2 3 - Level 3 |
charset_name | AUTO UTF-8 ISO-8859-1 Shift_JIS GB18030 |
auto_charset_preferred_order | List preferred options in priority order within a single string separated by a semi-colon: Example 1: "UTF-8;GB2312" Example 2: "GB2312;UTF-8" |
auto_charset_failure_option | NONE UTF-8 ISO-8859-1 Shift_JIS GB18030 |
viewfinder_mode | 1 - Viewfinder Enabled 2 - Static Reticle |
code_id_type | 0 - Code Id Type None 1 - Code Id Type Aim 2 - Code Id Type Symbol |
volume_slider_type | 0 - Ringer 1 - Music and Media 2 - Alarms 3 - Notification |
decode_audio_feedback_uri | [name of tone retrieved from Decode Audio Feedback tone selection] |
decode_haptic_feedback | true false |
bt_disconnect_on_exit | true false |
connection_idle_time | Integer from 0–1800 |
establish_connection_time | Integer from 30–60 |
remote_scanner_audio_feedback_mode | Integer from 0–3 |
remote_scanner_led_feedback_mode | Integer from 0–3 |
display_bt_address_barcode | true false |
good_decode_led_timer | Integer from 0–1000 |
decoding_led_feedback | true false |
decoder_usplanet_report_check_digit | true false |
decode_screen_notification | true false |
decode_screen_time | Length of time (in milliseconds) to display the screen notification upon successful decode. 1000 (default) 500-1500 |
decode_screen_translucency | Sets the translucency value for the decode notification green screen - higher values result to more translucency. Values range from 20 to 50 in increments of 5: 20, 25, 30, 35 (default), 40, 45, 50 |
keep_pairing_info_after_reboot | Enable/disable automatic re-connection to the connected Bluetooth scanner after device reboot. Applies only to connected Bluetooth scanners: 0 - Disable 1 - Enable |
dpm_illumination_control | Controls the illumination for decoding DPM barcodes. Default value is 10. Values: 0 - Direct 11 - Indirect 10 - Cycle More info |
dpm_mode | Optimize DPM barcode decoding performance based on the barcode size. Default value is 2. Values: 0 – Disabled 1 – Mode 1 2 – Mode 2 More info |
(*) Notes related to scanner_selection_by_identifier
:
- Sending "auto" as the scanner identifier in the multiple scanner bundle returns error code "PARAMETER_INVALID" with more detailed error code "AUTO_NOT_SUPPORTED_IN_MULTI_SCANNER_MODE".
- Sending an unsupported trigger does not return any error code.
- If the same trigger is assigned to a different scanner in a different scanner category, the scanner that is processed last gets the priority. Processing order of the plugins cannot be guaranteed.
- Only one internal scanner can be added. If an attempt is made to add another internal scanner, the scanner that is processed last gets the priority. Processing order of the plugins cannot be guaranteed.
- Although triggers can be set that are not supported by that device, only supported triggers are displayed in the UI.
- When using multiple scanners, the parameter
scanner_selection_by_identifier
must be used with DataWedge APIs such as SWITCH_SCANNER_PARAMS, SOFT_SCAN_TRIGGER, etc. Otherwise error COMMAND_NOT_SUPPORTED is encountered.
MSR Input Parameters
All parameters are case sensitive.
Parameter | Parameter Value |
---|---|
msr_input_enabled | true false |
RFID Input Parameters
All parameters are case sensitive.
Parameter | Parameter Value |
---|---|
rfid_input_enabled | true false |
rfid_beeper_enable | true false |
rfid_led_enable | true false |
rfid_antenna_transmit_power | Integer from 5 to 30 |
rfid_memory_bank | 0 - None (default) 1 - User 2 - Reserved 3 - TID (tag identification 4 - EPC (electronic product code) |
rfid_session | 0 - Session 0 1 - Session 1 (default) 2 - Session 2 3 - Session 3 |
rfid_filter_duplicate_tags | true false |
rfid_hardware_trigger_enabled | true false |
rfid_trigger_mode | 0 - Immediate (default) 1 - Continuous |
rfid_tag_read_duration | Integer from 100 to 60000 |
rfid_link_profile | Integer from 0 to 11 Integer range is subject to change based on the reader model. |
rfid_dynamic_power_mode | true false |
Pre-filter PARAM_LIST | |
rfid_pre_filter_enable | true false |
rfid_pre_filter_tag_pattern | [blank] [any string] |
rfid_pre_filter_target | Integer from 0 to 4 |
rfid_pre_filter_memory_bank | Integer from 0 to 2 |
rfid_pre_filter_offset | Integer from 0 to 1024 |
rfid_pre_filter_action | Integer from 0 to 7 |
Post-filter PARAM_LIST | |
rfid_post_filter_enable | true false |
rfid_post_filter_no_of_tags_to_read | Integer from 0 to 1000 |
rfid_post_filter_rssi | Integer from -100 to 0 |
Serial Input Parameters
Important: Support for serial parameters varies by device. For device-specific support notes, please refer to the Integrator Guide that accompanied the unit.
All parameters are case sensitive.
Parameter | Parameter Value |
---|---|
serial_port_id | 0–n (must be a valid index) |
serial_input_enabled | true false |
serial_baudrate | 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800 or 921600 |
serial_databits | 7 8 |
serial_parity | NONE ODD EVEN MARK SPACE |
serial_stopbits | 1 2 |
serial_flow | FLOW_NONE, FLOW_RTS_CTS or FLOW_XON_XOFF |
## Voice Input Parameters > All parameters are case sensitive.
Parameter | Parameter Value |
---|---|
voice_input_enabled | true false |
voice_data_capture_start_option | 0 - Start phrase 1 - PTT button |
voice_data_capture_start_phrase | start (default) |
voice_data_capture_end_phrase | [blank] (default) |
voice_end_detection_timeout | 0-30 (in seconds) |
voice_data_type | 0 - Any 1- Alpha 2 - Numeric |
voice_start_phrase_waiting_tone | true false |
voice_data_capture_waiting_tone | true false |
voice_validation_window | true false |
voice_offline_speech | true false |
voice_command_tab_enabled | true false (default) |
voice_command_tab_phrase | send tab (default) |
voice_command_enter_enabled | true false (default) |
voice_command_enter_phrase | send enter (default) |
voice_command_move_next_enabled | true false (default) |
voice_command_move_next_phrase | move next (default) |
voice_command_move_previous_enabled | true false (default) |
voice_command_move_previous_phrase | move previous (default) |
voice_command_escape_enabled | true false (default) |
voice_command_escape_phrase | send escape (default) |
voice_command_clear_enabled | true false (default) |
voice_command_clear_phrase | clear (default) |
Parameter | Parameter Value | Description |
---|---|---|
dcp_input_enabled | true false |
Enable/Disable Data Capture Plus input |
dcp_dock_button_on | LEFT - Left only RIGHT - Right only BOTH - Left or Right |
Position location for dock button: left side, right side, either right or left side (both) |
dcp_start_in | FULLSCREEN BUTTON BUTTON_ONLY |
Sets the mode that DCP will startup with: full screen, button (floating button that can be re-positioned by dragging and dropping), and button only (cannot be re-positioned) |
dcp_highest_pos | 0-100 | Sets a ceiling for button position expressed as a percentage of total screen height. For example, on a screen measuring four inches vertically, a setting of 75 (%) would prevent the upper edge of the DCP button from being positioned less than one inch from the top of the screen. |
dcp_lowest_pos | 0-100 | Sets a floor for button position expressed as a percentage of total screen height. For example, on a screen measuring four inches vertically, a setting of 25 (%) would prevent the lower edge of the DCP button from being positioned less than one inch from the bottom of the screen. |
dcp_drag_detect_time | 0-1000 | Wait time (in ms) that DCP should wait after a screen tap before triggering a scanner action. This can help prevent accidental triggers when dragging the DCP button to a new location. |
See [DCP Input](../../input/dcp).
--- ## Enterprise Keyboard Configuration Parameters
All parameters are case sensitive.
Parameter | Parameter Value | Description |
---|---|---|
ekb_enabled | true false |
Enable/Disable Enterprise Keyboard |
ekb_layout | Bundle that accepts values: • layout_group [string] • layout_name [string] |
Specify layout_group and layout_name that matches that displayed in DataWedge UI for Enterprise Keyboard Configuration. Both names are set from Enterprise Keyboard Designer: layout_group is based on the project name and layout_name is based on the layout name specified. Use null for ekb_layout to set to default, the standard Enterprise Keyboard. |
BDF Processing Parameters
All parameters are case sensitive.
Parameter | Parameter Value |
---|---|
bdf_enabled | true false |
bdf_prefix | [string to prepend acquired data] |
bdf_suffix | [string to append acquired data]] |
bdf_send_data | true false |
bdf_send_hex | true false |
bdf_send_tab | true false |
bdf_send_enter | true false |
ADF Processing Parameters
All parameters are case sensitive.
Parameter | Parameter Value |
---|---|
adf_enabled | true false (default) |
ADF_RULE | Bundle that accepts values: • name [string] – Name of the ADF rule to use • enabled [string] – Rule enabled; true/false (default=true) • alldevices [string] – Accept data from all supported input sources; true/false (default=true) • string [string] – String to check for (default=empty string) • string_pos [string] – String position (default=0) • string_len [string] - String length (default=0) |
ACTIONS | Bundle that can have multiple instances; accepts values: • type [string] - Name of Action from ADF Actions table • [action_param_1], [action_param_2]... (as determined by ADF Action; see table) |
DEVICES | Bundle that can have multiple instances; accepts values: • device_id [string] - Name of the input source: BARCODE, MSR, RFID, SERIAL or VOICE • enabled [string] - Accept data from specified device ID: true/false (default=true) • alldecoders [string] - Allow all barcode symbologies: true/false (default=true) • all_label_ids [string] - Allow all UDI label IDs: true/false (default=true) |
DECODERS | Bundle that can have multiple instances; accepts values: • device_id [string] - BARCODE, MSR, RFID, SERIAL or VOICE • decoder [string] - (i.e. "Australian Postal") • enabled [string] - true/false (default=true) |
LABEL_IDS | Bundle that can have multiple instances; accepts values: • device_id [string] - BARCODE, MSR, RFID, SERIAL or VOICE • label_id [string] - UDI_GS1, UDI_HIBCC or UDI_ICCBBA • enabled [string] - true/false (default=true) |
ADF ACTIONS
Category | Action Type Parameter(s) (if any) |
Description |
---|---|---|
Cursor Movement |
SKIP_AHEAD |
Moves the cursor forward by the specified number of characters (default=1) |
SKIP_BACK |
Moves the cursor back by the specified number of characters (default=1) |
|
SKIP_TO_START |
Moves the cursor to the beginning of the data |
|
MOVE_AHEAD_TO |
Known as "Move to" in the DataWedge UI, advances the cursor until the specified string is found |
|
MOVE_PAST_A |
Moves the cursor forward past the specified string |
|
Data Modification |
CRUNCH_SPACES |
Reduces spaces between words to one, and removes all spaces at the beginning and end of the data |
STOP_CRUNCH_SPACE |
Disables the last Crunch spaces action |
|
REMOVE_SPACES |
Known as "Remove all spaces" in the DataWedge UI, removes all spaces in the data |
|
STOP_REMOVE_SPACES |
Disables the last REMOVE_SPACES action |
|
TRIM_LEFT_ZEROS |
Known as "Remove leading zeros" in the DataWedge UI, removes all zeros at the beginning of the data |
|
STOP_TRIM_LEFT_ZEROS |
Disables the previous TRIM_LEFT_ZEROS action |
|
PAD_LEFT_ZEROS |
Known as "Pad with zeros" in the DataWedge UI, left-pads the data with the specified number of zeros (default=0) |
|
STOP_PAD_LEFT_ZEROS |
Disables the previous PAD_LEFT_ZEROS action |
|
PAD_LEFT_SPACES |
Known as "Pad with spaces" in the DataWedge UI, left-pads the data with the specified number of spaces (default=0) |
|
STOP_PAD_LEFT_SPACES |
Disables the previous PAD_LEFT_SPACES action |
|
REPLACE_STRING |
Replaces a specified string (action_param_1) with a new specified string (action_param_2). Both must be specified (default=empty) |
|
STOP_REPLACE_ALL |
Known as "Stop all replace string" in the DataWedge UI, stops all REPLACE_STRING actions |
|
REMOVE_CHARACTERS |
Removes the number of characters specified in given positions when send actions are executed |
|
STOP_REMOVE_CHARS |
Stops removing characters from subsequent send actions |
|
Data Sending |
SEND_NEXT |
Sends the specified number of characters from the current cursor position (default=0) |
SEND_REMAINING |
Sends all data that remains from the current cursor position |
|
SEND_UP_TO |
Sends all data up to the specified string |
|
DELAY |
Known as "Send pause" in the DataWedge UI, pauses the specified number of milliseconds (default = 0; max. = 120000) before executing the next action. Zebra recommends pausing 50 ms after sending any ENTER, LINE FEED or TAB character. |
|
SEND_STRING |
Sends the specified string |
|
SEND_CHAR |
Sends the specified ASCII/ Unicode character. The maximum Unicode character value is U-10FFFF (1114111 in decimal) |
- Default action_param values are 0, empty or none unless otherwise noted.
- To help minimize data loss, Zebra recommends sending a DELAY of 50 ms after sending any ENTER, LINE FEED or TAB character.
Token Parameters
Applicable for UDI or multibarcodes.
All parameters are case sensitive.
Parameter Name | Parameter Value |
---|---|
send_tokens_option | DISABLED TOKENS BARCODES_TOKENS |
token_separator | TAB CR LF NONE |
multibarcode_separator | TAB CR LF NONE |
token_order | name: manufacturing_date_original enabled: true/false name: expiration_date_original enabled: true/false name: di enabled: true/false (Note: "di" stands for device identifier.) name: lot_number enabled: true/false name: serial_number enabled: true/false name: mpho_lot_number enabled: true/false name: donation_id enabled: true/false name: labeler_identification_code enabled: true/false name: product_or_catalog_number enabled: true/false name: unit_of_measure_id enabled: true/false name: quantity enabled: true/false * DataWedge determines the priority order according to the order of items listed in the ArrayList, with Element 0 having the highest priority. |
See UDI Data Output in IP Output or Keystroke Output
Intent Output Parameters
All parameters are case sensitive.
Parameter | Parameter Value | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
intent_output_enabled | true false |
||||||||||||
intent_action | [exact name of the action] | ||||||||||||
intent_category | [exact name of the category] | ||||||||||||
intent_delivery | 0 - Start Activity 1 - Start Service 2 - Broadcast |
||||||||||||
intent_component_info [bundle array] |
[bundle]
|
||||||||||||
intent_use_content_provider | true false |
Keystroke Output Parameters
All parameters are case sensitive.
Parameter | Parameter Value |
---|---|
keystroke_output_enabled | true false |
keystroke_action_char | NONE - ASCII_NO_VALUE TAB - ASCII_TAB_VALUE LF - ASCII_LF_VALUE CR - ASCII_CR_VALUE |
keystroke_delay_extended_ascii (deprecated) | Integer from 0–1000 |
keystroke_delay_control_chars | Integer from 0–1000 |
keystroke_character_delay | Integer from 0–1000 |
keystroke_delay_multibyte_chars_only | true false |
keystroke_send_chars_as_events | true false (default) |
keystroke_send_control_chars_as_events | true false (default) |
keystroke_send_tab_as_string | true false (default) |
Keystroke Delay Notes
- The
keystroke_delay_extended_ascii
parameter is deprecated. - If a Keystroke Plug-in bundle uses the
keystroke_delay_extended_ascii
parameter, DataWedge sets thekeystroke_delay_multibyte_chars_only
parameter to true. - If both the
keystroke_delay_extended_ascii
andkeystroke_character_delay
parameters are sent: - The
keystroke_character_delay
value is retained. - The
keystroke_delay_extended_ascii
value is ignored. - If available, the
keystroke_delay_multibyte_chars_only
value is saved; it is otherwise considered false.
IP Output Parameters
All parameters are case sensitive.
Parameter Name | Parameter Value |
---|---|
ip_output_enabled | true false |
ip_output_ip_wedge_enabled | true false |
ip_output_protocol | TCP UDP |
ip_output_address | [Valid IP Address format] |
ip_output_port | 1 – 65535 |
Example Code
Nested bundles
// MAIN BUNDLE PROPERTIES
Bundle bMain = new Bundle();
bMain.putString("PROFILE_NAME","Profile12"); // <- "Profile12" is a bundle
bMain.putString("PROFILE_ENABLED","true"); // <- that will be enabled
bMain.putString("CONFIG_MODE","CREATE_IF_NOT_EXIST"); // <- or created if necessary.
// PLUGIN_CONFIG BUNDLE PROPERTIES
Bundle bConfig = new Bundle();
bConfig.putString("PLUGIN_NAME","BARCODE");
bConfig.putString("RESET_CONFIG","true");
// PARAM_LIST BUNDLE PROPERTIES
Bundle bParams = new Bundle();
bParams.putString("scanner_selection","auto");
bParams.putString("scanner_input_enabled","true");
//
// NOTE: The "scanner_selection" parameter (above) supports "auto" selection
// --OR-- the assignment of a scanner device index, which is obtained by
// using the ENUMERATE_SCANNERS API.
//
// Syntax for scanner index:
//
// Bundle bParams = new Bundle();
// diff--> bParams.putString("current-device-id","0");
// bParams.putString("scanner_input_enabled","true");
//
//
// NEST THE BUNDLE "bParams" WITHIN THE BUNDLE "bConfig"
bConfig.putBundle("PARAM_LIST", bParams);
// THEN NEST THE "bConfig" BUNDLE WITHIN THE MAIN BUNDLE "bMain"
bMain.putBundle("PLUGIN_CONFIG", bConfig);
// CREATE APP_LIST BUNDLES (apps and/or activities to be associated with the Profile)
Bundle bundleApp1 = new Bundle();
bundleApp1.putString("PACKAGE_NAME","com.symbol.emdk.simulscansample1");
bundleApp1.putStringArray("ACTIVITY_LIST", new String[]{
"com.symbol.emdk.simulscansample1.DeviceControl",
"com.symbol.emdk.simulscansample1.MainActivity",
"com.symbol.emdk.simulscansample1.ResultsActivity.*",
"com.symbol.emdk.simulscansample1.ResultsActivity2",
"com.symbol.emdk.simulscansample1.SettingsFragment1"});
Bundle bundleApp2 = new Bundle();
bundleApp2.putString("PACKAGE_NAME","com.example.intents.datawedgeintent");
bundleApp2.putStringArray("ACTIVITY_LIST", new String[]{
"com.example.intents.datawedgeintent.DeviceControl",
"com.example.intents.datawedgeintent.MainActivity",
"com.example.intents.datawedgeintent.ResultsActivity",
"com.example.intents.datawedgeintent.SettingsFragment1"});
Bundle bundleApp3 = new Bundle();
bundleApp3.putString("PACKAGE_NAME","*");
bundleApp3.putStringArray("ACTIVITY_LIST", new String[]{"*"});
Bundle bundleApp4 = new Bundle();
bundleApp4.putString("PACKAGE_NAME","com.symbol.myzebraapp");
bundleApp4.putStringArray("ACTIVITY_LIST", new String[]{"*"});
// NEXT APP_LIST BUNDLE(S) INTO THE MAIN BUNDLE
bMain.putParcelableArray("APP_LIST", new Bundle[]{
bundleApp1
,bundleApp2
,bundleApp3
,bundleApp4
});
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
this.sendBroadcast(i);
Set OCR parameters
Create/update a profile with OCR parameters:
void createBarcodeScanProfileWithOCR() {
Bundle bMain = new Bundle();
bMain.putString("PROFILE_NAME", "OcrBarcodeApp");
bMain.putString("PROFILE_ENABLED", "true");
bMain.putString("CONFIG_MODE", "CREATE_IF_NOT_EXIST");
Bundle bConfig = new Bundle();
bConfig.putString("PLUGIN_NAME", "BARCODE");
bConfig.putString("RESET_CONFIG", "true");
Bundle bParams = new Bundle();
bParams.putString("scanner_selection", "auto");
bParams.putString("scanner_input_enabled", "true");
//Enable/Disable Decoders
bParams.putString("decoder_ocr_a", "true"); //Enable or Disable OCR-A font
bParams.putString("decoder_ocr_b", "true"); //Enable or Disable OCR-B font
bParams.putString("decoder_micr", "true"); //Enable or Disable OCR MICR E13B font
bParams.putString("decoder_us_currency", "true"); //Enable or Disable OCR US Currency font
//Ocr A and B Variants
bParams.putString("ocr_a_variant", "3"); //0 - FULL_ASCII, 1 - RESERVED_1, 2 - RESERVED_2,3 - BANKING
bParams.putString("ocr_b_variant", "6"); //0 - FULL_ASCII, 1 - BANKING, 2 - LIMITED, 6 - ISBN_1, 7 - ISBN_2, 3 - TRAVEL_DOCUMENT_1, 8 - TRAVEL_DOCUMENT_2, 20 - TRAVEL_DOCUMENT_3, 4 - PASSPORT, 9 - VISA_TYPE_A, 10 - VISA_TYPE_B, 11 - ICAO_TRAVEL_DOCUMENT
//Other OCR Params
//Specify the orientation of an OCR String to be read
bParams.putString("ocr_orientation", "1"); //Supported Values: 0 - DEGREE_0, 1 - DEGREE_270, 2 - DEGREE_180, 3 - DEGREE_90, 4 - OMNIDIRECTIONAL
//Select number of lines to scan during OCR reading
bParams.putString("ocr_lines", "2"); //Supported Values: 1 - LINE_1, 2 - LINE_2, 3 - LINE_3
//Select minimum number of OCR characters (not including spaces) per line to decode during OCR reading
bParams.putString("ocr_min_chars", "10"); //Supported Values: 3 to 100 in steps of 1
//Select maximum number of OCR characters (including spaces) per line to decode during OCR reading
bParams.putString("ocr_max_chars", "15"); //Supported Values: 3 to 100 in steps of 1
//OCR Subset defines a custom group of characters in place of a preset font variant
bParams.putString("ocr_subset", "!\"#$%()*+,-./0123456789<>ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz\\^|"); //Minimum length - 1, Maximum Length - 100
//Set field width of blank space to stop scanning during OCR reading
bParams.putString("ocr_quiet_zone", "60"); //Supported Values: 20 to 99 in steps of 1
//This option creates a template for precisely matching scanned OCR characters to a desired input format.
// Carefully constructing an OCR template eliminates scanning errors.
// The template expression will be formed by numbers and letters.
// The default is 99999999 which accepts any character OCR strings.
bParams.putString("ocr_template", "AAA");
//Sets the Check Digit Modulus value for OCR Check Digit Calculation
bParams.putString("ocr_check_digit_modulus", "10"); //Supported Values: 1 to 99 in steps of 1
//Sets OCR check digit multipliers for the character positions
bParams.putString("ocr_check_digit_multiplier", "121212121212"); //Minimum length - 1, Maximum Length - 100 (Default - 121212121212)
//Selects Check Digit Validation Scheme
bParams.putString("ocr_check_digit_validation", "3"); //Supported Values: 0 - None, 3 - Product Add Left to Right, 1 - Product Add Right to Left, 4 - Digit Add Left to Right, 2 - Digit Add Right to Left, 5 - Product Add Right to Left Simple Remainder, 6 - Digit Add Right to Left Simple Remainder, 9 - Health Industry - HIBCC43
//Inverse OCR is white or light words on black or dark background. This option is used to select normal, inverse or both OCR scanning
bParams.putString("inverse_ocr", "2"); //0 - REGULAR_ONLY, 1 - INVERSE_ONLY, 2 - AUTO_DISCRIMINATE
bConfig.putBundle("PARAM_LIST", bParams);
ArrayList<Bundle> bundlePluginConfig = new ArrayList<>();
bundlePluginConfig.add(bConfig);
bMain.putParcelableArrayList("PLUGIN_CONFIG", bundlePluginConfig);
Intent i = new Intent();
i.setAction(DATAWEDGE_API_ACTION);
i.putExtra("SEND_RESULT", "LAST_RESULT");
i.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
this.sendBroadcast(i);
}
Set RFID input configuration
private void createProfile() {
// Create bundle for profile configuration
Bundle setConfigBundle = new Bundle();
setConfigBundle.putString("PROFILE_NAME","SampleConfigApi");
setConfigBundle.putString("PROFILE_ENABLED", "true");
setConfigBundle.putString("CONFIG_MODE","CREATE_IF_NOT_EXIST");
setConfigBundle.putString("RESET_CONFIG", "false");
// Associate profile with this app
Bundle appConfig = new Bundle();
appConfig.putString("PACKAGE_NAME", getPackageName());
appConfig.putStringArray("ACTIVITY_LIST", new String[]{"*"});
setConfigBundle.putParcelableArray("APP_LIST", new Bundle[]{appConfig});
setConfigBundle.remove("PLUGIN_CONFIG");
// Set RFID configuration
Bundle rfidConfigParamList = new Bundle();
rfidConfigParamList.putString("rfid_input_enabled", "true");
rfidConfigParamList.putString("rfid_beeper_enable", "true");
rfidConfigParamList.putString("rfid_led_enable", "true");
rfidConfigParamList.putString("rfid_antenna_transmit_power", "30");
rfidConfigParamList.putString("rfid_memory_bank", "2");
rfidConfigParamList.putString("rfid_session", "1");
rfidConfigParamList.putString("rfid_trigger_mode", "1");
rfidConfigParamList.putString("rfid_filter_duplicate_tags", "true");
rfidConfigParamList.putString("rfid_hardware_trigger_enabled", "true");
rfidConfigParamList.putString("rfid_tag_read_duration", "250");
// Pre-filter
rfidConfigParamList.putString("rfid_pre_filter_enable", "true");
rfidConfigParamList.putString("rfid_pre_filter_tag_pattern", "3EC");
rfidConfigParamList.putString("rfid_pre_filter_target", "2");
rfidConfigParamList.putString("rfid_pre_filter_memory_bank", "2");
rfidConfigParamList.putString("rfid_pre_filter_offset", "2");
rfidConfigParamList.putString("rfid_pre_filter_action", "2");
// Post-filter
rfidConfigParamList.putString("rfid_post_filter_enable", "true");
rfidConfigParamList.putString("rfid_post_filter_no_of_tags_to_read", "2");
rfidConfigParamList.putString("rfid_post_filter_rssi", "-54");
Bundle rfidConfigBundle = new Bundle();
rfidConfigBundle.putString("PLUGIN_NAME", "RFID");
rfidConfigBundle.putString("RESET_CONFIG", "true");
rfidConfigBundle.putBundle("PARAM_LIST", rfidConfigParamList);
// Configure intent output for captured data to be sent to this app
Bundle intentConfig = new Bundle();
intentConfig.putString("PLUGIN_NAME", "INTENT");
intentConfig.putString("RESET_CONFIG", "true");
Bundle intentProps = new Bundle();
intentProps.putString("intent_output_enabled", "true");
intentProps.putString("intent_action", "com.zebra.rfid.rwdemo.RWDEMO");
intentProps.putString("intent_category", "android.intent.category.DEFAULT");
intentProps.putString("intent_delivery", "0");
intentConfig.putBundle("PARAM_LIST", intentProps);
// Add configurations into a collection
ArrayList<Parcelable> configBundles = new ArrayList<>();
configBundles.add(rfidConfigBundle);
configBundles.add(intentConfig);
setConfigBundle.putParcelableArrayList("PLUGIN_CONFIG", configBundles);
// Broadcast the intent
Intent intent = new Intent();
intent.setAction("com.symbol.datawedge.api.ACTION");
intent.putExtra("com.symbol.datawedge.api.SET_CONFIG", setConfigBundle);
sendBroadcast(intent);
}
Set serial input configuration
//
// Port 1 Configuration [Start]
//
Bundle bPort1 = new Bundle();
bPort1.putString("serial_port_id", "0"); //Supported Values: 0,1
bPort1.putString("serial_input_enabled", "true"); // Supported Values: true, false
bPort1.putString("serial_baudrate", "1200"); // Supported Values (some): 300, 1200, 2400, 4800, 19200, and more
bPort1.putString("serial_databits", "8"); //Supported Values: 8, 7
bPort1.putString("serial_parity", "ODD"); //Supported Values: NONE, ODD, EVEN, MARK, SPACE
bPort1.putString("serial_stopbits", "1"); //Supported Values: 1, 2
bPort1.putString("serial_flow", "FLOW_RTS_CTS"); //Supported Values: FLOW_NONE, FLOW_RTS_CTS, FLOW_DSR_DTR, FLOW_XON_XOFF
//
// Port 1 Configuration [End]
//
// Port 2 Configuration [Start]
//
Bundle bPort2 = new Bundle();
bPort2.putString("serial_port_id", "1");
bPort2.putString("serial_input_enabled", "true");
bPort2.putString("serial_baudrate", "300");
bPort2.putString("serial_databits", "7");
//bPort2.putString("abc", "123");
bPort2.putString("serial_stopbits", "2");
bPort2.putString("serial_flow", "FLOW_DSR_DTR");
bPort2.putString("serial_parity", "EVEN");
//
// Port 2 Configuration [End]
//
Bundle bConfig = new Bundle();
bConfig.putString("RESET_CONFIG", "false");
bConfig.putString("PLUGIN_NAME", "SERIAL");
bConfig.putParcelableArray("DEVICE_LIST", new Bundle[]{
bPort1, bPort2
});
Bundle bMain = new Bundle();
bMain.putString("PROFILE_NAME", "Profile0 (default)");
bMain.putString("CONFIG_MODE", "UPDATE");
bMain.putBundle("PLUGIN_CONFIG", bConfig);
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
i.putExtra("SEND_RESULT","LAST_RESULT");
// i.putExtra("SEND_RESULT", "true"); // For versions prior to DataWedge 7.1
i.putExtra("com.symbol.datawedge.api.RESULT_CATEGORY", DEFAULT_CATEGORY);
i.putExtra("COMMAND_IDENTIFIER", "DW_SERIAL_COMMAND");
this.sendBroadcast(i);
Set DCP input configuration
//SetConfig [Start]
Bundle bMain = new Bundle();
Bundle bConfigDCP = new Bundle();
Bundle bParamsDCP = new Bundle();
bParamsDCP.putString("dcp_input_enabled", "true");
bParamsDCP.putString("dcp_dock_button_on", "LEFT"); //Supported values: BOTH - Left or Right, LEFT - Left only, RIGHT - Right only
bParamsDCP.putString("dcp_start_in", "FULLSCREEN"); //Supported Values: FULLSCREEN, BUTTON, BUTTON_ONLY
bParamsDCP.putString("dcp_highest_pos", "30"); //Supported Values: 0 - 100, Highest pos can not be greater than lowest pos
bParamsDCP.putString("dcp_lowest_pos", "40"); //Supported Values: 0 - 100, Highest pos can not be greater than lowest pos
bParamsDCP.putString("dcp_drag_detect_time", "501"); //Supported Values: 0 - 1000
bConfigDCP.putString("RESET_CONFIG", "false");
bConfigDCP.putBundle("PARAM_LIST", bParamsDCP);
bMain.putBundle("DCP", bConfigDCP);
bMain.putString("PROFILE_NAME", "Profile007");
bMain.putString("PROFILE_ENABLED", "true");
bMain.putString("CONFIG_MODE", "CREATE_IF_NOT_EXIST");
Intent iSetConfig = new Intent();
iSetConfig.setAction("com.symbol.datawedge.api.ACTION");
iSetConfig.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
iSetConfig.putExtra("SEND_RESULT", "LAST_RESULT");
iSetConfig.putExtra("COMMAND_IDENTIFIER", "INTENT_API");
//SetConfig [End]
this.sendBroadcast(iSetConfig);
Set MSR input configuration
// SetConfig [Start]
Bundle bMain = new Bundle();
Bundle bConfigMSR = new Bundle();
Bundle bParamsMSR = new Bundle();
bParamsMSR.putString("msr_input_enabled", "true");
bConfigMSR.putString("PLUGIN_NAME", "MSR");
bConfigMSR.putString("RESET_CONFIG", "true");
bConfigMSR.putBundle("PARAM_LIST", bParamsMSR);
bMain.putBundle("PLUGIN_CONFIG", bConfigMSR);
bMain.putString("PROFILE_NAME", "Profile007");
bMain.putString("PROFILE_ENABLED", "true");
bMain.putString("CONFIG_MODE", "CREATE_IF_NOT_EXIST");
Intent iSetConfig = new Intent();
iSetConfig.setAction("com.symbol.datawedge.api.ACTION");
iSetConfig.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
iSetConfig.putExtra("SEND_RESULT", "LAST_RESULT");
iSetConfig.putExtra("COMMAND_IDENTIFIER", "INTENT_API");
// SetConfig [End]
this.sendBroadcast(iSetConfig);
Set voice input configuration
public void CreateProfile (View view) {
ArrayList<Bundle> plugins = new ArrayList();
// Configure created profile to apply to this app
Bundle profileConfig = new Bundle();
profileConfig.putString("PROFILE_NAME", EXTRA_PROFILENAME);
profileConfig.putString("PROFILE_ENABLED", "true");
profileConfig.putString("CONFIG_MODE", "CREATE_IF_NOT_EXIST"); // Create profile if it does not exist
// Associate profile with this app
Bundle appConfig = new Bundle();
appConfig.putString("PACKAGE_NAME", getPackageName());
appConfig.putStringArray("ACTIVITY_LIST", new String[]{"*"});
profileConfig.putParcelableArray("APP_LIST", new Bundle[]{appConfig});
// Configure intent output for captured data to be sent to this app
Bundle intentConfig = new Bundle();
intentConfig.putString("PLUGIN_NAME", "INTENT");
intentConfig.putString("RESET_CONFIG", "true");
Bundle intentProps = new Bundle();
intentProps.putString("intent_output_enabled", "true");
intentProps.putString("intent_action", "com.zebra.datacapture1.ACTION");
intentProps.putString("intent_delivery", "2");
intentConfig.putBundle("PARAM_LIST", intentProps);
plugins.add(intentConfig);
// Add Voice Input Configuration
Bundle voiceConfig = new Bundle();
voiceConfig.putString("PLUGIN_NAME", "VOICE");
voiceConfig.putString("RESET_CONFIG", "false");
Bundle bParams = new Bundle();
bParams.putString("voice_input_enabled", "true");
bParams.putString("voice_data_capture_start_phrase", "hello");
bParams.putString("voice_data_capture_end_phrase", "");
bParams.putString("voice_end_detection_timeout", "3");
bParams.putString("voice_data_type", "1");
bParams.putString("voice_start_phrase_waiting_tone", "true");
bParams.putString("voice_data_capture_waiting_tone", "true");
bParams.putString("voice_validation_window", "true");
bParams.putString("voice_offline_speech", "false");
bParams.putString("voice_data_capture_start_option", "0");
bParams.putString("voice_command_tab_enabled", "true");
bParams.putString("voice_command_tab_phrase", "tab");
bParams.putString("voice_command_enter", "true");
bParams.putString("voice_command_enter_phrase", "enter");
bParams.putString("voice_command_move_next_enabled", "true");
bParams.putString("voice_command_move_next_phrase", "next");
bParams.putString("voice_command_move_previous_enabled", "true");
bParams.putString("voice_command_move_previous_phrase", "previous");
bParams.putString("voice_command_escape_enabled", "true");
bParams.putString("voice_command_escape_phrase", "escape");
bParams.putString("voice_command_clear_enabled", "true");
bParams.putString("voice_command_clear_phrase", "empty");
voiceConfig.putBundle("PARAM_LIST", bParams);
// Add Voice Input plugin Configuration to the plugins list
plugins.add(voiceConfig);
// Add plugins list to the bundle
profileConfig.putParcelableArrayList("PLUGIN_CONFIG", plugins);
// Broadcast the intent.
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SET_CONFIG", profileConfig);
i.putExtra("SEND_RESULT","LAST_RESULT");
i.putExtra("COMMAND_IDENTIFIER", "SET_CONFIG");
this.sendBroadcast(i);
}
Set BDF processing
Process Plug-ins manipulate the acquired data in a specified way before sending it to the associated app via the Output Plug-in. About BDF. About ADF.
// Main bundle properties
Bundle bMain = new Bundle();
bMain.putString("PROFILE_NAME","Profile12");
bMain.putString("PROFILE_ENABLED","true");
bMain.putString("CONFIG_MODE","CREATE_IF_NOT_EXIST");
// plugin_config bundle properties
Bundle bConfig = new Bundle();
bConfig.putString("PLUGIN_NAME","BDF");
bConfig.putString("RESET_CONFIG","true");
bConfig.putString("OUTPUT_PLUGIN_NAME","KEYSTROKE");
// param_list bundle properties
Bundle bParams = new Bundle();
bParams.putString("bdf_enabled","true");
bParams.putString("bdf_prefix","AAA");
bParams.putString("bdf_send_enter","true");
bConfig.putBundle("PARAM_LIST", bParams);
bMain.putBundle("PLUGIN_CONFIG", bConfig);
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
this.sendBroadcast(i);
Set ADF processing
//MAIN BUNDLE PROPERTIES
Bundle bMain = new Bundle();
bMain.putString("PROFILE_NAME","ProfileTest");
bMain.putString("PROFILE_ENABLED","true");
bMain.putString("CONFIG_MODE","CREATE_IF_NOT_EXIST");
//PLUGIN_CONFIG BUNDLE PROPERTIES
Bundle bConfig = new Bundle();
bConfig.putString("PLUGIN_NAME","ADF");
bConfig.putString("RESET_CONFIG","true");
bConfig.putString("OUTPUT_PLUGIN_NAME","KEYSTROKE");
bConfig.putString("adf_enabled","true");
//PARAM_LIST BUNDLE PROPERTIES
//RULE BUNDLE PROPERTIES
Bundle bParamsRule1 = new Bundle();
bParamsRule1.putString("name","Rule1");
bParamsRule1.putString("enabled","true");
bParamsRule1.putString("alldevices","true");
bParamsRule1.putString("string","abc");
bParamsRule1.putString("string_pos","2");
bParamsRule1.putString("string_len","4");
//ACTION BUNDLE PROPERTIES
Bundle bParamsAction1 = new Bundle();
bParamsAction1.putString("type","SEND_NEXT");
bParamsAction1.putString("action_param_1","5");
//ACTION BUNDLE PROPERTIES
Bundle bParamsAction2 = new Bundle();
bParamsAction2.putString("type","SKIP_BACK");
//DEVICE BUNDLE PROPERTIES
Bundle bParamsDevice1 = new Bundle();
bParamsDevice1.putString("device_id","BARCODE");
bParamsDevice1.putString("enabled","true");
bParamsDevice1.putString("alldecoders","false");
bParamsDevice1.putString("all_label_ids","false");
//DEVICE BUNDLE PROPERTIES
Bundle bParamsDevice2 = new Bundle();
bParamsDevice2.putString("device_id","MSR");
bParamsDevice2.putString("enabled","true");
//DEVICE BUNDLE PROPERTIES
Bundle bParamsDevice3 = new Bundle();
bParamsDevice3.putString("device_id","SIMULSCAN");
bParamsDevice3.putString("enabled","true");
//DECODER BUNDLE PROPERTIES
Bundle bParamsDecoders1 = new Bundle();
bParamsDecoders1.putString("device_id","BARCODE");
bParamsDecoders1.putString("decoder","Australian Postal");
bParamsDecoders1.putString("enabled","true");
//DECODER BUNDLE PROPERTIES
Bundle bParamsDecoders2 = new Bundle();
bParamsDecoders2.putString("device_id","BARCODE");
bParamsDecoders2.putString("decoder","Bookland");
bParamsDecoders2.putString("enabled","false");
//DECODER BUNDLE PROPERTIES
Bundle bParamsDecoders3 = new Bundle();
bParamsDecoders3.putString("device_id","BARCODE");
bParamsDecoders3.putString("decoder","Codebar");
bParamsDecoders3.putString("enabled","true");
//LABEL ID BUNDLE PROPERTIES
Bundle bParamsLabelID1 = new Bundle();
bParamsLabelID1.putString("device_id","BARCODE");
bParamsLabelID1.putString("label_id","UDI_GS1");
bParamsLabelID1.putString("enabled","true");
//LABEL ID BUNDLE PROPERTIES
Bundle bParamsLabelID2 = new Bundle();
bParamsLabelID2.putString("device_id","BARCODE");
bParamsLabelID2.putString("label_id","UDI_HIBCC");
bParamsLabelID2.putString("enabled","true");
ArrayList<Bundle> bParamsActionList = new ArrayList<Bundle>();
bParamsActionList.add(bParamsAction1);
bParamsActionList.add(bParamsAction2);
ArrayList<Bundle> bParamsDeviceList = new ArrayList<Bundle>();
bParamsDeviceList.add(bParamsDevice1);
bParamsDeviceList.add(bParamsDevice2);
bParamsDeviceList.add(bParamsDevice3);
ArrayList<Bundle> bParamsDecoderList = new ArrayList<Bundle>();
bParamsDecoderList.add(bParamsDecoders1);
bParamsDecoderList.add(bParamsDecoders2);
bParamsDecoderList.add(bParamsDecoders3);
ArrayList<Bundle> bParamsLabelIDList = new ArrayList<Bundle>();
bParamsLabelIDList.add(bParamsLabelID1);
bParamsLabelIDList.add(bParamsLabelID2);
bParamsRule1.putParcelableArrayList("ACTIONS",bParamsActionList);
bParamsRule1.putParcelableArrayList("DEVICES",bParamsDeviceList);
bParamsRule1.putParcelableArrayList("DECODERS",bParamsDecoderList);
bParamsRule1.putParcelableArrayList("LABEL_IDS",bParamsLabelIDList);
Bundle bParamsRule2 = new Bundle();
bParamsRule2.putString("name","Rule30");
bParamsRule2.putString("enabled","true");
bParamsRule2.putString("alldevices","true");
bParamsRule2.putString("string","cde");
bParamsRule2.putString("string_pos","3");
bParamsRule2.putString("string_len","5");
ArrayList<Bundle> bParamsList = new ArrayList<Bundle>();
bParamsList.add(bParamsRule1);
bParamsList.add(bParamsRule2);
bConfig.putParcelableArrayList("PARAM_LIST", bParamsList);
bMain.putBundle("PLUGIN_CONFIG", bConfig);
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
i.putExtra("SEND_RESULT","LAST_RESULT");
// i.putExtra("SEND_RESULT", "true"); // For versions prior to DataWedge 7.1
i.putExtra("COMMAND_IDENTIFIER", "ADF_API");
this.sendBroadcast(i);
// GET RESULT CODE
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 = new Bundle();
String resultInfo = "";
if(intent.hasExtra("RESULT_INFO")){
bundle = intent.getBundleExtra("RESULT_INFO");
Set<String> keys = bundle.keySet();
for (String key: keys) {
resultInfo += key + ": "+bundle.getString(key) + "\n";
}
}
String text = "Command: "+command+"\n" +
"Result: " +result+"\n" +
"Result Info: " +resultInfo + "\n" +
"CID:"+commandidentifier;
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
};
Set TOKEN processing
// SetConfig [Start]
Bundle bMain = new Bundle();
Bundle bConfigToken = new Bundle();
Bundle bParamsToken = new Bundle();
bParamsToken.putString("send_tokens_option", "BARCODES_TOKENS"); // Supported Values: DISABLED, TOKENS, BARCODES_TOKENS
bParamsToken.putString("token_separator", "LF"); //Supported Values:None, TAB, CR, LF, NONE
bParamsToken.putString("multibarcode_separator", "LF"); //Supported Values:None, TAB, CR, LF, NONE
Bundle tokenOrder_manufacturing_date_original = new Bundle();
tokenOrder_manufacturing_date_original.putString("name", "manufacturing_date_original");
tokenOrder_manufacturing_date_original.putString("enabled", "true");
Bundle tokenOrder_expiration_date_original = new Bundle();
tokenOrder_expiration_date_original.putString("name", "expiration_date_original");
tokenOrder_expiration_date_original.putString("enabled", "true");
Bundle tokenOrder_di = new Bundle();
tokenOrder_di.putString("name", "di");
tokenOrder_di.putString("enabled", "true");
Bundle tokenOrder_lot_number = new Bundle();
tokenOrder_lot_number.putString("name", "lot_number");
tokenOrder_lot_number.putString("enabled", "true");
Bundle tokenOrder_serial_number = new Bundle();
tokenOrder_serial_number.putString("name", "serial_number");
tokenOrder_serial_number.putString("enabled", "true");
Bundle tokenOrder_mpho_lot_number = new Bundle();
tokenOrder_mpho_lot_number.putString("name", "mpho_lot_number");
tokenOrder_mpho_lot_number.putString("enabled", "true");
Bundle tokenOrder_donation_id = new Bundle();
tokenOrder_donation_id.putString("name", "donation_id");
tokenOrder_donation_id.putString("enabled", "true");
Bundle tokenOrder_labeler_identification_code = new Bundle();
tokenOrder_labeler_identification_code.putString("name", "labeler_identification_code");
tokenOrder_labeler_identification_code.putString("enabled", "true");
Bundle tokenOrder_product_or_catalog_number = new Bundle();
tokenOrder_product_or_catalog_number.putString("name", "product_or_catalog_number");
tokenOrder_product_or_catalog_number.putString("enabled", "true");
Bundle tokenOrder_unit_of_measure_id = new Bundle();
tokenOrder_unit_of_measure_id.putString("name", "unit_of_measure_id");
tokenOrder_unit_of_measure_id.putString("enabled", "false");
Bundle tokenOrder_quantity = new Bundle();
tokenOrder_quantity.putString("name", "quantity");
tokenOrder_quantity.putString("enabled", "false");
// Specify the token order
ArrayList<Bundle> tokenOrderList = new ArrayList<>();
tokenOrderList.add(tokenOrder_manufacturing_date_original);
tokenOrderList.add(tokenOrder_expiration_date_original);
tokenOrderList.add(tokenOrder_lot_number);
tokenOrderList.add(tokenOrder_di);
tokenOrderList.add(tokenOrder_serial_number);
tokenOrderList.add(tokenOrder_mpho_lot_number);
tokenOrderList.add(tokenOrder_donation_id);
tokenOrderList.add(tokenOrder_labeler_identification_code);
tokenOrderList.add(tokenOrder_product_or_catalog_number);
tokenOrderList.add(tokenOrder_unit_of_measure_id);
tokenOrderList.add(tokenOrder_quantity);
bParamsToken.putParcelableArrayList("token_order", tokenOrderList);
bConfigToken.putString("PLUGIN_NAME", "TOKEN");
bConfigToken.putString("OUTPUT_PLUGIN_NAME", "KEYSTROKE"); // Tokens are supported only in KEYSTROKE and IP plugins only
bConfigToken.putString("RESET_CONFIG", "true");
bConfigToken.putBundle("PARAM_LIST", bParamsToken);
bMain.putBundle("PLUGIN_CONFIG", bConfigToken);
bMain.putString("PROFILE_NAME", "Profile007");
bMain.putString("PROFILE_ENABLED", "true");
bMain.putString("CONFIG_MODE", "CREATE_IF_NOT_EXIST");
Intent iSetConfig = new Intent();
iSetConfig.setAction("com.symbol.datawedge.api.ACTION");
iSetConfig.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
iSetConfig.putExtra("SEND_RESULT", "LAST_RESULT");
iSetConfig.putExtra("COMMAND_IDENTIFIER", "INTENT_API");
// SetConfig [End]
this.sendBroadcast(iSetConfig);
Set KEYSTROKE output
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
registerReceivers();
}
@Override
protected void onResume() {
super.onResume();
setKeystrokeOutputPluginConfiguration();
}
private void registerReceivers() {
IntentFilter filter = new IntentFilter();
filter.addAction("com.symbol.datawedge.api.RESULT_ACTION");
filter.addCategory("android.intent.category.DEFAULT");
registerReceiver(datawedgeKeystrokeNIntentStatusBR, filter);
}
private BroadcastReceiver datawedgeKeystrokeNIntentStatusBR = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String command = intent.getStringExtra("COMMAND").equals("") ? "EMPTY" : intent.getStringExtra("COMMAND");
String commandIdentifier = intent.getStringExtra("COMMAND_IDENTIFIER").equals("") ? "EMPTY" : intent.getStringExtra("COMMAND_IDENTIFIER");
String result = intent.getStringExtra("RESULT").equals("") ? "EMPTY" : 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) {
resultInfo += key + ": " + bundle.getString(key) + "\n";
}
}
String text="\n"+"Command: " + command + "\n" +
"Result: " + result + "\n" +
"Result Info: " + resultInfo + "\n" +
"CID: " + commandIdentifier;
Log.d("TAG”,text);
}
};
public void setKeystrokeOutputPluginConfiguration() {
Bundle configBundle = new Bundle();
configBundle.putString("PROFILE_NAME","UserProfile");
configBundle.putString("PROFILE_ENABLED","true");
configBundle.putString("CONFIG_MODE","CREATE_IF_NOT_EXIST");
Bundle bConfig = new Bundle();
bConfig.putString("PLUGIN_NAME", "KEYSTROKE");
Bundle bParams = new Bundle();
bParams.putString("keystroke_output_enabled","true");
bParams.putString("keystroke_action_char","9"); // 0, 9 , 10, 13
bParams.putString("keystroke_delay_extended_ascii","500");
bParams.putString("keystroke_delay_control_chars","800");
bConfig.putBundle("PARAM_LIST", bParams);
configBundle.putBundle("PLUGIN_CONFIG", bConfig);
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SET_CONFIG", configBundle);
i.putExtra("SEND_RESULT","LAST_RESULT");
// i.putExtra("SEND_RESULT", "true"); // For versions prior to DataWedge 7.1
i.putExtra("COMMAND_IDENTIFIER", "KEYSTROKE_API");
this.sendBroadcast(i);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(datawedgeKeystrokeNIntentStatusBR);
}
Set IP output
// SetConfig [Start]
Bundle bMain = new Bundle();
Bundle bConfigIPOutput = new Bundle();
Bundle bParamsIPOutput = new Bundle();
bParamsIPOutput.putString("ip_output_enabled", "true");
bParamsIPOutput.putString("ip_output_ip_wedge_enabled", "false");
bParamsIPOutput.putString("ip_output_protocol", "UDP"); //Supported Values: TCP: UDP
bParamsIPOutput.putString("ip_output_address", "192.168.0.1"); //Supported Values : IP Address format
bParamsIPOutput.putString("ip_output_port", "55555"); //Supported Values : 1 - 65535
bConfigIPOutput.putString("PLUGIN_NAME", "IP");
bConfigIPOutput.putString("RESET_CONFIG", "true");
bConfigIPOutput.putBundle("PARAM_LIST", bParamsIPOutput);
ArrayList<Bundle> bundlePluginConfig = new ArrayList<>();
bundlePluginConfig.add(bConfigIPOutput);
bMain.putParcelableArrayList("PLUGIN_CONFIG", bundlePluginConfig);
bMain.putString("PROFILE_NAME", "Profile007");
bMain.putString("PROFILE_ENABLED", "true");
bMain.putString("CONFIG_MODE", "CREATE_IF_NOT_EXIST");
Intent iSetConfig = new Intent();
iSetConfig.setAction("com.symbol.datawedge.api.ACTION");
iSetConfig.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
iSetConfig.putExtra("SEND_RESULT", "LAST_RESULT");
iSetConfig.putExtra("COMMAND_IDENTIFIER", "INTENT_API");
// SetConfig [End]
this.sendBroadcast(iSetConfig);
Set INTENT output
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
registerReceivers();
}
@Override
protected void onResume() {
super.onResume();
setIntentOutputPluginConfiguration();
}
private void registerReceivers() {
IntentFilter filter = new IntentFilter();
filter.addAction("com.symbol.datawedge.api.RESULT_ACTION");
filter.addCategory("android.intent.category.DEFAULT");
registerReceiver(datawedgeKeystrokeNIntentStatusBR, filter);
}
private BroadcastReceiver datawedgeKeystrokeNIntentStatusBR = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String command = intent.getStringExtra("COMMAND").equals("") ? "EMPTY" : intent.getStringExtra("COMMAND");
String commandIdentifier = intent.getStringExtra("COMMAND_IDENTIFIER").equals("") ? "EMPTY" : intent.getStringExtra("COMMAND_IDENTIFIER");
String result = intent.getStringExtra("RESULT").equals("") ? "EMPTY" : 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) {
resultInfo += key + ": " + bundle.getString(key) + "\n";
}
}
String text ="\n" + "Command: " + command + "\n" +
"Result: " + result + "\n" +
"Result Info: " + resultInfo + "\n" +
"CID: " + commandIdentifier;
Log.d("TAG”,text);
}
};
public void setIntentOutputPluginConfiguration() {
Bundle bMain = new Bundle();
Bundle bConfig = new Bundle();
Bundle bParams = new Bundle();
bParams.putString("intent_output_enabled","true");
bParams.putString("intent_action","com.symbol.dwudiusertokens.udi");
bParams.putString("intent_category","zebra.intent.dwudiusertokens.UDI");
bParams.putInt("intent_delivery",2); //Use "0" for Start Activity, "1" for Start Service, "2" for Broadcast
bConfig.putString("PLUGIN_NAME", "INTENT");
bConfig.putString("RESET_CONFIG","false");
bConfig.putBundle("PARAM_LIST", bParams);
bMain.putBundle("PLUGIN_CONFIG", bConfig);
bMain.putString("PROFILE_NAME","UserProfile");
bMain.putString("PROFILE_ENABLED","true");
bMain.putString("CONFIG_MODE","CREATE_IF_NOT_EXIST");
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SET_CONFIG",bMain);
i.putExtra("SEND_RESULT","LAST_RESULT");
// i.putExtra("SEND_RESULT", "true"); // For versions prior to DataWedge 7.1
i.putExtra("COMMAND_IDENTIFIER", "INTENT_API");
this.sendBroadcast(i);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(datawedgeKeystrokeNIntentStatusBR);
}
Set Component Information for Intent Output
Bundle bMain = new Bundle();
ArrayList<Bundle> bundlePluginConfig = new ArrayList<>();
Bundle bConfigIntent = new Bundle();
Bundle bParamsIntent = new Bundle();
bParamsIntent.putString("intent_output_enabled", "true");
bParamsIntent.putString("intent_action", "com.zebra.myapplication");
bParamsIntent.putString("intent_category", "android.intent.category.DEFAULT");
ArrayList<Bundle> bundleComponentInfo = new ArrayList<Bundle>();
Bundle component0 = new Bundle();
component0.putString("PACKAGE_NAME","com.symbol.test");
component0.putString("SIGNATURE","E22084421EAE1A65EEBCB68D4341FE3C2BB6BEC9D");
bundleComponentInfo.add(component0);
Bundle component1 = new Bundle();
component1.putString("PACKAGE_NAME","com.symbol.testpackage");
component1.putString("SIGNATURE","E22084421EAE1A65EEBCB68D4341FE3C2BB6BEC9");
bundleComponentInfo.add(component1);
Bundle component2 = new Bundle();
component2.putString("PACKAGE_NAME","com.symbol.test");
component2.putString("SIGNATURE","E22084421EAE1A65EEBCB68D4341FE3C2BB6BEC9E");
bundleComponentInfo.add(component2);
bParamsIntent.putParcelableArrayList("intent_component_info", bundleComponentInfo);
bConfigIntent.putString("PLUGIN_NAME", "INTENT");
bConfigIntent.putString("RESET_CONFIG", "true");
bConfigIntent.putBundle("PARAM_LIST", bParamsIntent);
bundlePluginConfig.add(bConfigIntent);
bMain.putParcelableArrayList("PLUGIN_CONFIG", bundlePluginConfig);
bMain.putString("PROFILE_NAME", "Profile009");
bMain.putString("PROFILE_ENABLED", "true");
bMain.putString("CONFIG_MODE", "CREATE_IF_NOT_EXIST");
Intent iSetConfig = new Intent();
iSetConfig.setAction("com.symbol.datawedge.api.ACTION");
iSetConfig.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
iSetConfig.putExtra("SEND_RESULT", "LAST_RESULT");
iSetConfig.putExtra("COMMAND_IDENTIFIER", "SET_INTENT_OUTPUT");
this.sendBroadcast(iSetConfig);
Get SHA1 of application signature
Retrieve SHA1 hash value of application signature from Component Information for Intent Output:
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SignatureCheck {
void main(Context context)
{
try {
Signature[] signatures = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures;
for (Signature sig : signatures) {
String sha1Signature = getSHA1(sig.toByteArray());
}
}
catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
public static String getSHA1(byte[] sig)
{
MessageDigest digest = null;
try {
digest = MessageDigest.getInstance("SHA1");
}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
digest.update(sig);
byte[] hashtext = digest.digest();
return bytesToHex(hashtext);
}
public static String bytesToHex(byte[] bytes)
{
final char[] hexArray = {'0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'A', 'B', 'C', 'D', 'E', 'F'};
char[] hexChars = new char[bytes.length * 2];
int v;
for (int j = 0; j < bytes.length; j++) {
v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
}
Set/Get result codes
Command and configuration intent parameters determine whether to send result codes (disabled by default). When using SEND_RESULT
, the COMMAND_IDENTIFIER
is used to match the result code with the originating intent. Sample usage of these parameters is shown below.
Note: This generic code must be modified to match the API being used.
// send the intent
Intent i = new Intent();
i.setAction(ACTION);
i.putExtra("com.symbol.datawedge.api.CREATE_PROFILE", "Profile1");
// request and identify the result code
i.putExtra("SEND_RESULT","LAST_RESULT");
// i.putExtra("SEND_RESULT", "true"); // For versions prior to DataWedge 7.1 i.putExtra("COMMAND_IDENTIFIER","123456789"); this.sendBroadcast(i);
// register to receive the result
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 = new Bundle();
String resultInfo = "";
if(intent.hasExtra("RESULT_INFO")){
bundle = intent.getBundleExtra("RESULT_INFO");
Set<String> keys = bundle.keySet();
for (String key: keys) {
resultInfo += key + ": "+bundle.getString(key) + "\n";
}
}
String text = "Command: "+command+"\n" +
"Result: " +result+"\n" +
"Result Info: " +resultInfo + "\n" +
"CID:"+commandidentifier;
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
};
Use the internal imager for scanning
Bundle bConfig = new Bundle();
bConfig.putString("PLUGIN_NAME","BARCODE");
Bundle bParams = new Bundle();
bParams.putString("scanner_input_enabled", "true");
//
// auto or valid scanner identifier:
//
bParams.putString("scanner_selection_by_identifier", "INTERNAL_IMAGER");
bConfig.putBundle("PARAM_LIST",bParams);
Configure an inter-character delay
private Integer ctrlCharacterDelayValue;
private Integer genericCharacterDelayValue;
private Boolean flagExtendedASCIIOnly;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
registerReceivers();
ctrlCharacterDelayValue = null;
genericCharacterDelayValue = null;
flagExtendedASCIIOnly = null;
}
private void registerReceivers() {
IntentFilter filter = new IntentFilter();
filter.addAction("com.symbol.datawedge.api.RESULT_ACTION");
filter.addCategory(Intent.CATEGORY_DEFAULT);
registerReceiver(broadcastReceiver, filter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(broadcastReceiver);
}
//Set configuration
public void setKeystrokeOutputPluginConfiguration(View v) {
Bundle configBundle = new Bundle();
configBundle.putString("PROFILE_NAME","Profile0 (default)");
configBundle.putString("PROFILE_ENABLED","true");
configBundle.putString("CONFIG_MODE","UPDATE");
Bundle bConfig = new Bundle();
bConfig.putString("PLUGIN_NAME", "KEYSTROKE");
Bundle bParams = new Bundle();
bParams.putString("keystroke_output_enabled","true");
if(ctrlCharacterDelayValue!=null){
bParams.putString("keystroke_delay_control_chars",ctrlCharacterDelayValue+"");
}
if(genericCharacterDelayValue !=null){
bParams.putString("keystroke_character_delay", genericCharacterDelayValue +"");
}
if(flagExtendedASCIIOnly!=null){
bParams.putString("keystroke_delay_multibyte_chars_only", flagExtendedASCIIOnly +"");
}
bConfig.putBundle("PARAM_LIST", bParams);
configBundle.putBundle("PLUGIN_CONFIG", bConfig);
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SET_CONFIG", configBundle);
i.putExtra("SEND_RESULT","LAST_RESULT");
// i.putExtra("SEND_RESULT", "true"); // For versions prior to DataWedge 7.1
i.putExtra("COMMAND_IDENTIFIER", "KEYSTROKE_API");
this.sendBroadcast(i);
}
//broadcast receiver
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d(TAG, "#DataWedge-APP# Action: " + action);
//result of set config
if(action.equals("com.symbol.datawedge.api.RESULT_ACTION")){
Bundle extrasBundle = intent.getExtras();
Set<String> keys = extrasBundle.keySet();
if(keys!=null&&keys.contains("RESULT")){
String result = (String)extrasBundle.get("RESULT");
Log.d(TAG,"Result:"+result);
//get additional info
Bundle resultInforBundle = (Bundle) extrasBundle.get("RESULT_INFO");
Object resultCode = resultInforBundle.get("RESULT_CODE");
if(resultCode instanceof String){
String code = (String)resultCode;
Log.d(TAG,"Code:"+code);
}else if(resultCode instanceof String[]){
String[] codesArray = (String[])resultCode;
if(codesArray!=null){
for(String code : codesArray){
Log.d(TAG,"Code:"+code);
}
}
}
}
}//end result of set config
}//end onReceive
};
Set configuration for multiple modules (full profile) in a single intent
Support started with DataWedge 7.1. Previous DataWedge versions required multiple intent calls to set configuration for multiple modules (plugins, APP_LIST, and Data Capture Plus).
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter filter = new IntentFilter();
filter.addAction("com.symbol.datawedge.api.RESULT_ACTION");
filter.addCategory("android.intent.category.DEFAULT");
registerReceiver(broadcastReceiver, filter);
setConfig();
}
public void setConfig() {
/**
* Setting configuration for:
* Intent Output Plugin
* Barcode Input Plugin
* MSR input Plugin
* IP Output Plugin
* Tokens for IP Output Plugin
* Application Association
* DCP (Data Capture Plus)
*/
// SetConfig [Start]
Bundle bMain = new Bundle();
Bundle bConfigIntent = new Bundle();
Bundle bParamsIntent = new Bundle();
bParamsIntent.putString("intent_output_enabled", "true");
bParamsIntent.putString("intent_action", "com.symbol.dwudiusertokens.udi");
bParamsIntent.putString("intent_category", "zebra.intent.dwudiusertokens.UDI");
bParamsIntent.putInt("intent_delivery", 5); //Use "0" for Start Activity, "1" for Start Service, "2" for Broadcast, "3" for start foreground service
bConfigIntent.putString("PLUGIN_NAME", "INTENT");
bConfigIntent.putString("RESET_CONFIG", "false");
bConfigIntent.putBundle("PARAM_LIST", bParamsIntent);
Bundle bConfigSimulScan = new Bundle();
Bundle bParamsSimulScan = new Bundle();
bParamsSimulScan.putString("simulscan_input_enabled", "true");
bParamsSimulScan.putString("simulscan_input_source", "Imager"); //Supported values: Camera, Imager, Default
bParamsSimulScan.putString("simulscan_region_separator", "TAB"); //Supported Values:None, TAB, CR, LF, NONE
bParamsSimulScan.putString("simulscan_log_dir", "/storage/zebra/intent/");
bParamsSimulScan.putString("simulscan_enable_timestamp", "true");
Bundle templateParamsBundle = new Bundle();
templateParamsBundle.putString("dynamic_quantity", "99");
bParamsSimulScan.putString("simulscan_template", "UserDefinedQuantity.xml"); // Ex: UserDefinedQuantity.xml, Default - BankCheck.xml, Default - Barcode 1.xml, Default - Barcode 10.xml, Default - Barcode 2.xml, Default - Barcode 4.xml, Default - Barcode 5.xml, Default - BookNumber.xml, Default - DocCap + Optional Barcode.xml, Default - DocCap + Required Barcode.xml, Default - TravelDoc.xml, Default - Unstructured Multi-Line.xml, Default - Unstructured Single Line.xml
bParamsSimulScan.putBundle("simulscan_template_params",templateParamsBundle);
bConfigSimulScan.putString("PLUGIN_NAME", "SIMULSCAN");
bConfigSimulScan.putString("RESET_CONFIG", "false");
bConfigSimulScan.putBundle("PARAM_LIST", bParamsSimulScan);
Bundle bConfigBarcode = new Bundle();
Bundle bParamsBarcode = new Bundle();
bParamsBarcode.putString("scanner_selection","auto");
bParamsBarcode.putString("scanner_input_enabled","true");
bConfigBarcode.putString("PLUGIN_NAME", "BARCODE");
bConfigBarcode.putString("RESET_CONFIG", "false");
bConfigBarcode.putBundle("PARAM_LIST", bParamsBarcode);
Bundle bConfigMSR = new Bundle();
Bundle bParamsMSR = new Bundle();
bParamsMSR.putString("msr_input_enabled", "true");
bConfigMSR.putString("PLUGIN_NAME", "MSR");
bConfigMSR.putString("RESET_CONFIG", "false");
bConfigMSR.putBundle("PARAM_LIST", bParamsMSR);
Bundle bConfigIPOutput = new Bundle();
Bundle bParamsIPOutput = new Bundle();
bParamsIPOutput.putString("ip_output_enabled", "true");
bParamsIPOutput.putString("ip_output_ip_wedge_enabled", "false");
bParamsIPOutput.putString("ip_output_protocol", "UDP"); //Supported Values: TCP: UDP
bParamsIPOutput.putString("ip_output_address", "192.168.0.1"); //Supported Values : IP Address format
bParamsIPOutput.putString("ip_output_port", "55555"); //Supported Values : 1 - 65535
bConfigIPOutput.putString("PLUGIN_NAME", "IP");
bConfigIPOutput.putString("RESET_CONFIG", "false");
bConfigIPOutput.putBundle("PARAM_LIST", bParamsIPOutput);
Bundle bConfigToken = new Bundle();
Bundle bParamsToken = new Bundle();
bParamsToken.putString("send_tokens_option", "BARCODES_TOKENS"); // Supported Values: DISABLED, TOKENS, BARCODES_TOKENS
bParamsToken.putString("token_separator", "LF"); //Supported Values:None, TAB, CR, LF, NONE
bParamsToken.putString("multibarcode_separator", "LF"); //Supported Values:None, TAB, CR, LF, NONE
Bundle tokenOrder_manufacturing_date_original = new Bundle();
tokenOrder_manufacturing_date_original.putString("name","manufacturing_date_original");
tokenOrder_manufacturing_date_original.putString("enabled","true");
Bundle tokenOrder_expiration_date_original = new Bundle();
tokenOrder_expiration_date_original.putString("name","expiration_date_original");
tokenOrder_expiration_date_original.putString("enabled","true");
Bundle tokenOrder_di = new Bundle();
tokenOrder_di.putString("name","di");
tokenOrder_di.putString("enabled","true");
Bundle tokenOrder_lot_number = new Bundle();
tokenOrder_lot_number.putString("name","lot_number");
tokenOrder_lot_number.putString("enabled","true");
Bundle tokenOrder_serial_number = new Bundle();
tokenOrder_serial_number.putString("name","serial_number");
tokenOrder_serial_number.putString("enabled","true");
Bundle tokenOrder_mpho_lot_number = new Bundle();
tokenOrder_mpho_lot_number.putString("name","mpho_lot_number");
tokenOrder_mpho_lot_number.putString("enabled","true");
Bundle tokenOrder_donation_id = new Bundle();
tokenOrder_donation_id.putString("name","donation_id");
tokenOrder_donation_id.putString("enabled","true");
Bundle tokenOrder_labeler_identification_code = new Bundle();
tokenOrder_labeler_identification_code.putString("name","labeler_identification_code");
tokenOrder_labeler_identification_code.putString("enabled","true");
Bundle tokenOrder_product_or_catalog_number = new Bundle();
tokenOrder_product_or_catalog_number.putString("name","product_or_catalog_number");
tokenOrder_product_or_catalog_number.putString("enabled","true");
Bundle tokenOrder_unit_of_measure_id = new Bundle();
tokenOrder_unit_of_measure_id.putString("name","unit_of_measure_id");
tokenOrder_unit_of_measure_id.putString("enabled","true");
Bundle tokenOrder_quantity = new Bundle();
tokenOrder_quantity.putString("name","quantity");
tokenOrder_quantity.putString("enabled","false");
ArrayList<Bundle> tokenOrderList = new ArrayList<>();
tokenOrderList.add(tokenOrder_manufacturing_date_original);
tokenOrderList.add(tokenOrder_expiration_date_original);
tokenOrderList.add(tokenOrder_lot_number);
tokenOrderList.add(tokenOrder_di);
tokenOrderList.add(tokenOrder_serial_number);
tokenOrderList.add(tokenOrder_mpho_lot_number);
tokenOrderList.add(tokenOrder_donation_id);
tokenOrderList.add(tokenOrder_labeler_identification_code);
tokenOrderList.add(tokenOrder_product_or_catalog_number);
tokenOrderList.add(tokenOrder_unit_of_measure_id);
tokenOrderList.add(tokenOrder_quantity);
bParamsToken.putParcelableArrayList("token_order", tokenOrderList);
bConfigToken.putString("PLUGIN_NAME", "TOKEN");
bConfigToken.putString("OUTPUT_PLUGIN_NAME","IP");
bConfigToken.putString("RESET_CONFIG", "true");
bConfigToken.putBundle("PARAM_LIST", bParamsToken);
ArrayList<Bundle> bundlePluginConfig = new ArrayList<>();
bundlePluginConfig.add(bConfigIntent);
bundlePluginConfig.add(bConfigBarcode);
bundlePluginConfig.add(bConfigSimulScan);
bundlePluginConfig.add(bConfigMSR);
bundlePluginConfig.add(bConfigIPOutput);
bundlePluginConfig.add(bConfigToken);
bMain.putParcelableArrayList("PLUGIN_CONFIG", bundlePluginConfig);
//AppList[Start]
Bundle bundleApp1 = new Bundle();
bundleApp1.putString("PACKAGE_NAME", "com.symbol.emdk.simulscansample1");
bundleApp1.putStringArray("ACTIVITY_LIST", new String[]{
"com.symbol.emdk.simulscansample1.DeviceControl",
"com.symbol.emdk.simulscansample1.MainActivity",
"com.symbol.emdk.simulscansample1.ResultsActivity",
"com.symbol.emdk.simulscansample1.ResultsActivity2",
"com.symbol.emdk.simulscansample1.SettingsFragment1"});
Bundle bundleApp2 = new Bundle();
bundleApp2.putString("PACKAGE_NAME", "com.example.intents.datawedgeintent");
bundleApp2.putStringArray("ACTIVITY_LIST", new String[]{
"com.example.intents.datawedgeintent.DeviceControl",
"com.example.intents.datawedgeintent.MainActivity",
"com.example.intents.datawedgeintent.ResultsActivity",
"com.example.intents.datawedgeintent.SettingsFragment1"});
Bundle bundleApp3 = new Bundle();
bundleApp3.putString("PACKAGE_NAME", "com.symbol.pubudu");
bundleApp3.putStringArray("ACTIVITY_LIST", new String[]{"*"});
Bundle bundleApp4 = new Bundle();
bundleApp4.putString("PACKAGE_NAME", "com.symbol.myzebraapp");
bundleApp4.putStringArray("ACTIVITY_LIST", new String[]{"*"});
// ADD APP_LIST BUNDLE(S) INTO THE MAIN BUNDLE
bMain.putParcelableArray("APP_LIST", new Bundle[]{
bundleApp1
, bundleApp2
, bundleApp3
, bundleApp4
});
// AppList [End]
Bundle bConfigDCP = new Bundle();
Bundle bParamsDCP = new Bundle();
bParamsDCP.putString("dcp_input_enabled", "true");
bParamsDCP.putString("dcp_dock_button_on", "LEFT"); //Supported values: BOTH - Left or Right, LEFT - Left only, RIGHT - Right only
bParamsDCP.putString("dcp_start_in", "FULLSCREEN"); //Supported Values: FULLSCREEN, BUTTON, BUTTON_ONLY
bParamsDCP.putString("dcp_highest_pos", "10"); //Supported Values: 0 - 100
bParamsDCP.putString("dcp_lowest_pos", "20"); //Supported Values: 0 - 100
bParamsDCP.putString("dcp_drag_detect_time", "501"); //Supported Values: 0 - 1000
bConfigDCP.putString("RESET_CONFIG", "true");
bConfigDCP.putBundle("PARAM_LIST", bParamsDCP);
bMain.putBundle("DCP", bConfigDCP);
bMain.putString("PROFILE_NAME", "Profile007");
bMain.putString("PROFILE_ENABLED", "true");
bMain.putString("CONFIG_MODE", "CREATE_IF_NOT_EXIST");
Intent iSetConfig = new Intent();
iSetConfig.setAction("com.symbol.datawedge.api.ACTION");
iSetConfig.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
iSetConfig.putExtra("SEND_RESULT", "COMPLETE_RESULT"); //Supported values: NONE, LAST_RESULT, COMPLETE_RESULT
iSetConfig.putExtra("COMMAND_IDENTIFIER", "INTENT_API");
//SetConfig [End]
this.sendBroadcast(iSetConfig);
}
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
String strFinalResult = "";
String command = intent.getStringExtra("COMMAND");
String profileName = intent.getStringExtra("PROFILE_NAME");
String resultInfo = "";
if (action.equals("com.symbol.datawedge.api.RESULT_ACTION")) {
if (intent.hasExtra("RESULT_LIST")) { // returns for COMPLETE_RESULT
resultInfo += "ProfileName: " + profileName + "\n";
ArrayList<Bundle> result_list = (ArrayList)intent.getSerializableExtra("RESULT_LIST");
for (Bundle bundleResult : result_list) {
resultInfo +="\n\n";
Set<String> keys = bundleResult.keySet();
for (String key : keys) {
String val = bundleResult.getString(key);
if (val == null) {
if (bundleResult.getStringArray(key) != null) {
val = "";
for (String s : bundleResult.getStringArray(key)) {
val += "" + s + "\n";
}
}
}
resultInfo += key + ": " + val + "\n";
}
}
}
if (command != null) {
if (command.equalsIgnoreCase("com.symbol.datawedge.api.SET_CONFIG")) {
Log.d("TAG", "#IntentApp# \n\nSetConfig status received:\nResultInfo: \n" + resultInfo);
}
}
}
}
};
Set global scanner configuration
Bundle bConfig = new Bundle();
bConfig.putString("PLUGIN_NAME","BARCODE");
Bundle bParams = new Bundle();
bParams.putString("scanner_input_enabled", "true");
bParams.putString("configure_all_scanners", "true"); // configure for all scanners
bConfig.putBundle("PARAM_LIST", bParams);
Set presentation mode
// MAIN BUNDLE PROPERTIES
Bundle bMain = new Bundle();
bMain.putString("PROFILE_NAME", "Profile1");
bMain.putString("PROFILE_ENABLED", "true");
bMain.putString("CONFIG_MODE", "CREATE_IF_NOT_EXIST");
// PLUGIN_CONFIG BUNDLE PROPERTIES
Bundle bConfig = new Bundle();
bConfig.putString("PLUGIN_NAME", "BARCODE");
bConfig.putString("RESET_CONFIG", "true");
// PARAM_LIST BUNDLE PROPERTIES
Bundle bParams = new Bundle();
bParams.putString("scanner_selection_by_identifier", "INTERNAL_IMAGER");
bParams.putString("scanner_input_enabled" , "true");
bParams.putString("aim_type", "4"); // presentation mode
bParams.putString("scene_detect_qualifier ", "0"); // 0- None and 1- Proximity Sensor Input
…
bConfig.putBundle("PARAM_LIST", bParams);
bMain.putBundle("PLUGIN_CONFIG", bConfig);
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
this.sendBroadcast(i);
Character Set Configuration
// MAIN BUNDLE PROPERTIES
Bundle bMain = new Bundle();
bMain.putString("PROFILE_NAME", "ProfileCharSet");
bMain.putString("PROFILE_ENABLED", "true");
bMain.putString("CONFIG_MODE", "CREATE_IF_NOT_EXIST");
// PLUGIN_CONFIG BUNDLE PROPERTIES
Bundle bConfig = new Bundle();
bConfig.putString("PLUGIN_NAME", "BARCODE");
bConfig.putString("RESET_CONFIG", "true");
// PARAM_LIST BUNDLE PROPERTIES
Bundle bParams = new Bundle();
bParams.putString("scanner_selection_by_identifier", "INTERNAL_IMAGER");
bParams.putString("charset_name", "AUTO");
bParams.putString("auto_charset_preferred_order", "GB2312;UTF-8");
bParams.putString("auto_charset_failure_option", "UTF-8");
bConfig.putBundle("PARAM_LIST", bParams);
bMain.putBundle("PLUGIN_CONFIG", bConfig);
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
this.sendBroadcast(i);
Set Enterprise Keyboard Configuration
//SetConfig [Start] Bundle bMain = new Bundle(); Bundle bConfigEKB = new Bundle();
Bundle bParamsEKB = new Bundle();
bParamsEKB.putString("ekb_enabled", "true"); // Supported values: true/false
Bundle layoutParams = new Bundle();
layoutParams.putString("layout_group", "EKBCustomLayouts");
layoutParams.putString("layout_name", "qwerty");
bParamsEKB.putBundle("ekb_layout", layoutParams);
//bParamsEKB.putBundle("ekb_layout", null); // To set to default
bConfigEKB.putString("RESET_CONFIG", "false");
bConfigEKB.putBundle("PARAM_LIST", bParamsEKB);
bMain.putBundle("EKB", bConfigEKB);
bMain.putString("PROFILE_NAME", "ZebraEKB");
bMain.putString("PROFILE_ENABLED", "true");
bMain.putString("CONFIG_MODE", "CREATE_IF_NOT_EXIST");
Intent iSetConfig = new Intent();
iSetConfig.setAction("com.symbol.datawedge.api.ACTION");
iSetConfig.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
iSetConfig.putExtra("SEND_RESULT", "LAST_RESULT");
iSetConfig.putExtra("COMMAND_IDENTIFIER", "INTENT_API");
//SetConfig [End]
this.sendBroadcast(iSetConfig);
Set Multi-Scanner Mode
Set and configure multi-scanner mode. The scanner parameter list is extended to support multiple configurations by passing an ArrayList to it. With single scanner support, a Bundle data type is passed as the scanner parameter list.
Bundle bMain = new Bundle();
bMain.putString("PROFILE_NAME", "Profile009");
bMain.putString("PROFILE_ENABLED", "true");
bMain.putString("CONFIG_MODE", "CREATE_IF_NOT_EXIST");
Bundle bConfig = new Bundle();
bConfig.putString("PLUGIN_NAME","BARCODE");
bConfig.putString("RESET_CONFIG","true");
bConfig.putString("SCANNER_INPUT_ENABLED","true");
//LEFT, RIGHT, CENTER, GUN, PROXIMITY
//AUTO,INTERNAL_IMAGER,INTERNAL_LASER,INTERNAL_CAMERA,SERIAL_SSI,BLUETOOTH_SSI,BLUETOOTH_RS6000,BLUETOOTH_DS2278,BLUETOOTH_DS3678,PLUGABLE_SSI,PLUGABLE_SSI_RS5000,USB_SSI_DS3608
Bundle scanner1Params = new Bundle();
scanner1Params.putString("scanner_selection_by_identifier", "INTERNAL_IMAGER");
scanner1Params.putStringArray("scanner_trigger_resource", new String[]{"LEFT", "RIGHT"}); //Required triggers
scanner1Params.putString("decoder_code11", "true");
scanner1Params.putString("decoder_code39", "false");
scanner1Params.putString("picklist", "1");
Bundle scanner2Params = new Bundle();
scanner2Params.putString("scanner_selection_by_identifier", "BLUETOOTH_RS6000");
scanner2Params.putStringArray("scanner_trigger_resource", new String[]{"CENTER"}); //Required triggers
scanner2Params.putString("decoder_code11", "true");
scanner2Params.putString("decoder_code128", "false");
scanner2Params.putString("picklist", "2");
ArrayList<Bundle> scannerParamList = new ArrayList<>();
scannerParamList.add(scanner1Params);
scannerParamList.add(scanner2Params);
bConfig.putParcelableArrayList("PARAM_LIST", scannerParamList);
bMain.putBundle("PLUGIN_CONFIG", bConfig); //true, false
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
i.putExtra("SEND_RESULT","LAST_RESULT");
i.putExtra("COMMAND_IDENTIFIER", "SET_CONFIG");
this.sendBroadcast(i);
SEE ALSO:
Zebra Support Central | Integrator Guides, Product Manuals, Software Downloads and Support
LaunchPad | Zebra Developer Community
Intent | Android Developers
Intents and Intent Filters | Android Developers
Android Intents | Tutorial