我正在做一些简单的扫描+广告测试,用这个样本码对安卓的蓝牙功能进行广告测试
我正在使用三星6和Nexus 9进行测试,出于某种原因,如果我让应用程序在三星上运行,然后在Nexus上重新启动应用程序,下次三星设备找到另一台设备时,它就会有不同的地址。
代码:

在设备上:

有趣的是它不会发生在相反的情况下。(从Nexus 9中发现三星的地址总是相同的)
发布于 2016-03-26 12:45:13
正如CommonsWare所提到的,从Android6.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
https://stackoverflow.com/questions/36180407
复制相似问题