2016-03-23 37 views
3

我使用這個sample-code爲什麼我每次重新啓動應用程序時,BluetoothDevice的地址都會發生變化?

我用的是三星6和Nexus 9的測試它做一些簡單的掃描+廣告測試藍牙LE功能的Android,以及由於某種原因,如果我離開應用程序上運行三星並在Nexus上重新啓動應用程序,下次三星設備找到其他設備時,它有不同的地址。

在代碼:

enter image description here

在設備:

enter image description here

它不會發生周圍其他方式的有趣的事情。 (從Nexus 9發現時,三星始終具有相同的地址)

  • 這是設備之間的常見行爲嗎?
  • 除了mac地址之外,還有其他方法可以識別特定設備嗎?
+2

引用[文檔](http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id ):「當運行Android 6.0(API級別23)的設備啓動後臺Wi-Fi或藍牙掃描時,該操作對於外部設備可見,源自隨機MAC地址。」 – CommonsWare

回答

5

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

你可以在這裏找到一個類似的問題: -

Since marshmallow update Bluetooth discovery using BluetoothAdapter.getDefaultAdapter().startDiscovery(); is broken

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

+3

感謝您的詳細回覆。因此,對於第二個問題的答案是,除非設備向我發送某種標識符,否則無法爲設備標識兩次。如果是這樣,每次我在尋找具有相同服務的特定設備時都必須連接到設備,這聽起來很奇怪。 – Omer

相關問題