2011-07-26 212 views
1

因此,爲了獲得不斷更新的RSSI值,我不得不採取這種低效率的方法。我試過使用bluecove 2.1.1,但它給了我一些庫錯誤和運行時錯誤,我不想再浪費時間處理。開發人員指南將發現定義爲掃描附近的可發現設備的過程。藍牙發現與連接

正在調用方法Intent.getShortExtra(BluetoothDevice.EXTRA_RSSI,Short.MIN_VALUE);在這段時間內可能嗎?

或者這兩個設備是否必須先建立連接才能使上述方法具有任何意義?我可以先將有問題的設備的MAC地址保存到某個變量mac_addr,將RSSI值保存到某個變量my_rssi,然後每次調用poll()時,運行新掃描,並且其mac地址與mac_addr相匹配的設備是有針對性的,並更新my_rssi字段?

回答

4

正確或更好,您可以僅在設備發現掃描期間獲取RSSI值。我的碩士研究論文是關於這個話題的。這是因爲活動連接期間的RSSI值不可靠(由於RSSI值本身的性質),因此Google Android工程師沒有通過API公開它。這

優勢:

  • 你並不需要一個有效的連接,因此不需要配對
  • 由於沒有「微網」參與,您掃描設備的數量可能是無限的

缺點

  • 其他藍牙設備需要被發現的(本是一個問題,尤其是如果你想找到其中有一個最大曝光率間隔其他Android設備)
  • 連續設備發現掃描是一個沉重的過程 - >costs a lot of battery

的問題然而,隨着不斷地執行設備發現是它在移動設備上消耗大量電池...

+0

非常感謝Juri!我花了數週的時間試圖找到並實現一個有效的方法來實現這個目標,但最終我放棄了。至少對於我在本地大學的Android Deving的寶寶來說,低效率至少比非功能性更好。再次感謝。 –

+0

你想達到什麼樣的目標? – Juri

+0

基本上它會給出附近的藍牙設備的相對距離,在特定的閾值距離播放警報。所以我有一切設置,用戶界面,按鈕,小工具等,播放警報功能,掃描功能,連接等。只是最後一個投票RSSI值仍然有。我認爲總體來說,在這最後一步中,有限制條件下的項目(在ANDROID上必須使用BLUETOOT)是有缺陷的。儘管如此,我打算至少有一些功能,但不準確和能源效率低下,爲完成工作。 –