diff options
author | 2025-01-14 18:11:14 +0800 | |
---|---|---|
committer | 2025-02-12 18:39:52 +0800 | |
commit | ef136b446bd5e6522efc4e8911477bcc99ea37e4 (patch) | |
tree | bdf12f246c5c1f0c2c76e971091efc881824c17c | |
parent | 645fcbaedc684d78a811d88a44fd89041a14cef2 (diff) |
Pass in `isOngoingCall` to avoid calling `AudioManager.getMode` for better performance
Test: atest
Bug: b/363193254
Flag: EXEMPT bug fix
Change-Id: Ifd631cd888ab3db1d51798cc152c5e38dcc3575c
2 files changed, 20 insertions, 38 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java index a00484ac28ab..522a436b0732 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java @@ -555,22 +555,17 @@ public class BluetoothUtils { * connected 2) is Hearing Aid or LE Audio OR 3) connected profile matches currentAudioProfile * * @param cachedDevice the CachedBluetoothDevice - * @param audioManager audio manager to get the current audio profile + * @param isOngoingCall get the current audio profile based on if in phone call * @return if the device is AvailableMediaBluetoothDevice */ @WorkerThread public static boolean isAvailableMediaBluetoothDevice( - CachedBluetoothDevice cachedDevice, AudioManager audioManager) { - int audioMode = audioManager.getMode(); + CachedBluetoothDevice cachedDevice, boolean isOngoingCall) { int currentAudioProfile; - if (audioMode == AudioManager.MODE_RINGTONE - || audioMode == AudioManager.MODE_IN_CALL - || audioMode == AudioManager.MODE_IN_COMMUNICATION) { - // in phone call + if (isOngoingCall) { currentAudioProfile = BluetoothProfile.HEADSET; } else { - // without phone call currentAudioProfile = BluetoothProfile.A2DP; } @@ -859,22 +854,17 @@ public class BluetoothUtils { * currentAudioProfile * * @param cachedDevice the CachedBluetoothDevice - * @param audioManager audio manager to get the current audio profile + * @param isOngoingCall get the current audio profile based on if in phone call * @return if the device is AvailableMediaBluetoothDevice */ @WorkerThread public static boolean isConnectedBluetoothDevice( - CachedBluetoothDevice cachedDevice, AudioManager audioManager) { - int audioMode = audioManager.getMode(); + CachedBluetoothDevice cachedDevice, boolean isOngoingCall) { int currentAudioProfile; - if (audioMode == AudioManager.MODE_RINGTONE - || audioMode == AudioManager.MODE_IN_CALL - || audioMode == AudioManager.MODE_IN_COMMUNICATION) { - // in phone call + if (isOngoingCall) { currentAudioProfile = BluetoothProfile.HEADSET; } else { - // without phone call currentAudioProfile = BluetoothProfile.A2DP; } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java index 7c46db96595f..ebe6128e5582 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java @@ -87,7 +87,6 @@ public class BluetoothUtilsTest { @Mock(answer = Answers.RETURNS_DEEP_STUBS) private BluetoothDevice mBluetoothDevice; - @Mock private AudioManager mAudioManager; @Mock private PackageManager mPackageManager; @Mock private LeAudioProfile mA2dpProfile; @Mock private LeAudioProfile mLeAudioProfile; @@ -446,13 +445,12 @@ public class BluetoothUtilsTest { assertThat( BluetoothUtils.isAvailableMediaBluetoothDevice( - mCachedBluetoothDevice, mAudioManager)) + mCachedBluetoothDevice, /* isOngoingCall= */ false)) .isTrue(); } @Test public void isAvailableMediaBluetoothDevice_isHeadset_isConnectedA2dpDevice_returnFalse() { - when(mAudioManager.getMode()).thenReturn(AudioManager.MODE_RINGTONE); when(mCachedBluetoothDevice.isConnectedA2dpDevice()).thenReturn(true); when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice); when(mBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); @@ -460,13 +458,12 @@ public class BluetoothUtilsTest { assertThat( BluetoothUtils.isAvailableMediaBluetoothDevice( - mCachedBluetoothDevice, mAudioManager)) + mCachedBluetoothDevice, /* isOngoingCall= */ true)) .isFalse(); } @Test public void isAvailableMediaBluetoothDevice_isA2dp_isConnectedA2dpDevice_returnTrue() { - when(mAudioManager.getMode()).thenReturn(AudioManager.MODE_NORMAL); when(mCachedBluetoothDevice.isConnectedA2dpDevice()).thenReturn(true); when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice); when(mBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); @@ -474,13 +471,12 @@ public class BluetoothUtilsTest { assertThat( BluetoothUtils.isAvailableMediaBluetoothDevice( - mCachedBluetoothDevice, mAudioManager)) + mCachedBluetoothDevice, /* isOngoingCall= */ false)) .isTrue(); } @Test public void isAvailableMediaBluetoothDevice_isHeadset_isConnectedHfpDevice_returnTrue() { - when(mAudioManager.getMode()).thenReturn(AudioManager.MODE_RINGTONE); when(mCachedBluetoothDevice.isConnectedHfpDevice()).thenReturn(true); when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice); when(mBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); @@ -488,7 +484,7 @@ public class BluetoothUtilsTest { assertThat( BluetoothUtils.isAvailableMediaBluetoothDevice( - mCachedBluetoothDevice, mAudioManager)) + mCachedBluetoothDevice, /* isOngoingCall= */ true)) .isTrue(); } @@ -499,56 +495,52 @@ public class BluetoothUtilsTest { when(mBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); when(mBluetoothDevice.isConnected()).thenReturn(true); - assertThat(BluetoothUtils.isConnectedBluetoothDevice(mCachedBluetoothDevice, mAudioManager)) - .isFalse(); + assertThat(BluetoothUtils.isConnectedBluetoothDevice( + mCachedBluetoothDevice, /* isOngoingCall= */ false)).isFalse(); } @Test public void isConnectedBluetoothDevice_isHeadset_isConnectedA2dpDevice_returnTrue() { - when(mAudioManager.getMode()).thenReturn(AudioManager.MODE_RINGTONE); when(mCachedBluetoothDevice.isConnectedA2dpDevice()).thenReturn(true); when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice); when(mBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); when(mBluetoothDevice.isConnected()).thenReturn(true); - assertThat(BluetoothUtils.isConnectedBluetoothDevice(mCachedBluetoothDevice, mAudioManager)) - .isTrue(); + assertThat(BluetoothUtils.isConnectedBluetoothDevice( + mCachedBluetoothDevice, /* isOngoingCall= */ true)).isTrue(); } @Test public void isConnectedBluetoothDevice_isA2dp_isConnectedA2dpDevice_returnFalse() { - when(mAudioManager.getMode()).thenReturn(AudioManager.MODE_NORMAL); when(mCachedBluetoothDevice.isConnectedA2dpDevice()).thenReturn(true); when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice); when(mBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); when(mBluetoothDevice.isConnected()).thenReturn(true); - assertThat(BluetoothUtils.isConnectedBluetoothDevice(mCachedBluetoothDevice, mAudioManager)) - .isFalse(); + assertThat(BluetoothUtils.isConnectedBluetoothDevice( + mCachedBluetoothDevice, /* isOngoingCall= */ false)).isFalse(); } @Test public void isConnectedBluetoothDevice_isHeadset_isConnectedHfpDevice_returnFalse() { - when(mAudioManager.getMode()).thenReturn(AudioManager.MODE_RINGTONE); when(mCachedBluetoothDevice.isConnectedHfpDevice()).thenReturn(true); when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice); when(mBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); when(mBluetoothDevice.isConnected()).thenReturn(true); - assertThat(BluetoothUtils.isConnectedBluetoothDevice(mCachedBluetoothDevice, mAudioManager)) - .isFalse(); + assertThat(BluetoothUtils.isConnectedBluetoothDevice( + mCachedBluetoothDevice, /* isOngoingCall= */ true)).isFalse(); } @Test public void isConnectedBluetoothDevice_isNotConnected_returnFalse() { - when(mAudioManager.getMode()).thenReturn(AudioManager.MODE_RINGTONE); when(mCachedBluetoothDevice.isConnectedA2dpDevice()).thenReturn(true); when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice); when(mBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); when(mBluetoothDevice.isConnected()).thenReturn(false); - assertThat(BluetoothUtils.isConnectedBluetoothDevice(mCachedBluetoothDevice, mAudioManager)) - .isFalse(); + assertThat(BluetoothUtils.isConnectedBluetoothDevice( + mCachedBluetoothDevice, /* isOngoingCall= */ true)).isFalse(); } @Test |