为什么每次重新启动应用程序时,我的蓝牙设备的地址都会发生变化?

2023-11-27

我正在使用这个对 Android 的蓝牙 LE 功能进行一些简单的扫描 + 广告测试示例代码

我正在使用三星 6 和 Nexus 9 进行测试,出于某种原因,如果我让应用程序在三星上运行并在 Nexus 上重新启动应用程序,则下次三星设备找到其他设备时,它会显示不同的结果地址。

In code:

enter image description here

在设备上:

enter image description here

有趣的是,相反的情况却不会发生。 (从 Nexus 9 发现时,三星始终具有相同的地址)

  • 这是设备之间的常见行为吗?
  • 除了 MAC 地址之外,还有其他方法来识别特定设备吗?

正如 CommonsWare 提到的,从 Android 6.0 开始,Android 已经以编程方式删除了对硬件地址的访问,并使得该地址对于扫描设备来说似乎是随机生成的。更改日志可以在这里找到:

http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id

扫描设备看到的是随机蓝牙地址而不是实际地址,这一事实是一项非常有用的隐私功能。自 BTv4.0 起,它已被蓝牙规范采用,称为 LE 隐私:

"此功能会导致广告数据包中的 MAC 地址被随机值替换,该随机值按照制造商确定的时间间隔发生变化。沿着您的旅行路线间隔放置的任何恶意设备都无法确定从您的设备收到的一系列不同的、随机生成的 MAC 地址实际上与同一物理设备相关。它实际上看起来像一系列不同的设备,因此,不可能使用公布的 MAC 地址来跟踪您"[1]

您可以在这里找到类似的问题:-

由于棉花糖使用BluetoothAdapter.getDefaultAdapter().startDiscovery()更新蓝牙发现;被打破

[1] http://blog.bluetooth.com/bluetooth-technology-protecting-your-privacy/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么每次重新启动应用程序时,我的蓝牙设备的地址都会发生变化? 的相关文章