Set Config

DataWedge 7.4

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 - Added new DPM support.
  • DataWedge 7.4.44 - New Enterprise Keyboard Configuration feature.

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. Can be used in place of CREATE_PROFILE. Options:
    • CREATE_IF_NOT_EXIST: Creates the Profile if string in PROFILE_NAME is not present on device
    • OVERWRITE: If Profile exists, resets all options to default, then configures specified settings
    • UPDATE: Updates only specified settings
  • 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. 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
    • SIMULSCAN 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:

IMPORTANT:

  • 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

Also see the Result Codes guide for more information.


Scanner Input Parameters

Refer to Barcode Input for more information on decoders, decoder paramsters, and scan 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.

Decoders Decoder State Decoder Parameters Parameter Values
decoder_code11 true
false
decoder_code11_length1
decoder_code11_length2
Integer from 0–55
decoder_code11_redundancy
decoder_code11_report_check_digit
true
false
decoder_code11_verify_check_digit 0 - No Check Digit
1 - 1 Check Digit
2 - 2 Check Digits
decoder_code128 true
false
decoder_code128_length1
decoder_code128_length2
Integer from 0–55
decoder_code128_redundancy
decoder_code128_enable_plain
decoder_code128_enable_ean128
decoder_code128_enable_isbt128
decoder_code128_check_isbt_table
true
false
decoder_code128_isbt128_concat_mode 0 - Concat Mode Never
1 - Concat Mode Always
2 - Concat Mode Auto
decoder_code128_security_level 0 - Security Level 0
1 - Security Level 1
2 - Security Level 2
3 - Security Level 3
decoder_code128_enable_marginless_decode true
false
decoder_code128_ignore_fnc4 true
false
decoder_code39 true
false
decoder_code39_length1
decoder_code39_length2
Integer from 0–55
decoder_code39_verify_check_digit
decoder_code39_report_check_digit
decoder_code39_full_ascii
decoder_code39_redundancy
decoder_code39_convert_to_code32
decoder_code39_report_code32_prefix
decoder_code39_enable_marginless_decode
true
false
decoder_code39_security_level 0 - Security Level 0
1 - Security Level 1
2 - Security Level 2
3 - Security Level 3
decoder_dotcode true
false
decoder_dotcode_inverse Disabled (0)
Enabled (1)
Auto (2)
decoder_dotcode_mirror Disabled (0)
Enabled (1)
Auto (2)
decoder_ean13 true
false
N/A N/A
decoder_ean8 true
false
decoder_ean8_convert_to_ean13 true
false
decoder_korean_3of5 true
false
N/A N/A
decoder_chinese_2of5 true
false
N/A N/A
decoder_d2of5 true
false
decoder_d2of5_length1
decoder_d2of5_length2
Integer from 0–55
decoder_d2of5_redundancy true
false
decoder_trioptic39 true
false
decoder_trioptic39_redundancy true
false
decoder_code93 true
false
decoder_code93_length1
decoder_code93_length2
Integer from 0–55
decoder_code93_redundancy true
false
decoder_msi true
false
decoder_msi_length1
decoder_msi_length1
Integer from 0–55
decoder_msi_redundancy
decoder_msi_report_check_digit
true
false
decoder_msi_check_digit 0 - 1 Check Digit
1 - 2 Check Digits
decoder_msi_check_digit_scheme 0 - Mod-11-10
1 - Mod-10-10
decoder_codabar true
false
decoder_codabar_length1
decoder_codabar_length2
Integer from 0–55
decoder_codabar_redundancy
decoder_codabar_clsi_editing
decoder_codabar_notis_editing
true
false
decoder_upce0 true
false
decoder_upce0_report_check_digit true
false
decoder_upce0_preamble 0 - Preamble None
1 - Preamble Sys Char
2 - Preamble Country and Sys Char
decoder_upce0_convert_to_upca true
false
decoder_upce1 true
false
decoder_upce1_report_check_digit
decoder_upce1_convert_to_upca
true
false
decoder_upce1_preamble 0 - Preamble None
1 - Preamble Sys Char
2 - Preamble Country and Sys Char
decoder_upca true
false
decoder_upca_report_check_digit true
false
decoder_upca_preamble 0 - Preamble None
1 - Preamble Sys Char
2 - Preamble Country and Sys Char
decoder_us4state true
false
decoder_us4state_fics true
false
decoder_tlc39 true
false
N/A N/A
decoder_mailmark true
false
N/A N/A
decoder_hanxin true
false
decoder_hanxin_inverse 0 - Disable
1 - Enable
2 - Auto
decoder_signature true
false
decoder_signature_format 1 - JPG
3 - BMP
4 - TIFF
decoder_signature_width Integer from 16-1280
Default: 400
decoder_signature_height Integer from 16-800
Default: 400
decoder_signature_bpp 0 - 1 BPP (2 levels)
1 - 4 BPP (16 levels)
2 - 8 BPP (256 levels) (default)
Note: Not applicable to JPEG format.
decoder_signature_jpegquality Integer from 5-100 in increments of 5
Default: 65
decoder_webcode true
false
N/A N/A
decoder_matrix_2of5 true
false
decoder_matrix_2of5_length1
decoder_matrix_2of5_length2
Integer from 0–55
decoder_matrix_2of5_redundancy
decoder_matrix_2of5_report_check_digit
decoder_matrix_2of5_verify_check_digit
true
false
decoder_i2of5 true
false
decoder_i2of5_length1
decoder_i2of5_length2
Integer from 0–55
decoder_i2of5_redundancy
decoder_i2of5_report_check_digit
decoder_i2of5_report_check_digit
decoder_i2of5_convert_to_ean13
i20f5_enable_marginless_decode
true
false
decoder_i2of5_check_digit 0 - No Check Digit
1 - USS Check Digit
2 - OPCC Check Digit
decoder_i2of5_security_level 0 - Security Level 0
1 - Security Level 1
2 - Security Level 2
3 - Security Level 3
decoder_i2of5_enable_febraban true
false (default)
decoder_gs1_databar true
false
decoder_gs1_databar_lim
decoder_gs1_databar_exp
true
false
decoder_datamatrix true
false
N/A N/A
decoder_qrcode true
false
N/A N/A
decoder_grid_matrix true
false (default)
decoder_grid_matrix_inverse Disabled (0) - default
Enabled (1)
Auto (2)
decoder_grid_matrix_mirror Disabled (0) - default
Enabled (1)
Auto (2)
decoder_gs1_datamatrix true
false
N/A N/A
decoder_gs1_qrcode true
false
N/A N/A
decoder_pdf417 true
false
N/A N/A
decoder_pdf417 true
false
N/A N/A
decoder_composite_ab true
false
decoder_composite_ab_ucc_link_mode 0 - Link Flag Ignored
1 - Always Linked
2 - Auto Discriminate
decoder_composite_c true
false
N/A N/A
decoder_microqr true
false
N/A N/A
decoder_aztec true
false
N/A N/A
decoder_maxicode true
false
N/A N/A
decoder_micropdf true
false
N/A N/A
decoder_uspostnet true
false
N/A N/A
decoder_usplanet true
false
decoder_usplanet_report_check_digit true
false
decoder_australian_postal true
false
N/A N/A
decoder_uk_postal true
false
decoder_uk_postal_report_check_digit true
false
decoder_japanese_postal true
false
N/A N/A
decoder_canadian_postal true
false
N/A N/A
decoder_dutch_postal true
false
N/A N/A
decoder_gs1_lim_security_level 1 - Security Level 1
2 - Security Level 2
3 - Security Level 3
4 - Security Level 4
N/A N/A
Upcean_security_level 0 - Level 0
1 - Level 1
2 - Level 2
3 - Level 3
N/A N/A
upcean_supplemental2 true
false
N/A N/A
upcean_supplemental5 true
false
N/A N/A
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
N/A N/A
upcean_retry_count Integer from 2 to 20 N/A N/A
upcean_random_weight_check_digit true
false
N/A N/A
upcean_linear_decode true
false
N/A N/A
upcean_bookland true
false
N/A N/A
upcean_coupon true
false
N/A N/A
upcean_coupon_report 0 - Old Coupon Report Mode
1 - New Coupon Report Mode
2 - Both Coupon Report Modes
N/A N/A
upcean_ean_zero_extend true
false
N/A N/A
upcean_bookland_format 0 - Format ISBN-10
1 - Format ISBN-13
N/A N/A

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


