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 ...