diff options
author | Etienne Ruffieux <eruffieux@google.com> | 2021-12-13 15:28:22 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-12-13 15:28:22 +0000 |
commit | 0239ff1c19c15d675d6bb00bde9e903523470ee6 (patch) | |
tree | 570e04c2868266103c6ec45f1d334d2192c5ce32 | |
parent | c0301cc44258cadc36d62ea30ce9653fd89275ec (diff) | |
parent | dc19d153c075d2260d9a0c65f4323f3d523aba8c (diff) |
Merge "BluetoothInCallService: clear when BT turns off" am: cc4e82be70 am: dc19d153c0
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Bluetooth/+/1909180
Change-Id: I4ad90fbcbf52fbfe88c0047ac201df962025e8ad
-rw-r--r-- | android/app/src/com/android/bluetooth/hfp/BluetoothHeadsetProxy.java | 12 | ||||
-rw-r--r-- | android/app/src/com/android/bluetooth/telephony/BluetoothInCallService.java | 17 |
2 files changed, 28 insertions, 1 deletions
diff --git a/android/app/src/com/android/bluetooth/hfp/BluetoothHeadsetProxy.java b/android/app/src/com/android/bluetooth/hfp/BluetoothHeadsetProxy.java index 824955d5a4..429ee7d0b8 100644 --- a/android/app/src/com/android/bluetooth/hfp/BluetoothHeadsetProxy.java +++ b/android/app/src/com/android/bluetooth/hfp/BluetoothHeadsetProxy.java @@ -16,8 +16,12 @@ package com.android.bluetooth.hfp; +import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothHeadset; +import android.bluetooth.BluetoothManager; +import android.bluetooth.BluetoothProfile; +import android.content.Context; import java.util.List; @@ -36,6 +40,14 @@ public class BluetoothHeadsetProxy { mBluetoothHeadset = headset; } + public void closeBluetoothHeadsetProxy(Context context) { + final BluetoothManager btManager = + context.getSystemService(BluetoothManager.class); + if (btManager != null) { + btManager.getAdapter().closeProfileProxy(BluetoothProfile.HEADSET, mBluetoothHeadset); + } + } + public void clccResponse(int index, int direction, int status, int mode, boolean mpty, String number, int type) { diff --git a/android/app/src/com/android/bluetooth/telephony/BluetoothInCallService.java b/android/app/src/com/android/bluetooth/telephony/BluetoothInCallService.java index dacfa069a5..5ca6397798 100644 --- a/android/app/src/com/android/bluetooth/telephony/BluetoothInCallService.java +++ b/android/app/src/com/android/bluetooth/telephony/BluetoothInCallService.java @@ -170,6 +170,8 @@ public class BluetoothInCallService extends InCallService { Log.d(TAG, "Bluetooth Adapter state: " + state); if (state == BluetoothAdapter.STATE_ON) { queryPhoneState(); + } else if (state == BluetoothAdapter.STATE_TURNING_OFF) { + clear(); } } } @@ -620,6 +622,12 @@ public class BluetoothInCallService extends InCallService { @Override public void onDestroy() { Log.d(TAG, "onDestroy"); + clear(); + super.onDestroy(); + } + + private void clear() { + Log.d(TAG, "clear"); if (mBluetoothOnModeChangedListener != null) { mAudioManager.removeOnModeChangedListener(mBluetoothOnModeChangedListener); mBluetoothOnModeChangedListener = null; @@ -628,8 +636,15 @@ public class BluetoothInCallService extends InCallService { unregisterReceiver(mBluetoothAdapterReceiver); mBluetoothAdapterReceiver = null; } + if (mBluetoothHeadset != null) { + mBluetoothHeadset.closeBluetoothHeadsetProxy(this); + mBluetoothHeadset = null; + } + mProfileListener = null; sInstance = null; - super.onDestroy(); + mCallbacks.clear(); + mBluetoothCallHashMap.clear(); + mClccIndexMap.clear(); } private void sendListOfCalls(boolean shouldLog) { |