2013-10-14 78 views
3

我正在嘗試使用僅發送廣告(類似於iBeacon)的藍牙LE設備。在我的Linux機器上,「hcitool lescan」檢測到正在播發的設備並顯示「縮短的名稱」,因此無線接口似乎工作正常。Android 4.3未顯示藍牙低功耗廣告

不幸的是,在我最新的ROM(Android 4.3)的Nexus 4手機上,我嘗試了4種不同的藍牙LE掃描儀應用程序,但都沒有顯示設備的廣告。但是,當設備處於活動狀態時,「adb logcat」會顯示大量正在處理的btu_ble_process_adv_pkt [1]事件,只要設備斷電,該事件就會停止。所以顯然BTLE堆棧似乎在拾取我的廣告,但他們沒有到達應用程序。

任何人都可以建議廣告必須包含哪些字段以妥善處理Android?

[1] https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/jb-mr1.1-dev/stack/btu/btu_hcif.c#2198

+0

你可以爲你的應用程序發佈一些與藍牙功耗和廣告顯示功耗相關的代碼嗎? – JRomero

+0

到目前爲止,我沒有編寫任何應用程序。相反,我嘗試了Play商店中的各種掃描器應用程序。 –

回答

2

我設法找出自己:如果你有一個BTLE裝置發送廣告,不接受任何連接,那麼你必須確保PDU類型因爲消息的第一個字節是0x02(ADV_NONCONN_IND)。否則,Android顯然會嘗試打開連接以查詢GATT屬性,這當然會失敗。 AFAICT,iOS在這裏更寬容。