Android 4.3没有显示蓝牙低功耗广告

时间:2013-10-14 09:46:51

标签: android bluetooth-lowenergy ibeacon

我正在尝试只发送广告的蓝牙LE设备(类似于iBeacon)。在我的Linux机器上,“hcitool lescan”检测到正在通告的设备并显示“缩短的名称”,因此无线接口似乎正常工作。

不幸的是,在带有最新版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

1 个答案:

答案 0 :(得分:2)

我设法自己弄清楚:如果你有一个只有 发送广告并且不接受任何连接的BTLE设备,那么你必须确保发送的PDU类型非常消息的第一个字节是0x02(ADV_NONCONN_IND)。否则,Android显然会尝试打开连接以查询GATT属性,这当然会失败。 AFAICT,iOS在这里更宽容。