TWSP-A2DP: set active device to null if setA2dpActive to peer earbud failed

In some race condition, while EB1 get disconnected, and activeDeviceManager attempt
to set active a2dp device to peer earbud(EB2), but while a2dp service set active
device, EB2 get disconnected in a2dp stateMachine, so that set EB2 as a2dp active
device failed and mActiveA2dpDevice is still EB1, then activeDeviceManager handle
for disconnected event from EB2, it will not attempt to set active to null. After
that earbuds reconnect, but btif av will not set any earbud to current playing
device.

Change-Id: Ie0782bb8af37b5059d8c708624b54ca1c7893fad
CRs-fixed: 2480094
diff --git a/src/com/android/bluetooth/btservice/ActiveDeviceManager.java b/src/com/android/bluetooth/btservice/ActiveDeviceManager.java
index ef218f7..68a815e 100644
--- a/src/com/android/bluetooth/btservice/ActiveDeviceManager.java
+++ b/src/com/android/bluetooth/btservice/ActiveDeviceManager.java
@@ -242,7 +242,11 @@
                                     }
                                 }
                             }
-                            setA2dpActiveDevice(mDevice);
+                            if (!setA2dpActiveDevice(mDevice) && (mDevice != null) &&
+                                mAdapterService.isTwsPlusDevice(mDevice)) {
+                                Log.w(TAG, "Switch A2dp active device to peer earbud failed");
+                                setA2dpActiveDevice(null);
+                            }
                         }
                     }
                 }
@@ -461,18 +465,19 @@
         return mHandlerThread.getLooper();
     }
 
-    private void setA2dpActiveDevice(BluetoothDevice device) {
+    private boolean setA2dpActiveDevice(BluetoothDevice device) {
         if (DBG) {
             Log.d(TAG, "setA2dpActiveDevice(" + device + ")");
         }
         final A2dpService a2dpService = mFactory.getA2dpService();
         if (a2dpService == null) {
-            return;
+            return false;
         }
         if (!a2dpService.setActiveDevice(device)) {
-            return;
+            return false;
         }
         mA2dpActiveDevice = device;
+        return true;
     }
 
     private void setHfpActiveDevice(BluetoothDevice device) {