diff options
author | Jakub Pawlowski <jpawlowski@google.com> | 2017-03-31 16:49:13 -0700 |
---|---|---|
committer | Jakub Pawlowski <jpawlowski@google.com> | 2017-03-31 16:52:48 -0700 |
commit | b510927e3663b341adc80c24aea17af4fbab3d93 (patch) | |
tree | baebc14367370e8a8bd51e361855b06586d26bfa | |
parent | 202db17c788044c3612f2ef41b3188b9c48b87a2 (diff) |
Fix advertise data size estimation
UUID in service data field can be 2, 4, or 16 bytes long.
Test: manual
Bug: 36553478
Change-Id: Ib5ba2d16065496ca311e8642a15a7ea6bc84d4c1
-rw-r--r-- | framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java b/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java index 242ee77ce0..07d9b6d082 100644 --- a/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java +++ b/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java @@ -56,7 +56,6 @@ public final class BluetoothLeAdvertiser { // Flags field will be set by system. private static final int FLAGS_FIELD_BYTES = 3; private static final int MANUFACTURER_SPECIFIC_DATA_LENGTH = 2; - private static final int SERVICE_DATA_UUID_LENGTH = 2; private final IBluetoothManager mBluetoothManager; private final Handler mHandler; @@ -383,7 +382,8 @@ public final class BluetoothLeAdvertiser { } } for (ParcelUuid uuid : data.getServiceData().keySet()) { - size += OVERHEAD_BYTES_PER_FIELD + SERVICE_DATA_UUID_LENGTH + int uuidLen = BluetoothUuid.uuidToBytes(uuid).length; + size += OVERHEAD_BYTES_PER_FIELD + uuidLen + byteLength(data.getServiceData().get(uuid)); } for (int i = 0; i < data.getManufacturerSpecificData().size(); ++i) { |