Migliorie nel KeyboardEmulatorBarcodeReader
This commit is contained in:
@@ -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}$");
|
||||
|
||||
Reference in New Issue
Block a user