OSDN Git Service

Prevent bonded device from being removed from the property map
authorAjay Panicker <apanicke@google.com>
Fri, 21 Oct 2016 23:22:11 +0000 (16:22 -0700)
committerAjay Panicker <apanicke@google.com>
Fri, 21 Oct 2016 23:25:19 +0000 (16:25 -0700)
Bug: 31947953
Test: Manual
Change-Id: Ia2d25b305c07949a9251af83e855db4511ff887f

src/com/android/bluetooth/btservice/RemoteDevices.java

index 7d3d319..bb723a7 100644 (file)
@@ -34,7 +34,7 @@ import java.util.LinkedList;
 import java.util.Queue;
 
 final class RemoteDevices {
-    private static final boolean DBG = true;
+    private static final boolean DBG = false;
     private static final String TAG = "BluetoothRemoteDevices";
 
     // Maximum number of device properties to remember
@@ -96,10 +96,15 @@ final class RemoteDevices {
             prop.mAddress = address;
             String key = Utils.getAddressStringFromByte(address);
             DeviceProperties pv = mDevices.put(key, prop);
+
             if (pv == null) {
                 mDeviceQueue.offer(key);
                 if (mDeviceQueue.size() > MAX_DEVICE_QUEUE_SIZE) {
                     String deleteKey = mDeviceQueue.poll();
+                    for (BluetoothDevice device : mAdapterService.getBondedDevices()) {
+                        if (device.getAddress().equals(deleteKey)) return prop;
+                    }
+                    debugLog("Removing device " + deleteKey + " from property map");
                     mDevices.remove(deleteKey);
                 }
             }