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)為回車。 所以接收到回車可以認(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線性布局和表格布局實(shí)例講解
在activity的布局中,線性布局和表格布局是最簡(jiǎn)單的,這次分別從線性布局,表格布局以及線性布局和表格混合布局做了實(shí)驗(yàn)2013-11-11Android編程實(shí)現(xiàn)文字倒影效果的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)文字倒影效果的方法,涉及Android布局與圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2017-03-03Android System fastboot 介紹和使用教程
Fastboot是Android快速升級(jí)的一種方法,Fastboot的協(xié)議fastboot_protocol.txt在源碼目錄./bootable/bootloader/legacy下可以找到,本文給大家介紹Android System fastboot 介紹和使用教程,感興趣的朋友一起看看吧2024-01-01Android開(kāi)發(fā)之自帶下載器DownloadManager的使用示例代碼
本篇文章主要介紹了Android開(kāi)發(fā)之自帶下載器DownloadManager的使用示例代碼,Android自帶的DownloadManager是一個(gè)很好的下載文件的工具,有興趣的可以了解一下。2017-03-03Android Studio設(shè)置、改變字體和主題的方法
這篇文章主要介紹了Android Studio設(shè)置、改變字體和主題的方法,需要的朋友可以參考下2018-03-03Android如何實(shí)現(xiàn)壓縮和解壓縮文件
這篇文章主要介紹了Android實(shí)現(xiàn)壓縮和解壓文件的實(shí)例代碼,涉及到批量壓縮文件夾,解壓縮一個(gè)文件等方面的知識(shí)點(diǎn),本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧2016-05-05Kotlin協(xié)程之Flow基礎(chǔ)原理示例解析
這篇文章主要為大家介紹了Kotlin協(xié)程之Flow基礎(chǔ)原理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Android studio實(shí)現(xiàn)簡(jiǎn)易計(jì)算器App功能
這篇文章主要為大家詳細(xì)介紹了Android studio實(shí)現(xiàn)簡(jiǎn)易計(jì)算器App功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05Android自定義垂直拖動(dòng)seekbar進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了Android自定義垂直拖動(dòng)seekbar進(jìn)度條,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11