Android 連接藍(lán)牙掃碼器無(wú)輸入框的實(shí)現(xiàn)
Android 的APP 需要集成一個(gè)藍(lán)牙掃碼器, 特別的是,需要掃碼的地方是沒(méi)有輸入框的(EditText),不能通過(guò)直覺(jué)上理解的通過(guò)對(duì)EditText輸入事件進(jìn)行監(jiān)聽(tīng)處理,取得掃碼結(jié)果。并且設(shè)備也沒(méi)有提供SDK。
細(xì)想了一下, 藍(lán)牙掃碼器本質(zhì)應(yīng)該是個(gè)HID設(shè)備,相當(dāng)于藍(lán)牙鍵盤(pán)。而后豁然開(kāi)朗。
每一次掃碼應(yīng)該會(huì)觸發(fā)按鍵事件,通過(guò)監(jiān)聽(tīng)當(dāng)前Activity的按鍵事件,應(yīng)該可以實(shí)現(xiàn),無(wú)輸入框的情況下取得掃碼結(jié)果。
重載Activity中的dispatchKeyEvent實(shí)現(xiàn)按鍵監(jiān)聽(tīng)。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
InputDevice inputDevice = event.getDevice();
if (inputDevice != null) {
int keyboardType = event.getDevice().getKeyboardType();
String deviceName = event.getDevice().getName();
boolean isVirtual = event.getDevice().isVirtual();
//可以根據(jù)輸入設(shè)備信息判斷是否為特定掃碼器輸入
if (!isVirtual) {
scannerHelper.onScanerInput(event);
}
}
}通常掃碼器在掃碼結(jié)果后會(huì)追加一個(gè)結(jié)束字符,我的這個(gè)設(shè)備默認(rèn)為回車(chē)。 所以接收到回車(chē)可以認(rèn)為一個(gè)掃碼結(jié)果“輸入”完成。
public class ScannerHelper {
private String buffer ="";
private MainOneActivity mainOneActivity;
public ScannerHelper(MainOneActivity mainOneActivity){
this.mainOneActivity = mainOneActivity;
}
public void onScanerInput(KeyEvent event){
if(event.getKeyCode() == KeyEvent.KEYCODE_ENTER){
mainOneActivity.onScannerResult(buffer);//回調(diào)掃碼結(jié)果
buffer="";
}else{
if (event.getAction() == KeyEvent.ACTION_UP && event.isPrintingKey()){
buffer += (char)event.getUnicodeChar();
}
}
}
}測(cè)試OK。
到此這篇關(guān)于Android 連接藍(lán)牙掃碼器無(wú)輸入框的文章就介紹到這了,更多相關(guān)Android 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android中Activity之間跳轉(zhuǎn)和參數(shù)傳遞的實(shí)例
本篇文章主要介紹了Android中Activity之間跳轉(zhuǎn)和參數(shù)傳遞的實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
關(guān)于Android中點(diǎn)擊通知欄的通知啟動(dòng)Activity問(wèn)題解決
這篇文章主要介紹了關(guān)于解決Android中點(diǎn)擊通知欄的通知啟動(dòng)Activity問(wèn)題的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03
舉例講解Android應(yīng)用開(kāi)發(fā)中OTTO框架的基本使用
這篇文章主要介紹了Android應(yīng)用開(kāi)發(fā)中OTTO框架的基本使用講解,文中舉了創(chuàng)建一個(gè)單例模式的應(yīng)用例子,需要的朋友可以參考下2016-02-02
c++ mk文件出錯(cuò)Jni調(diào)用產(chǎn)生java.lang.UnsatisfiedLinkError錯(cuò)誤解決方法
錯(cuò)誤產(chǎn)生在我把方法從c語(yǔ)言轉(zhuǎn)為c++語(yǔ)言后產(chǎn)生的,后來(lái)檢查到這種錯(cuò)誤是因?yàn)閙k文件出錯(cuò),加載c文件和加載c++的文件所用的代碼不一樣,下面請(qǐng)看2013-11-11
Android用SharedPreferences實(shí)現(xiàn)登錄注冊(cè)注銷(xiāo)功能
這篇文章主要為大家詳細(xì)介紹了Android用SharedPreferences實(shí)現(xiàn)登錄注冊(cè)注銷(xiāo)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
Android開(kāi)發(fā)筆記之:Handler Runnable與Thread的區(qū)別詳解
本篇文章是對(duì)在Android中Handler Runnable與Thread的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
Android 使用 Scroller 實(shí)現(xiàn)平滑滾動(dòng)功能的示例代碼
這篇文章主要介紹了Android 使用 Scroller 實(shí)現(xiàn)平滑滾動(dòng)功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Android ListView自定義Adapter實(shí)現(xiàn)仿QQ界面
這篇文章主要為大家詳細(xì)介紹了ListView自定義Adapter實(shí)現(xiàn)仿QQ界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10