Other Scanner Input Parameters:

Parameter Name Parameter Value
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
3 - MultiBarcode
multi_barcode_count Integer from 2–10
instant_reporting_enable true
false
scanner_selection_by_identifier See Scanner Identifiers table
trigger-wakeup true
false
scanner_input_enabled true
false
scanner_selection auto
0-n (valid scanner index from ENUMERATE_SCANNERS API)
databar_to_upc_ean true
false
upc_enable_marginless_decode true
false
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
scene_detect_qualifier 0 - None
1 - Proximity Sensor Input
aim_timer Integer from 0–60000
same_barcode_timeout Integer from 0–5000
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 URI – Can be a query of the available URIs from RingToneManager
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

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 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

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

Simulscan Input Parameters

All parameters are case sensitive.

Parameter Parameter Value
simulscan_input_enabled true
false
simulscan_input_source Camera
Imager
Default
simulscan_template Examples of available templates:
  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
simulscan_template_params [param name] [param value]
Note: Text in brackets[] to be replaced with designated text, e.g. dynamic quantity    9
simulscan_region_separator TAB
CR
LF
NONE
simulscan_log_dir [Valid path]
simulscan_enable_timestamp true
false
simulscan_get_images_via_files true
false

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 value)
voice_data_capture_end_phrase [blank] (default value)
voice_end_detection_timeout 0-30 (in seconds)
voice_tab_command true
false
voice_enter_command true
false
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

