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 通知的主要内容,如果未能解决你的问题,请参考以下文章
BLE Android,不能启用超过 1 个关于读取特性的通知