Android裝置獲取掃碼槍掃瞄內容

2021-08-08 13:59:41 字數 2541 閱讀 7146

android專案中的androidmanifest.xml檔案新增藍芽許可權。

3.檢測掃碼槍的連線狀態

通常來說,掃碼槍裝置也相當於普通外接輸入裝置型別,外接鍵盤。

我這款掃碼槍裝置返回的是如下藍芽型別。

bluetoothclass.device.major.peripheral

一般而言,通過如下這種方式就可以獲得到我們掃碼槍裝置的資訊。

setbluedevices = mbluetoothadapter.getbondeddevices();

if (bluedevices == null || bluedevices.size() <= 0)

for (iteratoriterator = bluedevices.iterator(); iterator.hasnext(); )

}

開發過程中,必然會需要實時判斷裝置是否正常連線。

mbluetoothadapter.getbondeddevices()

這個方法僅僅只能夠判斷裝置是否已配對繫結。但是繫結不代表連線,所以只能放棄。

public list getconnecteddevices (int profile) 

public int getconnectionstate (bluetoothdevice device, int profile)

接著又嘗試了這兩個方法,方法是可用,但是必須要求裝置sdk>18,即android 4.3版本以上才可用。

後來轉頭一想,既然掃碼槍也是輸入裝置,我們可以不同藍芽裝置狀態檢測入手,改為從輸入裝置檢測入手。於是,

private void hasscangun()
搞定。

4.獲取掃碼槍掃瞄內容

掃瞄槍,既然是乙個外接輸入裝置,那麼很自然的,我們就從keyevent入手。

事件解析類

/**

* 掃碼槍事件解析類

*/public class scangunkeyeventhelper

};//返回掃瞄結果

private void performscansuccess()

//key事件處理

public void analysiskeyevent(keyevent event)

if (keycode == keyevent.keycode_enter) else }}

//檢查shift鍵

private void checkletterstatus(keyevent event) else }}

//獲取掃瞄內容

private char getinputcode(keyevent event) else if (keycode >= keyevent.keycode_0 && keycode <= keyevent.keycode_9) else

}return achar;

}public inte***ce onscansuccesslistener

public void setonbarcodecatchlistener(onscansuccesslistener onscansuccesslistener)

public void ondestroy()

}activity中重寫dispatchkeyevent方法,擷取key事件。

/*** activity截獲按鍵事件.發給scangunkeyeventhelper

** @param event

* @return

*/@override

public boolean dispatchkeyevent(keyevent event)

return super.dispatchkeyevent(event);

}/**

* 顯示掃瞄內容

* @param barcode 條形碼

*/@override

public void onscansuccess(string barcode)

詳細**參看:

注意點:

1.部分機型無法判斷外接鍵盤資訊,如三星。

private void hasscangun()

三星手機cfg.keyboard返回值等於configuration.keyboard_nokeys。

因此為了更好的相容,可以採用如下方法,

/**

* 判斷是否已經連線掃碼槍

* @return

*/protected boolean hasscangun()

for (iteratoriterator = bluedevices.iterator(); iterator.hasnext(); )

}return false;

}private boolean isinputdeviceused(string devicename)

}return false;

}

掃碼槍掃碼的問題

今天來總結下,掃碼槍遇到的一些問題。ps 參考了 博主的文章 剛開始掃碼用的是edittext edittext edittext edittext findviewbyid r.id edittext edittext.addtextchangedlistener watcher private ...

掃碼槍獲取資料處理

掃碼槍的工作原理和鍵盤輸入事件一樣 方法一 在created鉤子函式裡面監聽鍵盤輸入的事件獲取掃碼槍輸入的值 var b var this this document.onkeydown function else this.msg b 方法二 通過輸入框聚焦事件獲取輸入的值 不過大部分的掃碼槍需求...

vue對接掃碼槍(vue)

因為公司的需求,需要接入掃碼槍進入系統,所以有了這篇文章,我這邊框架用的是是element ui的。首先得解決怎麼去觸發提交到後台的問題,掃碼槍只能掃瞄出條形碼的內容,類似於觸發鍵盤輸入的效果,但是和普通的鍵盤輸入又所區別的是,掃碼槍每次掃瞄完之後,是會有乙個回車的效果,所以我觀察到element ...