从 BLE Beacon (ANDROID) 获取一条消息

问题描述

我有一个 BLE 信标,它不是持续广播,而是在您按下按钮时广播一条消息。这是一个调试消息。我到处找,但找不到可以收听 Beacon 消息的库。

我查看并尝试了以下解决方案:

https://altbeacon.github.io/android-beacon-library/index.html

https://developers.google.com/nearby/messages/android/get-started

是否有允许这样做的库?

解决方法

为了检测按下按钮时发送的信标消息,您需要移动应用程序持续监听(“扫描”是 BLE 术语),因为它不知道您何时按下按钮.

您可以使用问题中提到的开源 Android Beacon Library 来执行此操作。您可能希望使用其“信标测距”API,该 API 会扫描信标并通过每秒回调告诉您的应用它看到的信标(如果有)。如果有人点击了信标按钮,您的应用将收到对 didRangeBeaconsInRegion 的回调,其中包含列表中的单个信标。 (如果没有人点击按钮,应用将收到列表中包含零个信标的回调。)

几个要点:

  1. 您需要知道您的硬件正在传输的信标的格式(iBeacon、AltBeacon、Eddystone-UID、Eddystone-URL 等),以便您可以设置扫描库来查找那种类型的信标.

  2. 你需要知道硬件信标发出什么样的标识符。 iBeacon 和 Altbeacon 等格式传输长的十六进制 UUID 标识符,如“2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6”。您需要知道它发送的内容,以便您可以判断信标是否属于您。否则,即使其他人的信标正在传输,您的程序也会做出反应。

完全披露:我是 Android Beacon 库开源项目的首席开发人员

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...