android nexus4 nexus7 ble onLeScan掃瞄很慢、不連續、不穩定  

如果在專門開發android有關於BLE的一些應用,而且又是跟ibeacon定位有關的東西,勢必會需要持續去掃瞄週遭的ibeacon裝置,來判斷距離。

這個時候運氣不好剛好開發機是nexu4或nexus7就會發現,BLE SDK的callback方法onLeScan很少或幾乎不被呼叫,並且試了android 5.0新的ble掃瞄api,情形還是一模一樣,所以可以確定不是android sdk的問題(因為除了以上那兩隻,其他機器掃瞄都很正常)。

苦惱了很久,才在國外討論串,發現原來某些機器有藍牙廣告過濾的機制,而且還屬於bluetooth spec規範的內容,也就是說同一個廣告封包不會重複收到,是完全正常的行為。

可是這樣會使得很多相關應用都無法開發,所以現在唯一的解法,在該討論串有人提議,就是每次掃瞄到裝置,再把掃瞄關閉再重開,如此強迫手機去重複掃瞄週遭的藍牙裝置,目前貌似也只有這種方式可以解,不過要注意的是,要用黑名單機制,去切換不同的掃瞄方式,不然正常的機型用這種方式去掃瞄,反而會變得比較遲緩。

實際上我個人遇到有這種情況的機器有:

  • nexus4
  • nexus7
  • infocus m812
  • htc m7
  • htc 826
文章標籤
創作者介紹

宇若彎彎

周宇若 發表在 痞客邦 PIXNET 留言(0) 人氣()