From 4d990467b23fe289f41744d3402f86a2a2570608 Mon Sep 17 00:00:00 2001 From: Yunsik Bae Date: Tue, 20 Jul 2021 06:56:50 +0000 Subject: [PATCH] Unify the mismatch in the byte order of the address. Bluetooth address should check MSB for AddrType based on Spec. (BT Core Spec v 5.2 | Vol 6, Part B, 1.3 DEVICE ADDRESS) Bluetooth address meaning is not unified in the current Android framework layer. Because of this, cannot register scanfilter with the intended address format. Bug: 180466950 Test: manual Tag: #compatibility Change-Id: I59a1b5538e4f3fea77a98cba2aa46649fc32ac6b --- core/java/android/bluetooth/BluetoothAdapter.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java index ce384868d4465..d487025631c7e 100644 --- a/core/java/android/bluetooth/BluetoothAdapter.java +++ b/core/java/android/bluetooth/BluetoothAdapter.java @@ -3289,22 +3289,22 @@ public final class BluetoothAdapter { } /** - * Determines whether a String Bluetooth address, such as "00:43:A8:23:10:F0" + * Determines whether a String Bluetooth address, such as "F0:43:A8:23:10:00" * is a RANDOM STATIC address. * - * RANDOM STATIC: (addr & 0b11) == 0b11 - * RANDOM RESOLVABLE: (addr & 0b11) == 0b10 - * RANDOM non-RESOLVABLE: (addr & 0b11) == 0b00 + * RANDOM STATIC: (addr & 0xC0) == 0xC0 + * RANDOM RESOLVABLE: (addr & 0xC0) == 0x40 + * RANDOM non-RESOLVABLE: (addr & 0xC0) == 0x00 * * @param address Bluetooth address as string - * @return true if the 2 Least Significant Bits of the address equals 0b11. + * @return true if the 2 Most Significant Bits of the address equals 0xC0. * * @hide */ public static boolean isAddressRandomStatic(@NonNull String address) { requireNonNull(address); return checkBluetoothAddress(address) - && (Integer.parseInt(address.split(":")[5], 16) & 0b11) == 0b11; + && (Integer.parseInt(address.split(":")[0], 16) & 0xC0) == 0xC0; } @UnsupportedAppUsage