Skip to content

Instantly share code, notes, and snippets.

@keytrap-x86
Created June 27, 2023 09:28
Show Gist options
  • Select an option

  • Save keytrap-x86/a98dc52d563a5764626fb3fa45390962 to your computer and use it in GitHub Desktop.

Select an option

Save keytrap-x86/a98dc52d563a5764626fb3fa45390962 to your computer and use it in GitHub Desktop.
package com.ute.eu.scannertest;
import android.media.AudioManager;
import android.media.MediaScannerConnection;
import android.media.SoundPool;
import android.os.Bundle;
import android.os.Environment;
import android.os.Vibrator;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Formatter;
public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener, View.OnClickListener {
final static String[] symbologyName = {
"",
"Code 39",
"Codabar",
"Code 128",
"D25",
"IATA",
"ITF",
"Code 93",
"UPCA",
"UPCE",
"EAN-8",
"EAN-13",
"Code 11",
"",
"MSI",
"EAN-128",
"UPCE1",
"PDF-417",
"",
"Code 39 Full ASCII",
"",
"Trioptic",
"Bookland",
"Coupon Code",
"",
"ISBT-128",
"Micro PDF",
"Data Matrix",
"QR Code",
"",
"Postnet (US)",
"Planet (US)",
"Code 32",
"ISBT-128 Concat.",
"Postal (Japan)",
"Postal (Australia)",
"Postal (Dutch)",
"Maxicode",
"Postbar (CA)",
"Postal (UK)",
"Macro PDF-417",
"",
"",
"",
"",
"",
"",
"",
"RSS-14",
"RSS Limited",
"RSS Expanded",
"Parameter (FNC3)",
"",
"",
"",
"Scanlet Webcode",
"Cue CAT Code",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"UPCA + 2",
"UPCE + 2",
"EAN-8 + 2",
"EAN-13 + 2",
"",
"",
"",
"",
"UPCE1 + 2",
"Composite(CC-A + EAN-128)",
"Composite(CC-A + EAN-13)",
"Composite(CC-A + EAN-8)",
"Composite (CC-A +RSS Expanded)",
"Composite (CC-A +RSS Limited)",
"Composite(CC-A + RSS-14)",
"Composite(CC-A + UPC-A)",
"Composite(CC-A + UPC-E)",
"Composite(CC-C + EAN-128)",
"TLC-39",
"",
"",
"",
"",
"",
"",
"Composite(CC-B + EAN-128)",
"Composite(CC-B + EAN-13)",
"Composite(CC-B + EAN-8)",
"Composite (CC-B +RSS Expanded)",
"Composite (CC-B +RSS Limited)",
"Composite(CC-B + RSS-14)",
"Composite(CC-B + UPC-A)",
"Composite(CC-B + UPC-E)",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"UPCA + 5",
"UPCE + 5",
"EAN-8 + 5",
"EAN-13 + 5",
"",
"",
"",
"",
"UPCE1 + 5",
"",
"",
"",
"",
"",
"",
"",
"",
"Multipacket Format",
"Macro Micro PDF"
};
final static String ACTION_START_SCANSERVICE = "unitech.scanservice.start";
final static String ACTION_CLOSE_SCANSERVICE = "unitech.scanservice.close";
final static String ACTION_SCAN2KEY_SETTING = "unitech.scanservice.scan2key_setting";
final static String ACTION_INIT_INTENT = "unitech.scanservice.init";
final static String ACTION_RECEIVE_DATA = "unitech.scanservice.data";
final static String ACTION_RECEIVE_DATABYTES = "unitech.scanservice.databyte";
final static String ACTION_RECEIVE_DATALENGTH = "unitech.scanservice.datalength";
final static String ACTION_RECEIVE_DATATYPE = "unitech.scanservice.datatype";
final static String ACTION_LOAD_SETTING = "unitech.scanservice.load_setting";
final static String ACTION_SAVE_SETTING = "unitech.scanservice.save_setting";
final static String ACTION_SET_PREAMBLE = "unitech.scanservice.preamble";
final static String ACTION_SET_POSTAMBLE = "unitech.scanservice.postamble";
final static String ACTION_SET_TERMINATOR = "unitech.scanservice.terminator";
final static String ACTION_VIBRATION = "unitech.scanservice.vibration";
final static String ACTION_SOUND = "unitech.scanservice.sound";
final static String ACTION_FIELDSEPARATOR = "unitech.scanservice.fieldseparator";
final static String ACTION_INTERCHAR_DELAY = "unitech.scanservice.interchar_delay";
final static String ACTION_KEEPSCAN = "unitech.scanservice.keepscan";
final static String ACTION_SHAKESCAN = "unitech.scanservice.shakescan";
final static String ACTION_ENABLE_ALL = "unitech.scanservice.enable_all";
final static String ACTION_DISABLE_ALL = "unitech.scanservice.disable_all";
final static String ACTION_NFC_ENABLE = "unitech.scanservice.nfcenable";
final static String ACTION_NFC_ORDER = "unitech.scanservice.nfcorder";
final static String ACTION_NFC_IGNORE_RATE = "unitech.scanservice.nfcignorerate";
final static String ACTION_SETTING = "unitech.scanservice.setting";
final static String ACTION_SOFTWARE_SCANKEY = "unitech.scanservice.software_scankey";
final static int CMD_START_SCANSERVICE = 1; // 1.8
final static int CMD_CLOSE_SCANSERVICE = 2; // 1.7
final static int CMD_OUTPUTMODE_INTENT = 3; // 1.2
final static int CMD_OUTPUTMODE_SCAN2KEY = 4; // 1.1
final static int CMD_LOAD_SCANNER_SETTINGS = 5; // 1.6
final static int CMD_SAVE_SCANNER_SETTINGS = 6; // 1.5
final static int CMD_SET_PREAMBLE = 7; // 1.9
final static int CMD_SET_POSTAMBLE = 8; // 1.10
final static int CMD_SET_TERMINATOR = 9; // 1.11
final static int CMD_SET_VIBRATION = 10; // 1.12
final static int CMD_SET_SOUND = 11; // 1.13
final static int CMD_SET_EAN128_FIELD_SEPARATOR = 12; // 1.14
final static int CMD_SET_INTERCHARACTER_DELAY = 13; // 1.15, 1.17
final static int CMD_SET_KEEP_SCAN_TIMEOUT = 14; // 1.16
final static int CMD_SET_SHAKE_SCAN = 15; // 1.18
final static int CMD_ENABLE_ALL_SYMBOLOGIES = 16; // 1.19
final static int CMD_DISABLE_ALL_SYMBOLOGIES = 17; // 1.20
final static int CMD_ENABLE_DISABLE_NFC_READ = 18; // 1.21
final static int CMD_NFC_OUTPUT_ORDER = 19; // 1.22
final static int CMD_NFC_IGNORE_RATE = 20; // 1.23
final static int CMD_SEND_PARAM_COMMAND = 21; // 1.24
final static int PARAMTYPE_UNKNOWN = -1;
final static int PARAMTYPE_NONE = 0;
final static int PARAMTYPE_BOOLEAN = 1;
final static int PARAMTYPE_INTEGER = 2;
final static int PARAMTYPE_STRING = 3;
final static int PARAMTYPE_SETTING = 4;
private static int[] paramTypeArray = {
-1, // CMD_NONE
0, 0, 1, 1, 3, 3, 3, 3,
3, 1, 1, 3, 2, 2, 1, 0,
0, 1, 1, 2, 4
};
private Spinner cbCommands;
private TextView lblParameter_1;
private Spinner cbParameter_1;
private TextView lblParameter_2;
private Spinner cbParameter_2;
private TextView lblParameter_3;
private Spinner cbParameter_3;
private TextView lblParamValue;
private EditText txtParamValue;
private Button btnExecute;
private TextView txtConsole;
private TextView txtIntentData;
private EditText txtScanToKeyData;
private Vibrator mVibrator;
private SoundPool soundpool = null;
private int soundid;
private String command; // cbCommands.getSelectedItem().toString()
private int cmd; // cbCommands.getSelectedItemPosition()
private int paramType = PARAMTYPE_UNKNOWN;
private BroadcastReceiver mScanReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
txtIntentData.append(action+"\n");
Bundle bundle = intent.getExtras();
if (bundle == null ) return;
switch (action) {
case ACTION_RECEIVE_DATA:
soundpool.play(soundid, 1, 1, 0, 0, 1);
mVibrator.vibrate(100);
String barcodeStr = bundle.getString("text" );
txtIntentData.append(barcodeStr+"\n");
break;
case ACTION_RECEIVE_DATABYTES:
byte[] barcodeBytes = bundle.getByteArray("text" );
Formatter hex = new Formatter();
for (byte b : barcodeBytes) {
hex.format("%02X ", b);
}
txtIntentData.append(hex.toString()+"\n");
break;
case ACTION_RECEIVE_DATALENGTH:
int dataLength = bundle.getInt("text" );
txtIntentData.append(dataLength+"\n");
break;
case ACTION_RECEIVE_DATATYPE:
int barcodeType = bundle.getInt("text" );
txtIntentData.append(symbologyName[barcodeType]+"\n");
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_main);
mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
setupView();
}
public void onItemSelected(AdapterView<?> parent, View v, int pos, long id) {
switch (parent.getId()) {
case R.id.cbCommands:
command = cbCommands.getSelectedItem().toString();
cmd = pos;
paramType = paramTypeArray[pos];
lblParameter_1.setVisibility(View.GONE);
cbParameter_1.setVisibility(View.GONE);
lblParameter_2.setVisibility(View.GONE);
cbParameter_2.setVisibility(View.GONE);
lblParameter_3.setVisibility(View.GONE);
cbParameter_3.setVisibility(View.GONE);
lblParamValue.setVisibility(View.GONE);
txtParamValue.setVisibility(View.GONE);
btnExecute.setVisibility(View.GONE);
if (paramType == PARAMTYPE_UNKNOWN)
return;
if (paramType != PARAMTYPE_BOOLEAN && paramType != PARAMTYPE_SETTING) {
btnExecute.setVisibility(View.VISIBLE);
}
if (paramType == PARAMTYPE_NONE)
return;
String[] items = null;
// Fill cbParameters
switch (paramType) {
case PARAMTYPE_BOOLEAN:
switch (pos) {
case CMD_NFC_OUTPUT_ORDER:
items = new String[]{"Normal", "Reverse"};
break;
default:
items = new String[]{"true", "false"};
break;
}
lblParameter_1.setText(R.string.select_a_parameter);
lblParameter_1.setVisibility(View.VISIBLE);
cbParameter_1.setVisibility(View.VISIBLE);
ArrayAdapter<String> adapter =
new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, items);
cbParameter_1.setAdapter(adapter);
cbParameter_1.setOnItemSelectedListener(this);
break;
case PARAMTYPE_INTEGER:
switch (pos) {
case CMD_SET_INTERCHARACTER_DELAY:
break;
case CMD_SET_KEEP_SCAN_TIMEOUT:
break;
case CMD_NFC_IGNORE_RATE:
break;
}
break;
case PARAMTYPE_STRING:
switch (pos) {
case CMD_LOAD_SCANNER_SETTINGS:
case CMD_SAVE_SCANNER_SETTINGS:
lblParamValue.setText(R.string.settings_file_location);
String str = txtParamValue.getText().toString();
if (str == null || str.isEmpty()) {
txtParamValue.setText(R.string.default_settings_file_location);
}
break;
case CMD_SET_PREAMBLE:
lblParamValue.setText(R.string.preamble);
txtParamValue.setText("");
break;
case CMD_SET_POSTAMBLE:
lblParamValue.setText(R.string.postamble);
txtParamValue.setText("");
break;
case CMD_SET_TERMINATOR:
lblParamValue.setText(R.string.terminator);
txtParamValue.setText(R.string.default_terminator);
break;
}
lblParamValue.setVisibility(View.VISIBLE);
txtParamValue.setVisibility(View.VISIBLE);
break;
case PARAMTYPE_SETTING:
items = new String[]{
"",
"UPC_EAN",
"Code_128",
"Code_39",
"Code_93",
"Code_11",
"I2of5",
"D2of5",
"C2of5",
"M2of5",
"Codabar",
"MSI",
"GS1_DataBar",
"Postal_Codes",
"Composite",
"Symbologies_2D",
"Data_Options",
"Serial_Parameters",
"Scanner_Options"
};
lblParameter_1.setText(R.string.select_a_parameter_group);
lblParameter_1.setVisibility(View.VISIBLE);
cbParameter_1.setVisibility(View.VISIBLE);
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, items);
cbParameter_1.setAdapter(adapter);
cbParameter_1.setOnItemSelectedListener(this);
break;
}
break;
case R.id.cbParameter_1:
if (cmd == CMD_SEND_PARAM_COMMAND) {
if (cbParameter_1.getSelectedItemPosition() > 0) {
String groupName = cbParameter_1.getSelectedItem().toString();
int resourceId = getResources().getIdentifier(groupName, "array", getPackageName());
String[] parameterString = getResources().getStringArray(resourceId);
int count = parameterString.length;
ArrayList<ValueTextPair> parameter = new ArrayList<>();
parameter.add(new ValueTextPair(0,""));
try {
JSONObject jData = null;
int hex;
String name;
for (int i = 0; i < count; i++) {
jData = new JSONObject(parameterString[i]);
hex = jData.getInt("Hex");
name = jData.getString("Parameter");
parameter.add(new ValueTextPair(hex, name));
}
} catch (JSONException e) {
txtConsole.setText(e.toString());
}
lblParameter_2.setText(R.string.select_a_parameter);
lblParameter_2.setVisibility(View.VISIBLE);
cbParameter_2.setVisibility(View.VISIBLE);
ArrayAdapter<ValueTextPair> adapter =
new ArrayAdapter<ValueTextPair>(this, android.R.layout.simple_list_item_1, parameter);
cbParameter_2.setAdapter(adapter);
cbParameter_2.setOnItemSelectedListener(this);
}
} else {
btnExecute.setVisibility(View.VISIBLE);
}
break;
case R.id.cbParameter_2:
if (cmd == CMD_SEND_PARAM_COMMAND) {
ValueTextPair parameter = (ValueTextPair) cbParameter_2.getSelectedItem();
String text = parameter.getText();
if (text != null && !text.isEmpty()) {
// Temporary, to win space. Will be restored after Execute.
txtIntentData.setVisibility(View.GONE);
lblParameter_3.setText(R.string.select_a_value);
lblParameter_3.setVisibility(View.VISIBLE);
cbParameter_3.setVisibility(View.VISIBLE);
String groupName = cbParameter_1.getSelectedItem().toString();
int resourceId = getResources().getIdentifier(groupName, "array", getPackageName());
String[] group = getResources().getStringArray(resourceId);
String parameterName = cbParameter_2.getSelectedItem().toString();
JSONObject jData = null;
try {
for (int i = 0; i < group.length; i++) {
jData = new JSONObject(group[i]);
if (jData.getString("Parameter").equals((parameterName))) break;
}
int type = jData.getInt("Type");
int min = jData.getInt("Min");
int max = jData.getInt("Max");
ArrayList<ValueTextPair> values = new ArrayList<>();
if (type == 1) {
values.add(new ValueTextPair(0, "Disable"));
values.add(new ValueTextPair(1, "Enable"));
} else if (type == 2) {
// Array type with different name for each option
JSONObject jData2;
jData2 = jData.getJSONObject("Tag");
items = new String[max - min];
for (int i = min; i <= max; i++) {
String tag = jData2.getString(Integer.toString(i));
if (tag != "") {
values.add(new ValueTextPair(i, jData2.getString(Integer.toString(i))));
}
}
} else if (type == 3) {
// Array of a range of numbers
for (int i = min; i <= max; i++) {
values.add(new ValueTextPair(i, Integer.toString(i)));
}
}
ArrayAdapter<ValueTextPair> adapter =
new ArrayAdapter<ValueTextPair>(this, android.R.layout.simple_list_item_1, values);
cbParameter_3.setAdapter(adapter);
cbParameter_3.setOnItemSelectedListener(this);
btnExecute.setVisibility(View.VISIBLE);
} catch (JSONException e) {
txtConsole.setText(e.toString());
}
}
}
break;
}
}
public void onClick(View view) {
// **** CLEAR CLICKED ****
if (view.getId() == R.id.btnClear) {
Log(txtConsole.getText().toString());
txtConsole.setText("");
txtIntentData.setText("");
txtScanToKeyData.setText("");
return;
}
// _____________________________________________________________
// **** EXECUTE clicked ****
txtConsole.append("> "+fullCommandToString()+";\n");
try {
Bundle bundle = new Bundle();
Intent intent;
String action = "";
boolean b = false;
Integer n = -1;
String s = "";
// Get parameter
switch(cmd) {
case CMD_START_SCANSERVICE:
case CMD_CLOSE_SCANSERVICE:
case CMD_ENABLE_ALL_SYMBOLOGIES:
case CMD_DISABLE_ALL_SYMBOLOGIES:
break;
case CMD_OUTPUTMODE_SCAN2KEY:
case CMD_OUTPUTMODE_INTENT:
case CMD_SET_VIBRATION:
case CMD_SET_SOUND:
case CMD_SET_SHAKE_SCAN:
case CMD_ENABLE_DISABLE_NFC_READ:
case CMD_NFC_OUTPUT_ORDER:
b = Boolean.valueOf(cbParameter_1.getSelectedItem().toString());
break;
case CMD_SET_INTERCHARACTER_DELAY:
case CMD_SET_KEEP_SCAN_TIMEOUT:
case CMD_NFC_IGNORE_RATE:
n = Integer.valueOf(cbParameter_1.getSelectedItem().toString());
break;
case CMD_LOAD_SCANNER_SETTINGS:
case CMD_SAVE_SCANNER_SETTINGS:
case CMD_SET_PREAMBLE:
case CMD_SET_POSTAMBLE:
case CMD_SET_TERMINATOR:
case CMD_SET_EAN128_FIELD_SEPARATOR:
s = txtParamValue.getText().toString();
}
// Create bundle and action
switch (cmd) {
case CMD_START_SCANSERVICE:
bundle.putBoolean("close", true);
action = ACTION_START_SCANSERVICE;
break;
case CMD_CLOSE_SCANSERVICE:
bundle.putBoolean("close", true);
action = ACTION_CLOSE_SCANSERVICE;
break;
case CMD_OUTPUTMODE_SCAN2KEY:
bundle.putBoolean("scan2key", b);
action = ACTION_SCAN2KEY_SETTING;
break;
case CMD_OUTPUTMODE_INTENT:
bundle.putBoolean("enable", b);
action = ACTION_INIT_INTENT;
break;
case CMD_LOAD_SCANNER_SETTINGS:
bundle.putString("Path", s);
action = ACTION_LOAD_SETTING;
break;
case CMD_SAVE_SCANNER_SETTINGS:
bundle.putString("Path", s);
action = ACTION_SAVE_SETTING;
break;
case CMD_SET_PREAMBLE:
bundle.putString("preamble", s);
action = ACTION_SET_PREAMBLE;
break;
case CMD_SET_POSTAMBLE:
bundle.putString("postamble", s);
action = ACTION_SET_POSTAMBLE;
break;
case CMD_SET_TERMINATOR:
bundle.putString("terminator", s);
action = ACTION_SET_TERMINATOR;
break;
case CMD_SET_VIBRATION:
bundle.putBoolean("vibration", b);
action = ACTION_VIBRATION;
break;
case CMD_SET_SOUND:
bundle.putBoolean("sound", b);
action = ACTION_SOUND;
break;
case CMD_SET_EAN128_FIELD_SEPARATOR:
bundle.putString("fieldseparator", s);
action = ACTION_FIELDSEPARATOR;
break;
case CMD_SET_INTERCHARACTER_DELAY:
bundle.putInt("intercharDelay", n);
action = ACTION_INTERCHAR_DELAY;
break;
case CMD_SET_KEEP_SCAN_TIMEOUT:
bundle.putInt("keepscan", n);
action = ACTION_KEEPSCAN;
break;
case CMD_SET_SHAKE_SCAN:
bundle.putBoolean("enable", b);
action = ACTION_SHAKESCAN;
break;
case CMD_ENABLE_ALL_SYMBOLOGIES:
action = ACTION_ENABLE_ALL;
break;
case CMD_DISABLE_ALL_SYMBOLOGIES:
action = ACTION_DISABLE_ALL;
break;
case CMD_ENABLE_DISABLE_NFC_READ:
bundle.putBoolean("nfcenable", b);
action = ACTION_NFC_ENABLE;
break;
case CMD_NFC_OUTPUT_ORDER:
bundle.putBoolean("nfcorder", b);
action = ACTION_NFC_ORDER;
break;
case CMD_NFC_IGNORE_RATE:
bundle.putInt("nfcignorerate", n);
action = ACTION_NFC_IGNORE_RATE;
break;
case CMD_SEND_PARAM_COMMAND:
String groupName = cbParameter_1.getSelectedItem().toString();
int resourceId = getResources().getIdentifier(groupName, "array", getPackageName());
String[] group = getResources().getStringArray(resourceId);
ValueTextPair parameter = (ValueTextPair) cbParameter_2.getSelectedItem();
int hex = parameter.getValue() & 0xFFFF;
// Extended data, default values
int INDEX = 2; // ScannerType. Assume 2D here.
boolean EXTEND;
byte EXT = (byte) 0x00;
byte NUM = (byte) 0x00;
byte VALUE = (byte) 0x00;
// Determine the value of the extended data
EXTEND = hex > 0xEF;
if (EXTEND) {
NUM = (byte)(hex & 0xFF);
EXT = (byte)(hex >> 8);
} else {
NUM = (byte)hex;
}
ValueTextPair selectedItem = (ValueTextPair) cbParameter_3.getSelectedItem();
VALUE = (byte) selectedItem.getValue();
bundle.putInt("INDEX", INDEX);
bundle.putBoolean("EXTEND", EXTEND);
bundle.putByte("EXT", EXT);
bundle.putByte("NUM", NUM);
bundle.putByte("VALUE", VALUE);
action = ACTION_SETTING;
lblParameter_2.setVisibility(View.GONE);
cbParameter_2.setVisibility(View.GONE);
lblParameter_3.setVisibility(View.GONE);
cbParameter_3.setVisibility(View.GONE);
txtIntentData.setVisibility(View.VISIBLE);
break;
}
intent = new Intent().setAction(action).putExtras(bundle);
sendBroadcast(intent);
btnExecute.setVisibility(View.GONE);
} catch (Exception e) {
txtConsole.append("EXCEPTION:"+e.toString());
} catch (Error e) {
txtConsole.append("ERROR:"+e.toString());
}
}
public void onNothingSelected(AdapterView<?> parent) {
}
@Override
protected void onDestroy() {
super.onDestroy();
Log(txtConsole.getText().toString());
txtConsole.setText("");
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(mScanReceiver);
Log(txtConsole.getText().toString());
txtConsole.setText("");
}
@Override
protected void onResume() {
super.onResume();
initScan();
txtIntentData.setText("");
IntentFilter filter = new IntentFilter();
filter.addAction(ACTION_RECEIVE_DATA);
filter.addAction(ACTION_RECEIVE_DATABYTES);
filter.addAction(ACTION_RECEIVE_DATALENGTH);
filter.addAction(ACTION_RECEIVE_DATATYPE);
registerReceiver(mScanReceiver, filter);
}
@Override
protected void onStart() {
super.onStart();
}
private void setupView() {
cbCommands = (Spinner) findViewById(R.id.cbCommands);
fillCommands();
lblParameter_1 = (TextView) findViewById(R.id.lblParameter_1);
lblParameter_1.setVisibility(View.GONE);
cbParameter_1 = (Spinner) findViewById(R.id.cbParameter_1);
cbParameter_1.setVisibility(View.GONE);
lblParameter_2 = (TextView) findViewById(R.id.lblParameter_2);
lblParameter_2.setVisibility(View.GONE);
cbParameter_2 = (Spinner) findViewById(R.id.cbParameter_2);
cbParameter_2.setVisibility(View.GONE);
lblParameter_3 = (TextView) findViewById(R.id.lblParameter_3);
lblParameter_3.setVisibility(View.GONE);
cbParameter_3 = (Spinner) findViewById(R.id.cbParameter_3);
cbParameter_3.setVisibility(View.GONE);
lblParamValue = (TextView) findViewById(R.id.lblParamValue);
lblParamValue.setVisibility(View.GONE);
txtParamValue = (EditText) findViewById(R.id.txtParamValue);
txtParamValue.setVisibility(View.GONE);
btnExecute = (Button) findViewById(R.id.btnExecute);
btnExecute.setOnClickListener(this);
btnExecute.setVisibility(View.GONE);
txtConsole = (TextView) findViewById(R.id.txtConsole);
txtConsole.setMovementMethod(new ScrollingMovementMethod());
txtIntentData = (TextView) findViewById(R.id.txtIntentData);
txtIntentData.setMovementMethod(new ScrollingMovementMethod());
txtScanToKeyData = (EditText) findViewById(R.id.txtScan2KeyData);
txtScanToKeyData.setMovementMethod(new ScrollingMovementMethod());
Button btnClear = (Button) findViewById(R.id.btnClear);
btnClear.setOnClickListener(this);
}
@SuppressWarnings("deprecation")
private void initScan() {
soundpool = new SoundPool(1, AudioManager.STREAM_NOTIFICATION, 100); // MODE_RINGTONE
soundid = soundpool.load("/etc/Scan_new.ogg", 1);
}
private void fillCommands() {
String[] items = new String[]{
"",
"enable_scanservice",
"close_scanservice",
"outputmode_intent",
"outputmode_scan2key",
"load_scanner_settings",
"save_scanner_settings",
"set_preamble",
"set_postamble",
"set_terminator",
"set_vibration",
"set_sound",
"set_EAN128_field_separator",
"set_intercharacter_delay",
"set_keep_scan_timeout",
"set_shake_scan",
"enable_all_symbologies",
"disable_all_symbologies",
"enable_nfc_read",
"NFC_output_order",
"NFC_ignore_rate",
"send_param_command"
};
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, items);
cbCommands.setAdapter(adapter);
cbCommands.setOnItemSelectedListener(this);
}
private String fullCommandToString() {
StringBuilder sb = new StringBuilder();
sb.append(command);
sb.append("(");
switch (cmd) {
case CMD_START_SCANSERVICE:
case CMD_CLOSE_SCANSERVICE:
case CMD_ENABLE_ALL_SYMBOLOGIES:
case CMD_DISABLE_ALL_SYMBOLOGIES:
break;
case CMD_OUTPUTMODE_INTENT:
case CMD_OUTPUTMODE_SCAN2KEY:
case CMD_SET_VIBRATION:
case CMD_SET_SOUND:
case CMD_SET_SHAKE_SCAN:
case CMD_ENABLE_DISABLE_NFC_READ:
sb.append(cbParameter_1.getSelectedItemPosition() == 0 ? "true" : "false");
break;
case CMD_NFC_OUTPUT_ORDER:
sb.append(cbParameter_1.getSelectedItemPosition() == 0 ? "Normal" : "Reverse");
break;
case CMD_SET_INTERCHARACTER_DELAY:
case CMD_SET_KEEP_SCAN_TIMEOUT:
case CMD_NFC_IGNORE_RATE:
sb.append(Integer.valueOf(txtParamValue.getText().toString()));
break;
case CMD_LOAD_SCANNER_SETTINGS:
case CMD_SAVE_SCANNER_SETTINGS:
case CMD_SET_PREAMBLE:
case CMD_SET_POSTAMBLE:
case CMD_SET_TERMINATOR:
case CMD_SET_EAN128_FIELD_SEPARATOR:
sb.append("\"");
sb.append(txtParamValue.getText());
sb.append("\"");
break;
case CMD_SEND_PARAM_COMMAND:
ValueTextPair parameter;
parameter = (ValueTextPair) cbParameter_2.getSelectedItem();
sb.append(parameter.getText());
sb.append(", ");
parameter = (ValueTextPair) cbParameter_3.getSelectedItem();
sb.append(parameter.getText());
break;
}
sb.append(")");
return sb.toString();
}
void Log(String s) {
if (s.length() == 0)
return;
txtConsole.append(s);
try {
File logfile = new File(Environment.getExternalStorageDirectory(),
"ScannerTest.txt");
FileWriter writer = new FileWriter(logfile, true);
writer.append(s);
writer.flush();
writer.close();
MediaScannerConnection.scanFile(this,
new String[]{ logfile.getAbsolutePath() }, null, null);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment