Private vs öffentliche Adressen in Bluetooth Low Energy auf Android

Ein Bluetooth low energy Gerät ist eindeutig durch seine Adresse (in der Android-API, die Sie aufrufen, das die MAC-Adresse und bezeichnen es als Doppelpunkt getrennt hex-Werte (z.B. 11:aa:22:bb:33:cc).

Aber zur eindeutigen Identifizierung eines BLE-Adresse, die Sie brauchen, zu wissen, ob es eine öffentliche oder eine private Adresse. Im wesentlichen, die 49 bits, die notwendig ist um eine Adresse, die nicht 48.

Random-Adressen können entweder statisch (static random, nicht auflösbaren privaten oder den auflösbaren private und diese Typen werden getrennt durch ein bit-Muster in den beiden most significant Byte (11, 00 und 10 jeweils).

Aber ich don ' T sehen überall, dass können Sie separate öffentliche und zufällige Adressen einfach durch einen Blick auf die 48 bits in der Adresse.

Also wie funktioniert das in der Android-API? Wie wissen Sie, welches Gerät zu verbinden, wenn Sie nicht wissen, ob die Adresse die Sie angegeben haben sind public oder random?

Die API in Frage, zum Beispiel die getRemoteDevice Funktion. Es sagt:

Valid Bluetooth hardware addresses must be upper case, in a format such as
"00:11:22:33:AA:BB". The helper checkBluetoothAddress(String) is available
to validate a Bluetooth address.

A BluetoothDevice will always be returned for a valid hardware address,
even if this adapter has never seen that device.

So geben Sie die Funktion 48-bit-Daten, und es gibt keine Möglichkeit zu sagen, wenn es die Adresse ist öffentlich oder privat. Dies bedeutet das Gerät ist nicht eindeutig identifiziert.

InformationsquelleAutor der Frage Vegar Westerlund | 2014-05-05

Schreibe einen Kommentar