Android掃描槍(PDA)開發
阿新 • • 發佈:2019-02-10
// 最近在負責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事件
缺點
當掃描一個字元的時候,無法區分這兩個事件