From 0e6f4a78926fe6e5158648a2fff56f5258d4e63a Mon Sep 17 00:00:00 2001 From: ValerioC Date: Mon, 26 Sep 2022 11:52:24 +0200 Subject: [PATCH] aggiunta configurazione scanner barcode tramite preferenze app --- .../core/barcode_reader/BarcodeManager.java | 31 +++++-- .../core/context/MainContext.java | 2 +- .../core/exception/EmptyLUException.java | 10 +++ .../core/exception/NoArtsFoundException.java | 2 +- .../picking_resi/PickingResiViewModel.java | 6 +- .../gest/settings/MainSettingsFragment.java | 44 +++++++++- .../DialogInputQuantityV2View.java | 5 +- .../scan_art/DialogScanArtViewModel.java | 4 +- .../main/res/layout/preference_edit_text.xml | 24 ++++++ app/src/main/res/values-it/strings.xml | 8 ++ app/src/main/res/values/strings.xml | 8 ++ app/src/main/res/xml/app_preferences.xml | 27 +++++- .../interfaces/BarcodeReaderInterface.java | 5 ++ .../model/BarcodeSetting.java | 26 ++++++ .../HoneyWellBarcodeReader.java | 84 ++++++++++++++----- .../KeyboardEmulatorBarcodeReader.java | 22 +++-- .../PointMobileBarcodeReader.java | 46 +++++----- .../ZebraBarcodeReader.java | 23 +++-- 18 files changed, 300 insertions(+), 77 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/exception/EmptyLUException.java create mode 100644 app/src/main/res/layout/preference_edit_text.xml create mode 100644 barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/model/BarcodeSetting.java diff --git a/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java b/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java index 85924b83..c473459b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java @@ -1,14 +1,20 @@ package it.integry.integrywmsnative.core.barcode_reader; import android.content.Context; +import android.content.SharedPreferences; +import android.util.Pair; import android.view.KeyEvent; +import androidx.preference.PreferenceManager; + import java.lang.reflect.Constructor; import java.util.ArrayList; import java.util.List; import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface; +import it.integry.barcode_base_android_library.model.BarcodeSetting; import it.integry.honeywellscannerlibrary.HoneyWellBarcodeReader; +import it.integry.integrywmsnative.gest.settings.MainSettingsFragment; import it.integry.keyobardemulatorscannerlibrary.KeyboardEmulatorBarcodeReader; import it.integry.pointmobilescannerlibrary.PointMobileBarcodeReader; import it.integry.zebrascannerlibrary.ZebraBarcodeReader; @@ -21,12 +27,7 @@ public class BarcodeManager { private static boolean mEnabled = true; - private static final Class[] registeredBarcodeReaderInterfaces = new Class[]{ - PointMobileBarcodeReader.class, - ZebraBarcodeReader.class, - HoneyWellBarcodeReader.class, - KeyboardEmulatorBarcodeReader.class - }; + private static final Class[] registeredBarcodeReaderInterfaces = new Class[]{PointMobileBarcodeReader.class, ZebraBarcodeReader.class, HoneyWellBarcodeReader.class, KeyboardEmulatorBarcodeReader.class}; public static void init(Context applicationContext) throws Exception { @@ -65,6 +66,18 @@ public class BarcodeManager { } }); + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(applicationContext); + var additionalSettings = new ArrayList>(); + var scanDelay = sharedPreferences.getString(MainSettingsFragment.KEY_TRIGGER_SCAN_DELAY, null); + var scanDelaySetting = new Pair(BarcodeSetting.P_TRIGGER_SCAN_DELAY, scanDelay); + additionalSettings.add(scanDelaySetting); + + var scanMode = sharedPreferences.getString(MainSettingsFragment.KEY_TRIGGER_SCAN_MODE, null); + var scanModeSetting = new Pair(BarcodeSetting.P_TRIGGER_SCAN_MODE, scanMode); + additionalSettings.add(scanModeSetting); + + BarcodeManager.changeSettings(additionalSettings); + }); } } @@ -81,8 +94,7 @@ public class BarcodeManager { } public static boolean onKeyDown(int keyCode, KeyEvent keyEvent) { - if (mCurrentBarcodeInterface != null) - mCurrentBarcodeInterface.onKeyEvent(keyEvent); + if (mCurrentBarcodeInterface != null) mCurrentBarcodeInterface.onKeyEvent(keyEvent); return true; } @@ -133,6 +145,9 @@ public class BarcodeManager { return mEnabled; } + public static void changeSettings(List> settings) { + mCurrentBarcodeInterface.changeSettings(settings); + } public static boolean isKeyboardEmulator() { return mCurrentBarcodeInterface instanceof KeyboardEmulatorBarcodeReader; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java index 8e313b96..a43fc1cd 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java @@ -39,7 +39,7 @@ public class MainContext { try { BarcodeManager.init(applicationContext); } catch (Exception exception) { - + exception.printStackTrace(); } this.initDBData(() -> { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/EmptyLUException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/EmptyLUException.java new file mode 100644 index 00000000..b4e6c5d4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/EmptyLUException.java @@ -0,0 +1,10 @@ +package it.integry.integrywmsnative.core.exception; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.utility.UtilityResources; + +public final class EmptyLUException extends Exception { + public EmptyLUException() { + super(UtilityResources.getString(R.string.empty_lu)); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/NoArtsFoundException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/NoArtsFoundException.java index bd1ef28c..75dd2ae6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/exception/NoArtsFoundException.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/NoArtsFoundException.java @@ -5,6 +5,6 @@ import it.integry.integrywmsnative.core.utility.UtilityResources; public final class NoArtsFoundException extends Exception { public NoArtsFoundException() { - super(UtilityResources.getString(R.string.no_result_from_barcode)); + super(UtilityResources.getString(R.string.no_arts_found)); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java index f94bf915..4a4afdca 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java @@ -17,8 +17,8 @@ import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.exception.InvalidLUException; -import it.integry.integrywmsnative.core.exception.NoArtsFoundException; import it.integry.integrywmsnative.core.exception.NoLUFoundException; +import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUBaseOperationsListener; @@ -333,7 +333,7 @@ public class PickingResiViewModel { searchArtFromUL(mtbColt, onComplete); } else this.sendError(new InvalidLUException()); } else { - this.sendError(new NoArtsFoundException()); + this.sendError(new NoResultFromBarcodeException(SSCC)); } }, this::sendError); @@ -417,7 +417,7 @@ public class PickingResiViewModel { private void loadMatchedRows(List matchedRows) { if (matchedRows == null || matchedRows.size() == 0) { - this.sendError(new NoArtsFoundException()); + this.sendError(new NoResultFromBarcodeException()); } else if (matchedRows.size() == 1) { WithdrawableDtbDocr matchedItem = matchedRows.get(0); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java index cf454c0b..02ca2557 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java @@ -7,6 +7,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.widget.AppCompatTextView; +import androidx.preference.EditTextPreference; import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; @@ -17,7 +18,9 @@ import com.harrysoft.androidbluetoothserial.BluetoothManager; import java.util.ArrayList; import java.util.Collection; +import it.integry.barcode_base_android_library.model.BarcodeSetting; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.utility.UtilityResources; @@ -26,6 +29,8 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT private final ArrayList onPreDestroyList = new ArrayList<>(); public static final String KEY_PALLET_BT_DEVICE = "pallet_scale_bt_device"; + public static final String KEY_TRIGGER_SCAN_MODE = "TRIG_SCAN_MODE"; + public static final String KEY_TRIGGER_SCAN_DELAY = "TRIG_SCAN_DELAY"; private Collection btPairedDevices; @@ -39,11 +44,30 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT setPreferencesFromResource(R.xml.app_preferences, rootKey); var palletScaleBtDeviceListPref = (ListPreference) findPreference(KEY_PALLET_BT_DEVICE); + var triggerScanDelayPref = (EditTextPreference) findPreference(KEY_TRIGGER_SCAN_DELAY); + var triggerScanModeListPref = (ListPreference) findPreference(KEY_TRIGGER_SCAN_MODE); setListPreferenceData(palletScaleBtDeviceListPref); palletScaleBtDeviceListPref.setOnPreferenceChangeListener(this); + + triggerScanDelayPref.setOnPreferenceChangeListener(this); + triggerScanDelayPref.setSummary(triggerScanDelayPref.getText()); + + loadScanModePreferences(); + triggerScanModeListPref.setOnPreferenceChangeListener(this); + triggerScanModeListPref.setSummary(triggerScanModeListPref.getValue()); } + protected void loadScanModePreferences() { + var triggerScanModeListPref = (ListPreference) findPreference(KEY_TRIGGER_SCAN_MODE); + if (triggerScanModeListPref != null) { + var scanModes = BarcodeSetting.getTriggerScanModes(); + triggerScanModeListPref.setEntries(scanModes); + triggerScanModeListPref.setEntryValues(scanModes); + triggerScanModeListPref.setOnPreferenceChangeListener(this); + } + } + protected void setListPreferenceData(ListPreference lp) { BluetoothManager bluetoothManager = BluetoothManager.getInstance(); if (bluetoothManager == null) { @@ -54,7 +78,7 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT btPairedDevices = bluetoothManager.getPairedDevicesList(); - if(!Stream.of(btPairedDevices).anyMatch(x -> x.getAddress().equalsIgnoreCase(lp.getValue()))) { + if (!Stream.of(btPairedDevices).anyMatch(x -> x.getAddress().equalsIgnoreCase(lp.getValue()))) { lp.setValue(null); } @@ -106,6 +130,16 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT final var palletScaleBtDeviceListPref = (ListPreference) preference; updatePalletBtDeviceSummary(palletScaleBtDeviceListPref, (String) newValue); break; + case KEY_TRIGGER_SCAN_DELAY: + final var scanDelayPref = (EditTextPreference) preference; + scanDelayPref.setSummary((String) newValue); + updateBarcodeScannerSettings(); + break; + case KEY_TRIGGER_SCAN_MODE: + final var scanTriggerMode = (ListPreference) preference; + scanTriggerMode.setSummary((String) newValue); + updateBarcodeScannerSettings(); + break; } // Set result so knows to refresh itself @@ -113,6 +147,14 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT return true; } + private void updateBarcodeScannerSettings() { + try { + BarcodeManager.init(requireContext()); + } catch (Exception e) { + e.printStackTrace(); + } + } + private void updatePalletBtDeviceSummary(ListPreference listPref, String btDeviceAddress) { String btDeviceName = Stream.of(btPairedDevices) diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index d72a2869..113ff55a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -184,11 +184,12 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia mHandler.postDelayed(() -> { if (mDialogInputQuantityV2DTO.isNumCnfEditable()) { - mBindings.inputNumCnfText.requestFocus(); + UtilityFocus.focusTextBox(requireContext(), mBindings.inputNumCnfText); +// mBindings.inputNumCnfText.requestFocus(); } else { UtilityFocus.focusTextBox(requireContext(), mBindings.inputQtaTotText); } - }, 1000); + }, 1500); } return mBindings.getRoot(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java index 22331a50..e36b8f0a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java @@ -5,8 +5,8 @@ import org.jetbrains.annotations.NotNull; import java.util.List; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.exception.EmptyLUException; import it.integry.integrywmsnative.core.exception.InvalidLUException; -import it.integry.integrywmsnative.core.exception.NoArtsFoundException; import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException; @@ -125,7 +125,7 @@ public class DialogScanArtViewModel { onComplete.run(DialogConsts.Results.YES, null, null, mtbColt.getMtbColr()); } else this.sendError(new InvalidLUException()); } else { - this.sendError(new NoArtsFoundException()); + this.sendError(new EmptyLUException()); } }, this::sendError); diff --git a/app/src/main/res/layout/preference_edit_text.xml b/app/src/main/res/layout/preference_edit_text.xml new file mode 100644 index 00000000..48a3b18d --- /dev/null +++ b/app/src/main/res/layout/preference_edit_text.xml @@ -0,0 +1,24 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 1db72ce0..3101159f 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -413,4 +413,12 @@ Scansiona il codice a barre della UL da recuperare Stampa etichetta spedizione Stampa etichetta lavorazione + Impostazioni scanner + Ritardo scansione + Imposta un ritardo di lettura per la scansione + Modalità scansione + Seleziona modalità scansione per lo scanner + Crea documento + Nessun articolo compatibile trovato + UL vuota \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c3b5302c..5c2acab7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -419,4 +419,12 @@ Please scan the LU barcode to recover Print shipping label Print production label + Scanner settings + Scan delay + Set reading scanner delay + Modalità scansione + Select scan mode + Create document + No product found + Empty LU diff --git a/app/src/main/res/xml/app_preferences.xml b/app/src/main/res/xml/app_preferences.xml index 3e312aac..7ec23d6c 100644 --- a/app/src/main/res/xml/app_preferences.xml +++ b/app/src/main/res/xml/app_preferences.xml @@ -1,4 +1,5 @@ - + + + + + + + + + \ No newline at end of file diff --git a/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/interfaces/BarcodeReaderInterface.java b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/interfaces/BarcodeReaderInterface.java index b62ab935..53e28bdb 100644 --- a/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/interfaces/BarcodeReaderInterface.java +++ b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/interfaces/BarcodeReaderInterface.java @@ -1,8 +1,11 @@ package it.integry.barcode_base_android_library.interfaces; +import android.util.Pair; import android.view.KeyEvent; +import java.util.List; + import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException; import it.integry.barcode_base_android_library.extension.RunnableArgs; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; @@ -21,4 +24,6 @@ public interface BarcodeReaderInterface { void onKeyEvent(KeyEvent keyEvent); + void changeSettings(List> settings); + } diff --git a/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/model/BarcodeSetting.java b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/model/BarcodeSetting.java new file mode 100644 index 00000000..90de83c6 --- /dev/null +++ b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/model/BarcodeSetting.java @@ -0,0 +1,26 @@ +package it.integry.barcode_base_android_library.model; + +import java.util.ArrayList; +import java.util.List; + +public class BarcodeSetting { + + public static final String P_TRIGGER_SCAN_MODE = "TRIG_SCAN_MODE"; + public static final String V_TRIGGER_SCAN_MODE_READ_ON_RELEASE = "readOnRelease"; + public static final String V_TRIGGER_SCAN_MODE_ONE_SHOT = "oneShot"; + public static final String V_TRIGGER_SCAN_MODE_CONTINUOS = "continuous"; + public static final String V_TRIGGER_SCAN_MODE_READ_ON_SECOND_TRIGGER_PRESS = "readOnSecondTriggerPress"; + public static final String P_TRIGGER_SCAN_DELAY = "TRIG_SCAN_DELAY"; + + + public static CharSequence[] getTriggerScanModes() { + List keys = new ArrayList<>(); + keys.add(V_TRIGGER_SCAN_MODE_READ_ON_RELEASE); + keys.add(V_TRIGGER_SCAN_MODE_ONE_SHOT); +// keys.add(V_TRIGGER_SCAN_MODE_CONTINUOS); +// keys.add(V_TRIGGER_SCAN_MODE_READ_ON_SECOND_TRIGGER_PRESS); + + return keys.toArray(new String[0]); + } + +} diff --git a/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java b/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java index b0856d36..70cd7ee0 100644 --- a/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java +++ b/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java @@ -2,6 +2,7 @@ package it.integry.honeywellscannerlibrary; import android.content.Context; import android.os.Build; +import android.util.Pair; import android.view.KeyEvent; import com.honeywell.aidc.AidcManager; @@ -19,6 +20,7 @@ import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundE import it.integry.barcode_base_android_library.extension.RunnableArgs; import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.barcode_base_android_library.model.BarcodeSetting; public class HoneyWellBarcodeReader implements BarcodeReaderInterface { @@ -43,24 +45,23 @@ public class HoneyWellBarcodeReader implements BarcodeReaderInterface { compatibleModels.add("EDA51"); compatibleModels.add("CT60"); - if(compatibleModels.contains(model)) { + if (compatibleModels.contains(model)) { return true; } else return false; } @Override public void init(final Runnable onDeviceReady) throws BarcodeAdapterNotFoundException { - if(isRightAdapter()) { + if (isRightAdapter()) { AidcManager.create(mContext, aidcManager -> { manager = aidcManager; - try{ + try { barcodeReader = manager.createBarcodeReader(); registerListenersInternal(); - } - catch (Exception e){ + } catch (Exception e) { // throw new Exception("Invalid Scanner Name Exception: " + e.getMessage()); } @@ -129,7 +130,24 @@ public class HoneyWellBarcodeReader implements BarcodeReaderInterface { // } catch (UnsupportedPropertyException e) { // throw new Exception("Failed to apply properties"); // } + } + + private void dispatchEvent(BarcodeReadEvent barcodeReadEvent) { +// mContext.runOnUiThread(() -> { + + BarcodeScanDTO barcodeScanDTO = new BarcodeScanDTO() + .setByteValue(barcodeReadEvent.getBarcodeData().getBytes()) + .setStringValue(barcodeReadEvent.getBarcodeData()) + .setType(HoneywellBarcodeTypeMapper.map(barcodeReadEvent.getCodeId())) + .setName(HoneywellBarcodeTypeMapper.map(barcodeReadEvent.getCodeId()).toString()); + + mOnScanSuccessfull.run(barcodeScanDTO); +// }); + } + + + private Map getDefaultProperties() { Map properties = new HashMap<>(); // Set Symbologies On/Off @@ -145,33 +163,53 @@ public class HoneyWellBarcodeReader implements BarcodeReaderInterface { properties.put(BarcodeReader.PROPERTY_EAN_13_CHECK_DIGIT_TRANSMIT_ENABLED, true); properties.put(BarcodeReader.PROPERTY_UPC_A_CHECK_DIGIT_TRANSMIT_ENABLED, true); - properties.put(BarcodeReader.PROPERTY_TRIGGER_SCAN_MODE, BarcodeReader.TRIGGER_SCAN_MODE_READ_ON_RELEASE); + return properties; + } + + @Override + public void changeSettings(List> settings) { + Map properties = getDefaultProperties(); + String scanValue; + for (Pair setting : settings) { + switch (setting.first) { + case BarcodeSetting.P_TRIGGER_SCAN_MODE: + scanValue = setting.second != null ? (String) setting.second : ""; + String scanMode; + switch (scanValue) { + case BarcodeSetting.V_TRIGGER_SCAN_MODE_ONE_SHOT: + scanMode = BarcodeReader.TRIGGER_SCAN_MODE_ONESHOT; + break; + case BarcodeSetting.V_TRIGGER_SCAN_MODE_CONTINUOS: + scanMode = BarcodeReader.TRIGGER_SCAN_MODE_CONTINUOUS; + break; + case BarcodeSetting.V_TRIGGER_SCAN_MODE_READ_ON_SECOND_TRIGGER_PRESS: + scanMode = BarcodeReader.TRIGGER_SCAN_MODE_READ_ON_SECOND_TRIGGER_PRESS; + break; + case BarcodeSetting.V_TRIGGER_SCAN_MODE_READ_ON_RELEASE: + scanMode = BarcodeReader.TRIGGER_SCAN_MODE_READ_ON_RELEASE; + break; + default: + scanMode = BarcodeReader.TRIGGER_SCAN_MODE_ONESHOT; + } + properties.put(BarcodeReader.PROPERTY_TRIGGER_SCAN_MODE, scanMode); + break; + case BarcodeSetting.P_TRIGGER_SCAN_DELAY: + scanValue = setting.second != null ? (String) setting.second : "0"; + properties.put(BarcodeReader.PROPERTY_TRIGGER_SCAN_DELAY, Integer.parseInt(scanValue)); + break; + } + } // properties.put(BarcodeReader.PROPERTY_TRIGGER_SCAN_DELAY, 500); +// properties.put(BarcodeReader.PROPERTY_TRIGGER_SCAN_MODE, BarcodeReader.TRIGGER_SCAN_MODE_READ_ON_SECOND_TRIGGER_PRESS); + // Apply the settings barcodeReader.setProperties(properties); - try { barcodeReader.claim(); } catch (ScannerUnavailableException e) { e.printStackTrace(); } - - } - - - private void dispatchEvent(BarcodeReadEvent barcodeReadEvent) - { -// mContext.runOnUiThread(() -> { - - BarcodeScanDTO barcodeScanDTO = new BarcodeScanDTO() - .setByteValue(barcodeReadEvent.getBarcodeData().getBytes()) - .setStringValue(barcodeReadEvent.getBarcodeData()) - .setType(HoneywellBarcodeTypeMapper.map(barcodeReadEvent.getCodeId())) - .setName(HoneywellBarcodeTypeMapper.map(barcodeReadEvent.getCodeId()).toString()); - - mOnScanSuccessfull.run(barcodeScanDTO); -// }); } } diff --git a/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java b/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java index 9c342d3e..ec4a4af8 100644 --- a/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java +++ b/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java @@ -1,8 +1,11 @@ package it.integry.keyobardemulatorscannerlibrary; import android.content.Context; +import android.util.Pair; import android.view.KeyEvent; +import java.util.List; + import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException; import it.integry.barcode_base_android_library.extension.RunnableArgs; import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface; @@ -91,7 +94,7 @@ public class KeyboardEmulatorBarcodeReader implements BarcodeReaderInterface { if (barcode.length() == 8) { try { int checksum = getEanChecksum(barcode); - if (checksum == Integer.parseInt(barcode.substring(7))){ + if (checksum == Integer.parseInt(barcode.substring(7))) { return BarcodeType.EAN8; } } catch (WrongFormatException e) { @@ -100,7 +103,7 @@ public class KeyboardEmulatorBarcodeReader implements BarcodeReaderInterface { } else if (barcode.length() == 13) { try { int checksum = getEanChecksum(barcode); - if (checksum == Integer.parseInt(barcode.substring(12))){ + if (checksum == Integer.parseInt(barcode.substring(12))) { return BarcodeType.EAN13; } } catch (WrongFormatException e) { @@ -109,7 +112,7 @@ public class KeyboardEmulatorBarcodeReader implements BarcodeReaderInterface { } else if (barcode.length() == 14) { try { int checksum = getEanChecksum(barcode); - if (checksum == Integer.parseInt(barcode.substring(13))){ + if (checksum == Integer.parseInt(barcode.substring(13))) { return BarcodeType.INTERLEAVED_2OF5; } } catch (WrongFormatException e) { @@ -122,19 +125,24 @@ public class KeyboardEmulatorBarcodeReader implements BarcodeReaderInterface { private static int getEanChecksum(String barcode) throws WrongFormatException { int odds = 0; int evens = 0; - barcode = barcode.substring(0,barcode.length()-1); + barcode = barcode.substring(0, barcode.length() - 1); int pos = 0; - for (int i = barcode.length() -1; i >=0 ; i--) { + for (int i = barcode.length() - 1; i >= 0; i--) { pos++; if (!Character.isDigit(barcode.charAt(i))) { throw new WrongFormatException(); } if (pos % 2 == 0) { - evens += Integer.parseInt(barcode.charAt(i)+""); + evens += Integer.parseInt(barcode.charAt(i) + ""); } else { - odds += Integer.parseInt(barcode.charAt(i)+""); + odds += Integer.parseInt(barcode.charAt(i) + ""); } } return ((10 - (((3 * odds) + evens) % 10)) % 10); } + + @Override + public void changeSettings(List> settings) { + + } } diff --git a/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java b/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java index 241426c6..58a60ca6 100644 --- a/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java +++ b/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java @@ -3,9 +3,11 @@ package it.integry.pointmobilescannerlibrary; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.util.Pair; import android.view.KeyEvent; import java.nio.charset.StandardCharsets; +import java.util.List; import device.common.DecodeResult; import device.common.ScanConst; @@ -46,8 +48,8 @@ public class PointMobileBarcodeReader implements BarcodeReaderInterface { @Override public void init(Runnable onDeviceReady) throws BarcodeAdapterNotFoundException { - if(isRightAdapter()){ - try{ + if (isRightAdapter()) { + try { mScanManager.aDecodeSetTerminator(ScanConst.Terminator.DCD_TERMINATOR_NONE); mScanManager.aDecodeSetResultType(ScanConst.ResultType.DCD_RESULT_USERMSG); @@ -92,27 +94,27 @@ public class PointMobileBarcodeReader implements BarcodeReaderInterface { if (mOnScanSuccessfull != null) { //try { - if(mDecodeResult.symName.equalsIgnoreCase("READ_FAIL")){ - //if(mOnScanFailed != null) mOnScanFailed.run(new Exception("Barcode non riconosciuto")); - return; + if (mDecodeResult.symName.equalsIgnoreCase("READ_FAIL")) { + //if(mOnScanFailed != null) mOnScanFailed.run(new Exception("Barcode non riconosciuto")); + return; + } + + if (mDecodeResult != null) { + String stringValue = null; + + if (mDecodeResult.decodeValue != null && mDecodeResult.decodeValue.length > 0) { + stringValue = new String(mDecodeResult.decodeValue, StandardCharsets.UTF_8); } - if(mDecodeResult != null) { - String stringValue = null; + BarcodeScanDTO barcodeScanDTO = new BarcodeScanDTO() + .setByteValue(mDecodeResult.decodeValue) + .setStringValue(stringValue) + .setType(BarcodeType.fromInt(mDecodeResult.symType)) + .setName(mDecodeResult.symName) + .setDecodingTime(mDecodeResult.decodeTimeMillisecond); - if(mDecodeResult.decodeValue != null && mDecodeResult.decodeValue.length > 0) { - stringValue = new String(mDecodeResult.decodeValue, StandardCharsets.UTF_8); - } - - BarcodeScanDTO barcodeScanDTO = new BarcodeScanDTO() - .setByteValue(mDecodeResult.decodeValue) - .setStringValue(stringValue) - .setType(BarcodeType.fromInt(mDecodeResult.symType)) - .setName(mDecodeResult.symName) - .setDecodingTime(mDecodeResult.decodeTimeMillisecond); - - mOnScanSuccessfull.run(barcodeScanDTO); - } + mOnScanSuccessfull.run(barcodeScanDTO); + } //} catch (Exception ex) { // Log.e(TAG, ex.getMessage()); @@ -125,5 +127,9 @@ public class PointMobileBarcodeReader implements BarcodeReaderInterface { } } + @Override + public void changeSettings(List> settings) { + + } } diff --git a/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java b/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java index 2e4db5e5..6caa2924 100644 --- a/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java +++ b/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java @@ -5,8 +5,11 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Build; +import android.util.Pair; import android.view.KeyEvent; +import java.util.List; + import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException; import it.integry.barcode_base_android_library.extension.RunnableArgs; import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface; @@ -29,22 +32,22 @@ public class ZebraBarcodeReader implements BarcodeReaderInterface { @Override public boolean isRightAdapter() { String model = Build.MODEL; - if(model.equalsIgnoreCase("TC700H")) { + if (model.equalsIgnoreCase("TC700H")) { return true; - } else if(model.equalsIgnoreCase("TC200J")) { + } else if (model.equalsIgnoreCase("TC200J")) { return true; - } else if(model.equalsIgnoreCase("TC210K")) { + } else if (model.equalsIgnoreCase("TC210K")) { return true; - } else if(model.equalsIgnoreCase("TC21")) { + } else if (model.equalsIgnoreCase("TC21")) { return true; - } else if(model.equalsIgnoreCase("TC20")) { + } else if (model.equalsIgnoreCase("TC20")) { return true; } else return false; } @Override public void init(Runnable onDeviceReady) throws BarcodeAdapterNotFoundException { - if(isRightAdapter()) { + if (isRightAdapter()) { IntentFilter filter = new IntentFilter(); filter.addCategory(Intent.CATEGORY_DEFAULT); filter.addAction(INTENT_FILTER_STRING); @@ -95,8 +98,7 @@ public class ZebraBarcodeReader implements BarcodeReaderInterface { }; - private void dispatchEvent(Intent initiatingIntent) - { + private void dispatchEvent(Intent initiatingIntent) { String decodedSource = initiatingIntent.getStringExtra(mContext.getResources().getString(R.string.datawedge_intent_key_source)); String decodedData = initiatingIntent.getStringExtra(mContext.getResources().getString(R.string.datawedge_intent_key_data)); @@ -111,4 +113,9 @@ public class ZebraBarcodeReader implements BarcodeReaderInterface { mOnScanSuccessfull.run(barcodeScanDTO); } + + @Override + public void changeSettings(List> settings) { + + } }