2016-03-23 20 views
3

私は、サムスン6とNexus 9のを使用して、それをテストしています。このsample-code私はいつBluetoothデバイスのアドレスが変わるのですか?

を使ってAndroidのためのBluetooth LEの機能のいくつかの簡単なスキャン+広告のテストをやっている、といくつかの理由のために私は上の実行中のアプリを残せばSamsungがNexusでアプリを再起動すると、次回にSamsungのデバイスが他のデバイスを検出したときに別のアドレスが表示されます。コードで

enter image description here

デバイスの場合:

enter image description here

それは周りに他の方法では発生しません面白いです。 (Nexus 9で発見された場合、Samsungは常に同じアドレスを使用します)

  • これはデバイス間の共通の動作ですか?
  • MACアドレス以外の特定のデバイスを識別する別の方法はありますか?
+2

引用[ドキュメント](http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id ):「Android 6.0(APIレベル23)を実行しているデバイスがバックグラウンドのWi-FiまたはBluetoothスキャンを開始すると、その操作はランダム化されたMACアドレスから発信された外部デバイスに表示されます。 – CommonsWare

答えて

5

Android 6.0のように、Androidはプログラムでハードウェアアドレスへのアクセスを削除し、アドレスがスキャンデバイスにランダムに生成されるようにしました。変更ログは、ここで見つけることができます:

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

走査装置ではなく実際のものよりもランダムBluetoothアドレスを参照してくださいという事実は、非常に便利なプライバシー機能です。

"この機能により、広告パケット内のMACアドレスは、広告パケット内の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

詳細な対応をありがとうございます。だから私の2番目の質問に対する答えは、デバイスが私に何らかの識別子を送信しない限り、デバイスを2度idにする方法がないということでしょうか?そうであれば、同じサービスを持つ特定のデバイスをターゲットにするときにデバイスを検索するたびにデバイスに接続する必要があります。 – Omer

関連する問題