Merge "Avrcp: Enable Cover Art feature" into q-keystone-qcom-dev
diff --git a/src/com/android/bluetooth/btservice/ActiveDeviceManager.java b/src/com/android/bluetooth/btservice/ActiveDeviceManager.java
index 1a356a8..da9cb11 100644
--- a/src/com/android/bluetooth/btservice/ActiveDeviceManager.java
+++ b/src/com/android/bluetooth/btservice/ActiveDeviceManager.java
@@ -124,7 +124,7 @@
private BluetoothDevice mA2dpActiveDevice = null;
private BluetoothDevice mHfpActiveDevice = null;
private BluetoothDevice mHearingAidActiveDevice = null;
-
+ private boolean mTwsPlusSwitch = false;
// Broadcast receiver for all changes
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
@@ -231,7 +231,7 @@
if (Objects.equals(mA2dpActiveDevice, device)) {
final A2dpService mA2dpService = mFactory.getA2dpService();
BluetoothDevice mDevice = null;
- if (mAdapterService.isTwsPlusDevice(device) &&
+ if (mAdapterService.isTwsPlusDevice(device) && !mTwsPlusSwitch &&
!mA2dpConnectedDevices.isEmpty()) {
for (BluetoothDevice connected_device: mA2dpConnectedDevices) {
if (mAdapterService.isTwsPlusDevice(connected_device) &&
@@ -241,6 +241,9 @@
break;
}
}
+ } else if (device.isTwsPlusDevice() && mTwsPlusSwitch) {
+ Log.d(TAG, "Resetting mTwsPlusSwitch");
+ mTwsPlusSwitch = false;
}
if (!setA2dpActiveDevice(mDevice) && (mDevice != null) &&
mAdapterService.isTwsPlusDevice(mDevice)) {
@@ -454,7 +457,12 @@
}
resetState();
}
-
+ public void notify_active_device_unbonding(BluetoothDevice device) {
+ if (device.isTwsPlusDevice() && Objects.equals(mA2dpActiveDevice, device)) {
+ Log.d(TAG,"TWS+ active device is getting unpaired, avoid switch to pair");
+ mTwsPlusSwitch = true;
+ }
+ }
/**
* Get the {@link Looper} for the handler thread. This is used in testing and helper
* objects
diff --git a/src/com/android/bluetooth/btservice/AdapterService.java b/src/com/android/bluetooth/btservice/AdapterService.java
index d9e0eb4..ca54b91 100644
--- a/src/com/android/bluetooth/btservice/AdapterService.java
+++ b/src/com/android/bluetooth/btservice/AdapterService.java
@@ -2472,7 +2472,9 @@
return false;
}
deviceProp.setBondingInitiatedLocally(false);
-
+ if (device.isTwsPlusDevice()) {
+ mActiveDeviceManager.notify_active_device_unbonding(device);
+ }
Message msg = mBondStateMachine.obtainMessage(BondStateMachine.REMOVE_BOND);
msg.obj = device;
mBondStateMachine.sendMessage(msg);
diff --git a/src/com/android/bluetooth/hfp/HeadsetA2dpSync.java b/src/com/android/bluetooth/hfp/HeadsetA2dpSync.java
index 8adbdf2..37647af 100644
--- a/src/com/android/bluetooth/hfp/HeadsetA2dpSync.java
+++ b/src/com/android/bluetooth/hfp/HeadsetA2dpSync.java
@@ -38,6 +38,8 @@
import android.util.Log;
import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;
+import com.android.bluetooth.hearingaid.HearingAidService;
+import java.util.List;
/**
* Defines methods used for synchronization between HFP and A2DP
@@ -113,6 +115,18 @@
*/
public boolean suspendA2DP(int reason, BluetoothDevice device){
int a2dpState = isA2dpPlaying();
+
+ List<BluetoothDevice> HAActiveDevices = null;
+ HearingAidService mHaService = HearingAidService.getHearingAidService();
+ if (mHaService != null) {
+ HAActiveDevices = mHaService.getActiveDevices();
+ }
+ if (HAActiveDevices != null && (HAActiveDevices.get(0) != null
+ || HAActiveDevices.get(1) != null)) {
+ Log.d(TAG,"Ignore suspendA2DP if active device is HearingAid");
+ return false;
+ }
+
Log.d(TAG," suspendA2DP currPlayingState = "+ a2dpState + " for reason " + reason
+ "mA2dpSuspendTriggered = " + mA2dpSuspendTriggered + " for device " + device);
if (mA2dpSuspendTriggered != A2DP_SUSPENDED_NOT_TRIGGERED) {