1. 程式人生 > >Android掃描槍(PDA)開發

Android掃描槍(PDA)開發


// 最近在負責PDA的開發,在掃描事件的處理上,花費了一些時間,但是,最終功夫不負有心人,總算找到一個好點的解決方案,不說了,上程式碼。
    // 該文字框新增掃描事件.
    // 但是該掃描事件有一個明顯的bug,當掃描出的字元是一個的時候,就無法區分出是掃描事件還是手動輸入的事件。
    editText.addTextChangedListener(textwatcher);
    /**
     * 掃描事件.
     **/
    private MTextWatcher textwatcher = new MTextWatcher();

    private class MTextWatcher
implements TextWatcher {
@Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub /** * 三個引數的值 * start before count * 0 0 13 <br> * 掃描時觸發的 :start=0,before=0,count=1 <br> * 手動輸入時,顯示的資料 012 023 034 045<br> * start=0,before=1,count=2,<br> * start=0,before=2,count=3,<br> * start=0,before=3,count=4,<br> * start=0,before=4,count=5,<br> * 手動通過鍵盤輸入:是每個字母都會觸發textWatcher事件 掃描是整體觸發,不會單個觸發. ** **/
if (start == 0 && before == 0 && count > 1) { // 當掃描一個字元時,會出錯 // 當掃描事件觸發的時候,去執行自己的方法. } else { // 為手動輸入觸發的事件. } } @Override public void beforeTextChanged(CharSequence s, int start, int
count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub }

總結
單個輸入是:觸發多個TextWatcher事件
PDA掃描是:觸發一個TextWatcher事件
缺點
當掃描一個字元的時候,無法區分這兩個事件