Migliorie nel KeyboardEmulatorBarcodeReader

This commit is contained in:
2023-02-06 18:36:15 +01:00
parent fa695ca9a4
commit bda1328dec
10 changed files with 82 additions and 42 deletions

View File

@@ -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<BarcodeScanDTO> mOnScanSuccessfull;
private RunnableArgs<Exception> 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}$");