DCP Utilities Parameters

All parameters are case sensitive.

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.


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, SIMULSCAN 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, SIMULSCAN 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, SIMULSCAN 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
action _param_1

Moves the cursor forward by the specified number of characters (default=1)

SKIP_BACK
action _param_1

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
action_param_1

Known as "Move to" in the DataWedge UI, advances the cursor until the specified string is found

MOVE_PAST_A
action_param_1

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
action_param_1

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
action_param_1

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
action_param_1
action_param_2

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
action_param_1
action_param_2
action_param_3

Removes the number of characters specified in given positions when send actions are executed
action_param_1: (0=front (default); 1=in between; 2=end; 3=center)
action_param_2: start position (default=0)
action_param_3: number of characters (default=0)

STOP_REMOVE_CHARS

Stops removing characters from subsequent send actions

Data Sending

SEND_NEXT
action_param_1

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
action_param_1

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
action_param_1

Sends the specified string

SEND_CHAR
action_param_1

Sends the specified ASCII/ Unicode character. The maximum Unicode character value is U-10FFFF (1114111 in decimal)

Notes:

  • 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

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 the keystroke_delay_multibyte_chars_only parameter to true.
  • If both the keystroke_delay_extended_ascii and keystroke_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 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"); 
        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 Simulscan input configuration

// SetConfig [Start]
Bundle bMain = new Bundle();

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");
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

//Setting dynamic template params
Bundle templateParamsBundle = new Bundle();
templateParamsBundle.putString("dynamic_quantity", "100");
bParamsSimulScan.putBundle("simulscan_template_params",templateParamsBundle); 
// This param will work only for the templates that have dynamic params. For others, this will throw PARAMETER_NOT_SUPPORTED

bConfigSimulScan.putString("PLUGIN_NAME", "SIMULSCAN");
bConfigSimulScan.putString("RESET_CONFIG", "true");
bConfigSimulScan.putBundle("PARAM_LIST", bParamsSimulScan);

ArrayList<Bundle> bundlePluginConfig = new ArrayList<>();
bundlePluginConfig.add(bConfigSimulScan);
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 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

Bundle bMain = new Bundle();
bMain.putString("PROFILE_NAME", "DWDemo");
bMain.putString("PROFILE_ENABLED", "true");
bMain.putString("CONFIG_MODE", "CREATE_IF_NOT_EXIST");

Bundle bConfig = new Bundle();
bConfig.putString("PLUGIN_NAME","VOICE");
bConfig.putString("RESET_CONFIG","false");

Bundle bParams = new Bundle();
bParams.putString("voice_input_enabled","true"); // Supported Values: true, false
bParams.putString("voice_data_capture_start_phrase","hi");
bParams.putString("voice_data_capture_end_phrase","end");
bParams.putString("voice_end_detection_timeout","3");
bParams.putString("voice_tab_command","true"); // Supported Values: true, false
bParams.putString("voice_enter_command","true"); // Supported Values: true, false
bParams.putString("voice_data_type","1");
bParams.putString("voice_start_phrase_waiting_tone","true"); // Supported Values: true, false
bParams.putString("voice_data_capture_waiting_tone","false"); // Supported Values: true, false
bParams.putString("voice_validation_window","true"); // Supported Values: true, false
bParams.putString("voice_offline_speech","true"); // Supported Values: true, false

bConfig.putBundle("PARAM_LIST", bParams);

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("SEND_RESULT", "true");  // For versions prior to DataWedge 7.1
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/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
        * SimulScan 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); 

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