package com.topsun.posclient.common.core; import java.util.HashMap; import java.util.Map; public class BarcodeKeyboardListener { private StringBuilder barcode; private long start; private Map<Integer,Integer> keyToLetter=new HashMap<Integer,Integer>(); private static int maxScanTime=300; private static int barcodeMinLength=6; public BarcodeKeyboardListener(){ keyToLetter.put(48,0); keyToLetter.put(49,1); keyToLetter.put(50,2); keyToLetter.put(51,3); keyToLetter.put(52,4); keyToLetter.put(53,5); keyToLetter.put(54,6); keyToLetter.put(55,7); keyToLetter.put(56,8); keyToLetter.put(57,9); } public void onKey(int keyCode) { Integer letter=keyToLetter.get(keyCode); if(barcode==null){ barcode=new StringBuilder(); start=System.currentTimeMillis(); } long cost=System.currentTimeMillis()-start; if(cost > maxScanTime){ barcode=new StringBuilder(); start=System.currentTimeMillis(); } if (keyCode >= 48 && keyCode <= 57) { barcode.append(letter); } if (keyCode == 13) { if(barcode.length() >= barcodeMinLength && cost < maxScanTime){ cost=System.currentTimeMillis()-start; System.out.println(barcode.toString()); BarcodeListenetManager.getInstance().fireChange(barcode.toString()); BarcodeBuffer.product(barcode.toString()); } barcode=new StringBuilder(); } } }