From bda1328dec3347bfcc9110c01076c17068f4e9a6 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 6 Feb 2023 18:36:15 +0100 Subject: [PATCH] Migliorie nel KeyboardEmulatorBarcodeReader --- .../core/expansion/BaseDialogFragment.java | 38 ++++++---- .../DialogAskInfoInventarioView.java | 1 + .../DialogScanGrigliaAcquistoView.java | 1 + .../dialogs/basket_lu/DialogBasketLUView.java | 1 + .../DialogChooseArtFromListaArtsView.java | 5 +- .../DialogChooseArtsFromMtbAartListView.java | 1 + .../DialogChooseArtsFromMtbColrList.java | 1 + .../input_peso_lu/DialogInputPesoLUView.java | 1 + .../DialogScanOrCreateLUView.java | 3 +- .../KeyboardEmulatorBarcodeReader.java | 72 ++++++++++++------- 10 files changed, 82 insertions(+), 42 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java index 6c37ddb4..530aff5d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java @@ -1,5 +1,6 @@ package it.integry.integrywmsnative.core.expansion; +import android.content.DialogInterface; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; @@ -18,7 +19,7 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.view.dialogs.DialogProgressView; -public class BaseDialogFragment extends DialogFragment { +public class BaseDialogFragment extends DialogFragment implements DialogInterface.OnShowListener { @Inject public DialogProgressView mCurrentProgress; @@ -41,20 +42,7 @@ public class BaseDialogFragment extends DialogFragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - - MainApplication.appComponent - .baseDialogFragmentComponent() - .create() - .inject(this); - - if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) { - getDialog().setOnKeyListener((dialog, keyCode, event) -> { - if (mBarcodeListener && (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) && !isControlKey(event)) { - return BarcodeManager.onKeyDown(event.getKeyCode(), event); - } - return false; - }); - } + this.initialize(); } public void onLoadingStarted() { @@ -107,4 +95,24 @@ public class BaseDialogFragment extends DialogFragment { } + @Override + public void onShow(DialogInterface dialogInterface) { + this.initialize(); + } + + private void initialize() { + MainApplication.appComponent + .baseDialogFragmentComponent() + .create() + .inject(this); + + if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator() && getDialog() != null) { + getDialog().setOnKeyListener((dialog, keyCode, event) -> { + if (mBarcodeListener && (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) && !isControlKey(event)) { + return BarcodeManager.onKeyDown(event.getKeyCode(), event); + } + return false; + }); + } + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/dialogs/ask_info_inventario/DialogAskInfoInventarioView.java b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/dialogs/ask_info_inventario/DialogAskInfoInventarioView.java index a53929bb..6d537e63 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/dialogs/ask_info_inventario/DialogAskInfoInventarioView.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/dialogs/ask_info_inventario/DialogAskInfoInventarioView.java @@ -82,6 +82,7 @@ public class DialogAskInfoInventarioView extends BaseDialogFragment { .create(); alertDialog.setCanceledOnTouchOutside(cancelable); + alertDialog.setOnShowListener(this); return alertDialog; } } \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanGrigliaAcquistoView.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanGrigliaAcquistoView.java index 8c37c77e..78fb44e7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanGrigliaAcquistoView.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanGrigliaAcquistoView.java @@ -72,6 +72,7 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment { var alertDialog = alertDialogBuilder.create(); alertDialog.setCanceledOnTouchOutside(true); + alertDialog.setOnShowListener(this); return alertDialog; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUView.java index 389db303..40ee7a73 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLUView.java @@ -44,6 +44,7 @@ public class DialogBasketLUView extends BaseDialogFragment { .create(); alertDialog.setCanceledOnTouchOutside(false); + alertDialog.setOnShowListener(this); this.initViewPager(alertDialog); return alertDialog; diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsView.java index 89f4908e..67c9becb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArtsView.java @@ -7,7 +7,6 @@ import android.view.LayoutInflater; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; -import androidx.fragment.app.DialogFragment; import androidx.recyclerview.widget.LinearLayoutManager; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -15,12 +14,13 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder; import java.util.List; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; -public class DialogChooseArtFromListaArtsView extends DialogFragment { +public class DialogChooseArtFromListaArtsView extends BaseDialogFragment { private final List mListaArts; @@ -47,6 +47,7 @@ public class DialogChooseArtFromListaArtsView extends DialogFragment { .create(); alertDialog.setCanceledOnTouchOutside(false); + alertDialog.setOnShowListener(this); return alertDialog; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListView.java index ca1d490e..965ef399 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListView.java @@ -102,6 +102,7 @@ public class DialogChooseArtsFromMtbAartListView extends BaseDialogFragment impl @Override public void onShow(DialogInterface dialogInterface) { + super.onShow(dialogInterface); this.initList(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrList.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrList.java index 3b42d43e..c85678c8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrList.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrList.java @@ -144,6 +144,7 @@ public class DialogChooseArtsFromMtbColrList extends BaseDialogFragment implemen @Override public void onShow(DialogInterface dialogInterface) { + super.onShow(dialogInterface); this.initList(); this.initFilter(); this.setupBarcode(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPesoLUView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPesoLUView.java index 2cc755d0..c70ee8a5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPesoLUView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPesoLUView.java @@ -90,6 +90,7 @@ public class DialogInputPesoLUView extends BaseDialogFragment { .create(); alertDialog.setCanceledOnTouchOutside(cancelable); + alertDialog.setOnShowListener(this); return alertDialog; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java index 1716cef5..b2688f6a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java @@ -103,11 +103,12 @@ public class DialogScanOrCreateLUView extends BaseDialogFragment implements Dial }).show(requireActivity().getSupportFragmentManager(), "tag"); }); - var alertDialog = new MaterialAlertDialogBuilder(requireContext()) + var alertDialog = new MaterialAlertDialogBuilder(requireContext()) .setView(mBindings.getRoot()) .setCancelable(false) .create(); alertDialog.setCanceledOnTouchOutside(false); + alertDialog.setOnShowListener(this); return alertDialog; } diff --git a/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java b/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java index ec4a4af8..048b9584 100644 --- a/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java +++ b/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java @@ -1,6 +1,8 @@ package it.integry.keyobardemulatorscannerlibrary; import android.content.Context; +import android.os.Handler; +import android.os.Looper; import android.util.Pair; import android.view.KeyEvent; @@ -18,7 +20,8 @@ public class KeyboardEmulatorBarcodeReader implements BarcodeReaderInterface { private RunnableArgs mOnScanSuccessfull; private RunnableArgs mOnScanFailed; private String mTextBarcode = ""; - private long mLastCharInsertTime = 0; + private final Handler handler = new Handler(Looper.getMainLooper()); +// private long mLastCharInsertTime = 0; public KeyboardEmulatorBarcodeReader(Context applicationContext) { @@ -54,35 +57,56 @@ public class KeyboardEmulatorBarcodeReader implements BarcodeReaderInterface { @Override public void onKeyEvent(KeyEvent keyEvent) { - if (keyEvent.getEventTime() - mLastCharInsertTime > 500) { - mLastCharInsertTime = keyEvent.getEventTime(); - mTextBarcode = ""; - } - if (keyEvent.getKeyCode() != KeyEvent.KEYCODE_ENTER) { - if (keyEvent.getKeyCode() != KeyEvent.KEYCODE_SHIFT_LEFT) { - mLastCharInsertTime = keyEvent.getEventTime(); - if (keyEvent.getUnicodeChar() > 0) { - mTextBarcode += (char) keyEvent.getUnicodeChar(); - } else if (keyEvent.getCharacters() != null) { - mTextBarcode = keyEvent.getCharacters(); - } - } - } else { - if (mTextBarcode.length() > 0) { +// if (keyEvent.getEventTime() - mLastCharInsertTime > 500) { +// mLastCharInsertTime = keyEvent.getEventTime(); +// mTextBarcode = ""; +// } +// if (keyEvent.getKeyCode() != KeyEvent.KEYCODE_ENTER) { +// if (keyEvent.getKeyCode() != KeyEvent.KEYCODE_SHIFT_LEFT) { +// mLastCharInsertTime = keyEvent.getEventTime(); - BarcodeType barcodeType = decodeBarcode(mTextBarcode); - BarcodeScanDTO barcodeScanDTO = new BarcodeScanDTO() - .setByteValue(mTextBarcode.getBytes()) - .setStringValue(mTextBarcode) - .setType(barcodeType) - .setName(barcodeType != null ? barcodeType.toString() : ""); + handler.removeCallbacks(dispatchBarcode); - mOnScanSuccessfull.run(barcodeScanDTO); - } + if (keyEvent.getUnicodeChar() > 0) { + mTextBarcode += (char) keyEvent.getUnicodeChar(); + } else if (keyEvent.getCharacters() != null) { + mTextBarcode = keyEvent.getCharacters(); } + handler.postDelayed(dispatchBarcode, 500); +// } +// } else { +// if (mTextBarcode.length() > 0) { +// +// BarcodeType barcodeType = decodeBarcode(mTextBarcode); +// BarcodeScanDTO barcodeScanDTO = new BarcodeScanDTO() +// .setByteValue(mTextBarcode.getBytes()) +// .setStringValue(mTextBarcode) +// .setType(barcodeType) +// .setName(barcodeType != null ? barcodeType.toString() : ""); +// +// mOnScanSuccessfull.run(barcodeScanDTO); +// } +// } + } + + private final Runnable dispatchBarcode = new Runnable() { + @Override + public void run() { + BarcodeType barcodeType = decodeBarcode(mTextBarcode); + BarcodeScanDTO barcodeScanDTO = new BarcodeScanDTO() + .setByteValue(mTextBarcode.getBytes()) + .setStringValue(mTextBarcode) + .setType(barcodeType) + .setName(barcodeType != null ? barcodeType.toString() : ""); + + mOnScanSuccessfull.run(barcodeScanDTO); + mTextBarcode = ""; + } + }; + public BarcodeType decodeBarcode(String barcode) { /*Pattern patternUPCA = Pattern.compile("^[0-9]{12}$"); Pattern patternUPCE = Pattern.compile("^[0-1][0-9]{7}$");