您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“Android如何實現(xiàn)USB掃碼槍獲取掃描內(nèi)容”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
最近做了關(guān)于在Android設(shè)備上外接掃碼的項目,在此記錄一下關(guān)于Android USB掃碼槍獲取內(nèi)容的問題
首先我這邊使用是USB HID的掃碼槍,即插即用,只需要在界面上有一個帶有焦點的EditText ,就可以獲取掃碼槍掃描的內(nèi)容。
是不是感覺很簡單,但是今天我這里是講的是在沒有EditText 的情況下獲取掃碼槍掃描的內(nèi)容。
USB HID掃碼槍會將掃描出來的內(nèi)容轉(zhuǎn)化為鍵盤事件,對應的就是Android中的KeyEvent事件,所以我們只需要在我們的activity中
重寫onKeyDown方法
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { checkLetterStatus(event); keyCodeToNum(keyCode); if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) { Log.e("鍵盤事件", buffer.toString()); buffer.delete(0, buffer.length()); return true; } return false; }
上面我們說了掃碼槍是響應我們的鍵盤事件,所以當掃碼槍每掃描到一個字符的時候,就相當于按下了我們鍵盤上的對應按鍵,也就是keyCode,因此我們只需要處理這個keyCode就行了。
下面我把checkLetterStatus()檢查是否大小寫的方法跟keyCodeToNum()根據(jù)對應的keycode轉(zhuǎn)換對應的數(shù)字跟字母
//檢查shift鍵 private void checkLetterStatus(KeyEvent event) { int keyCode = event.getKeyCode(); if (keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT || keyCode == KeyEvent.KEYCODE_SHIFT_LEFT) { if (event.getAction() == KeyEvent.ACTION_DOWN) { //按著shift鍵,表示大寫 mCaps = true; } else { //松開shift鍵,表示小寫 mCaps = false; } } } //根據(jù)keycode得到對應的字母和數(shù)字 private void keyCodeToNum(int keycode) { if (keycode >= KeyEvent.KEYCODE_A && keycode <= KeyEvent.KEYCODE_Z) { if (mCaps) { buffer.append(map.get(keycode).toUpperCase()); } else { buffer.append(map.get(keycode)); } } else if ((keycode >= KeyEvent.KEYCODE_0 && keycode <= KeyEvent.KEYCODE_9)) { buffer.append(keycode - KeyEvent.KEYCODE_0); } else { //暫不處理特殊符號 } }
上面的方法里面有個map,是用來存儲字母的
Map<Integer, String> map = new HashMap<>(); map.put(29, "a"); map.put(30, "b"); map.put(31, "c"); map.put(32, "d"); map.put(33, "e"); map.put(34, "f"); map.put(35, "g"); map.put(36, "h"); map.put(37, "i"); map.put(38, "g"); map.put(39, "k"); map.put(40, "l"); map.put(41, "m"); map.put(42, "n"); map.put(43, "0"); map.put(44, "p"); map.put(45, "q"); map.put(46, "r"); map.put(47, "s"); map.put(48, "t"); map.put(49, "u"); map.put(50, "v"); map.put(51, "w"); map.put(52, "x"); map.put(53, "y"); map.put(54, "z");
最后用一個StringBuffer 來接收處理過的數(shù)據(jù)。大概就這樣吧!
“Android如何實現(xiàn)USB掃碼槍獲取掃描內(nèi)容”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。