做室內定位的程序員應該都知道,在Android 5.0之后,google推出了藍牙掃描新接口,我們在實測中發現出一些問題,現在給大家列出,以供參考:
1.android 4.3.1(Build.VERSION_CODES.JELLY_BEAN_MR2)增加的startLeScan(callback)方法,官方在5.0之后不建議使用,實測此方法,4.3至目前6.0版本還是很穩定的,毫秒級無限返回藍牙數據,很穩定,就是很耗電;
2.android5.0(Build.VERSION_CODES.LOLLIPOP)谷歌建議使用BluetoothAdapter.getBluetoothLeScanner().startScan(mScanCallback),實測效果不盡人意,大哥總是帶頭讓人測試api,好歹自己測測嘛,這個接口很不穩定,前幾十秒掃描非常穩定,快速返回很多個BLE裝置后(大概持續1-2分鐘),然后藍牙自動靜默,回調方法無任何數據返回,我們幾百臺BLE設備實測。
①:另外實測中大部分市面上的android4.3系統之上的手機,小米低配系列和華為低配系列會出現掃描幾分鐘甚至幾十秒之后,手機藍牙底層崩潰,logcat報出底層藍牙模塊報錯,只能重啟才有效,不過最近MIUI6之后,發現例紅米1s藍牙掃描可以無限支持藍牙掃描接口,說明是系統ROM的問題;
②:三星系列手機,note是最差的,接收到BLE藍牙信號很不穩定,可能出現較遠出的BLE裝置信號突然很高的情況;S4,S5掃描正常。
③:魅族藍牙是最差的,兩款魅族手機,我不清楚型號了,應該是中配版的,實測掃描開啟幾秒后,logcat報出底層藍牙崩潰,無法返回任何信息。
④:接口反饋最正常的肯定是Google android實驗室榜樣機Nexus系列,也僅限于1中老接口
最后建議大家:API有風險,修改需謹慎,哪怕是我Google大帝,也有偷懶的時候