android 藍(lán)牙開發(fā)遇到的問題,部分手機出現(xiàn)第一次連接藍(lán)牙正常,但第二次開始就連接不上藍(lán)牙。
首先要知道藍(lán)牙有兩種類型,一種是經(jīng)典藍(lán)牙模塊,一般是用于傳輸數(shù)據(jù)量大,比較復(fù)雜數(shù)據(jù)的;另一種則是低功耗藍(lán)牙(BLE),一般用于簡單,快速傳輸數(shù)據(jù)。多用了手表,耳機,鍵盤等設(shè)備。
開發(fā)時遇到部分手機連接不上藍(lán)牙,或者說連接上一次后斷開就連不上或連接很慢。
很有可能是經(jīng)典藍(lán)牙模塊,要配對,你可以用手機自帶(進設(shè)置去邊)的藍(lán)牙去連接,會彈出配對提示框。
解決辦法:
1、在調(diào)用連接方法connectGatt時,應(yīng)確保設(shè)備未在進行搜索狀態(tài)。 如果正在進行搜索操作,則會大幅降低連接嘗試的速度,并增加連接失敗的可能性。所以在調(diào)用連接時先調(diào)用暫停搜索stopLeScan。
即調(diào)用順序為
?mBluetoothAdapter.stopLeScan(leCallBack)? ? //停止搜索
device.connectGatt? ? //連接
如果先調(diào)用connectGatt,后調(diào)用stopLeScan。則會出現(xiàn)第一次能連上,第二次開始就連接不上或連接慢。
2,然后可以在部分地方做延遲處理。在掃描時startLeScan,在連接時connect,等地方做延遲,這樣做的原因可能由于部分手機釋放資源比較慢。
3,斷開連接后需要調(diào)用mBluetoothGatt的close()方法。并把mBluetoothGatt = null設(shè)置為空。
4,盡量在正在連接藍(lán)牙的時侯不要做其他操作??梢约觽€蒙板呀什么的。