Android BLE 通知

Posted

技术标签:

【中文标题】Android BLE 通知【英文标题】:Android BLE Notification 【发布时间】:2017-03-08 13:35:05 【问题描述】:

我正在使用 BLE 开发一个 android 应用程序。我已经实现了所有基本操作,例如发现、连接和数据传输。

现在我正在寻找 BLE 通知,是否可以在应用程序未运行(甚至在后台也不运行)时从 BLE 设备接收通知。

我想要实现的是类似于 GCM/FCM 的通知,即使应用没有运行,我们也会在应用中收到通知。 所以想检查一下BLE设备和Android框架是否支持类似的通知机制。

我已经搜索了几个小时,但没有得到任何正确的结果。

如果有人能告诉我它是否支持?

【问题讨论】:

【参考方案1】:

现在我正在寻找 BLE 通知,当应用程序未运行(甚至在后台)时,是否可以从 BLE 设备接收通知。

BLE 只是一种通信协议。当有人说话时,必须有人倾听。

我想要实现的是类似于 GCM/FCM 的通知,即使应用没有运行,我们也会在应用中收到通知。所以想检查一下BLE设备和Android框架是否支持类似的通知机制。

GCM/FCM 工作,因为 Google Play 服务正在设备上运行以侦听消息。

根据您的问题,我可以想象两种可能的情况:

    如果“接收通知”是指蓝牙特性发生变化 - 那么您的应用程序应该已经在运行了。只有你知道如何与 BLE 设备对话。

    如果您想使用 BLE 实现位置感知信标类型行为,您可以利用现有的 Google Nearby 功能来实现所需的效果。

【讨论】:

【参考方案2】:

我会说不。您需要运行应用程序才能获得蓝牙回调。您应该简单地在您的进程中设置一个前台服务,这将使应用程序在后台运行。

【讨论】:

【参考方案3】:

如果您想在您的应用未运行时接收通知事件,您应该实现持续扫描 BLE 帧的 Android 服务,并捕获满足某些参数的帧(例如对于 iBeacon,它将是特定的 Major 和次要值;对于 Eddystone URL——一些特定的 URL 等)——只需发送打算启动您的应用程序。

【讨论】:

以上是关于Android BLE 通知的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 中不接收 BLE 通知

Android BLE GATT 外设模式通知

BLE Android,不能启用超过 1 个关于读取特性的通知

读取并通知BLE android

如果在 Android 中连接到 BLE 设备失败,如何通知用户?

Android BLE 无法从设备接收 Gatt 特性通知