欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實(shí)現(xiàn)USB掃碼槍獲取掃描內(nèi)容

 更新時(shí)間:2021年09月28日 11:52:51   作者:騎馬打醬油  
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)USB掃碼槍獲取掃描內(nèi)容,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近做了關(guān)于在Android設(shè)備上外接掃碼的項(xiàng)目,在此記錄一下關(guān)于Android USB掃碼槍獲取內(nèi)容的問(wèn)題

首先我這邊使用是USB HID的掃碼槍?zhuān)床寮从?,只需要在界面上有一個(gè)帶有焦點(diǎn)的EditText ,就可以獲取掃碼槍掃描的內(nèi)容。

是不是感覺(jué)很簡(jiǎn)單,但是今天我這里是講的是在沒(méi)有EditText 的情況下獲取掃碼槍掃描的內(nèi)容。

USB HID掃碼槍會(huì)將掃描出來(lái)的內(nèi)容轉(zhuǎn)化為鍵盤(pán)事件,對(duì)應(yīng)的就是Android中的KeyEvent事件,所以我們只需要在我們的activity中

重寫(xiě)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("鍵盤(pán)事件", buffer.toString());
            buffer.delete(0, buffer.length());
            return true;
        }
 
        return false;
}

上面我們說(shuō)了掃碼槍是響應(yīng)我們的鍵盤(pán)事件,所以當(dāng)掃碼槍每掃描到一個(gè)字符的時(shí)候,就相當(dāng)于按下了我們鍵盤(pán)上的對(duì)應(yīng)按鍵,也就是keyCode,因此我們只需要處理這個(gè)keyCode就行了。

下面我把checkLetterStatus()檢查是否大小寫(xiě)的方法跟keyCodeToNum()根據(jù)對(duì)應(yīng)的keycode轉(zhuǎn)換對(duì)應(yīng)的數(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鍵,表示大寫(xiě)
                mCaps = true;
            } else {
                //松開(kāi)shift鍵,表示小寫(xiě)
                mCaps = false;
            }
        }
    }
    //根據(jù)keycode得到對(duì)應(yīng)的字母和數(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 {
            //暫不處理特殊符號(hào)
        }
 
    }

上面的方法里面有個(gè)map,是用來(lái)存儲(chǔ)字母的

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");

最后用一個(gè)StringBuffer 來(lái)接收處理過(guò)的數(shù)據(jù)。大概就這樣吧!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論