android - 在 BLE 中随机化 Mac 地址

标签 android bluetooth bluetooth-lowenergy beacon

我制作了一款将 iOS 设备变成信标的应用程序。现在,当我从 Android 设备扫描 BLE 设备时,我在扫描列表中找到了该 iOS 设备,但问题是每次我都得到随机的 Mac 地址。

所以,我的问题是:这种默认行为是否意味着获取随机 mac 地址? 我已经检查了有关堆栈溢出的所有问题并得到了相同的答案,但我仍然想确认它?

此外,如果更改 mac 地址是默认行为,那么我们可以获取 mac 地址何时更改吗?

对于 Android 来说也是如此,如果我的 Android 设备作为信标工作,并且如果我扫描它,那么它仍然会轮换我的 Mac 地址吗?

最佳答案

每当广播 BLE 时,iOS 设备都会在未指定的时间段和条件后自动轮换广播数据包的 MAC 地址。

这种情况发生的确切条件和频率没有记录,是专有的,Apple 可能随时更改。没有可靠的方法来预测 iOS 设备何时会轮换正在进行的 BLE 广告的 MAC,尽管临时测试表明它通常会一次保持稳定几分钟。

了解 MAC 何时发生变化的唯一方法是让 iOS 通告一个已知的 iBeacon 标识符,附近没有其他设备正在通告该标识符,并在 Android 或其他允许您读取原始广告 MAC 的操作系统上跟踪此标识符。然后您可以直接测量 MAC 何时发生变化。

上述技术有效,但在大多数用例中帮助有限,因为它需要附近有两台设备以及 iOS 的固定广告。

关于android - 在 BLE 中随机化 Mac 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60504133/

相关文章:

android - 如何在每次打开同一蓝牙低功耗设备时重新连接我的应用程序?

android - 将 Serializable 对象写入外部存储时出现 java.io.NotSerializableException?

java - 在 Android 中检查文件是否为空

java - 错误 :Cause: failed to find target with hash string 'Google Inc.:Google APIs:23' in: E:\AndroidStudio\SDK

AndroidManifest.xml语法检查工具?

Android:有什么方法可以通过蓝牙自动配对另一台设备而不提示输入密码?

android - adapter.getBluetoothLeScanner() 在某些 Android 6.0 设备上返回 null

充当信标的 Android 设备

android - kitkat 上的 hfp 客户端角色实现

适用于 MsWindows 和/或 Mac OSX 的蓝牙 LE 4.0 的 Java 库