为什么我的 BluetoothDevice 的地址在我每次重新启动应用程序时都会改变?

Why the address of my BluetoothDevice changes every time I relaunch the app?

我正在使用此 sample-code

对 Android 的蓝牙 LE 功能进行一些简单的扫描 + 广告测试

我正在使用三星 6 和 Nexus 9 对其进行测试,出于某种原因,如果我将应用程序 运行 留在三星上并在 Nexus 上重新启动应用程序,下次三星设备找到另一个设备,它有一个不同的地址。

在代码中:

在设备上:

有趣的是它并没有反过来发生。 (从 Nexus 9 发现时,三星始终具有相同的地址)

正如 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]

追踪您

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

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