使用蓝牙 LE“Proximity”配置文件 Android 检测接近度

Posted

技术标签:

【中文标题】使用蓝牙 LE“Proximity”配置文件 Android 检测接近度【英文标题】:Detect proximity using Bluetooth LE "Proximity" profile Android 【发布时间】:2013-10-28 16:16:50 【问题描述】:

问题定义: 我一直在尝试将 BLE proximity profile 用于 android 上的蓝牙 LE。一些设备,例如具有 4.3 Android 的新一代 Google Nexus 平板电脑支持 BLE,并且可以充当central 设备。 我阅读了Bluetooth LE 的 Android 官方文档,但他们似乎对此没有任何支持。他们是否有任何解决方法来实施我们自己的邻近配置文件?

关于 Android 上的邻近配置文件但没有帮助的问题

Reading Bluetooth RSSI for BLE proximity profile in Android。 How to use the profile of PROXIMITY PROFILE,IMMEDIATE ALERT SERVICE and Find Me Profile in android 4.3 BLE? BTLE (Bluetooth Low energy) development kit - must have proximity profile

感谢任何帮助。谢谢。

【问题讨论】:

Proximity Profile 定义了两个角色:Proximity Monitor 和 Proximity Reporter。 Proximity Reporter 应为 GATT 服务器。 Proximity Monitor 应为 GATT 客户端。 Android 设备只能充当中心角色,因此可以是 Proximity Monitor,但不能是 Proximity Reporter。 【参考方案1】:

2014 年 6 月:

感谢大家的回答。只是为了更新,截至 2014 年 6 月,BLE 外设模式在 Android L 开发者预览版中提供。因此,现在 Android 设备既可以充当外围设备,也可以充当中心角色。希望在Android L 官方版本中看到它。引用他们的博客New in Android: L Developer Preview and Google Play Services 5.0:

L 开发者预览版可让您探索下一版 Android 的许多新特性和功能,并提供在新平台上开始开发和测试所需的一切。以下是开发人员的一些亮点:

BLE 外设模式 — Android 设备现在可以在蓝牙低功耗 (BLE) 外设 模式下运行。应用可以使用此功能向附近的设备广播它们的存在——例如,您现在可以构建应用,让设备充当计步器或健康监测器,并将数据传输到另一个 BLE 设备。

2014 年 10 月 16 日更新:

现在出来了!结帐Android 5.0 wireless changes 页面。

2014 年 12 月 8 日更新:

坏消息是 BLE 外设模式仅适用于较新的 Android 设备(根据日期),即 Nexus 6 和 Nexus 9。它不适用于 Nexus 4/Nexus 5/nexus 7/nexus 10即使您将其更新到 Android 5.0。您可以通过BLE advertise mode not working 票证上的一位 Android 项目经理阅读comment。他说:

我们在 Android 5.0 Lollipop 中引入了 BLE 外设模式。 Nexus 6 和 Nexus 9 是支持 BLE 外设模式的前两个生产 Nexus 设备。由于硬件芯片组依赖性,较旧的 Nexus 设备 (4/5/7) 将无法访问 Lollipop 上的功能。

感谢Rob Anderson 告知。

【讨论】:

但据我所知,它只适用于 Nexus 6 和 Nexus 9。我在我的 Nexus 4 (Android 5.0) 上试过,但它不工作。 AFAIK Nexus 4 支持它。在此处查看设备列表:bluetooth.com/Pages/Bluetooth-Smart-Devices-List.aspx 对不起,我说的是外围模式! Nexus 4 不支持!我写了以下代码来测试它:github.com/hennroja/AndroidBLEPeripheralTest @RobAnderson 你是对的。我更新了我的答案。我在回答中提到的票证上的一位 Android 项目经理的评论证实了这一点。【参考方案2】:

详述shubhams's answer:

很遗憾,Android 设备无法充当外围设备。他可以创建 GATT 服务器、服务和特性,但无法制作广告。 (https://***.com/a/18020153/3061383)

由于 Android(尚)不支持广告,因此没有其他 BLE 设备能够发起与 Android 设备的连接。到目前为止,Android 设备必须启动连接。

【讨论】:

【参考方案3】:

不幸的是,android 只能充当中心而不是外围。因此,此时无法进行自定义分析。相反,您可以使用 gatt 提供的配置文件。

例如:温度监视器配置文件。相反,您可以在 iPhone 上制作自定义服务和特性,并将其用作信标。

另外,如果您使用的是 Estimote 和其他公司的硬件设备,您可以从 android 设备回复数据,即服务和特性具有读取、写入和通知等属性。但是当你把 iPhone 作为 Beacon 时,你将无法从 android 设备接收到值。

【讨论】:

以上是关于使用蓝牙 LE“Proximity”配置文件 Android 检测接近度的主要内容,如果未能解决你的问题,请参考以下文章

用于读取测量数据的蓝牙 LE 配置文件

找出 Android 蓝牙 LE GATT 配置文件

是否可以在没有 GATT 的情况下实施 Proximity Profile?

什么是 iBeacon 蓝牙配置文件

降低蓝牙 LE 发射功率 iOS 7

如何从 iPhone 向蓝牙 LE 设备发送电子邮件、短信通知?