From b6c34e850e474d77e2c6a0959f6cdf18024846cf Mon Sep 17 00:00:00 2001 From: hughchen Date: Tue, 19 Mar 2019 16:58:53 +0800 Subject: [PATCH] Fix music output unable switch from BTHS to Phone Some device may not have HearingAidProfile, consider all situation to set Phone as active device. Bug: 128815229 Test: RunSettingsLibTests Change-Id: I852791915985e1e2b5ca4695110d6a6243c93c24 --- .../settingslib/media/PhoneMediaDevice.java | 11 ++++++--- .../media/PhoneMediaDeviceTest.java | 24 +++++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java index da140aa9371ec..8c3fcc077edcd 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java @@ -70,13 +70,18 @@ public class PhoneMediaDevice extends MediaDevice { final HearingAidProfile hapProfile = mProfileManager.getHearingAidProfile(); final A2dpProfile a2dpProfile = mProfileManager.getA2dpProfile(); + // Some device may not have HearingAidProfile, consider all situation to set active device. boolean isConnected = false; - if (hapProfile != null && a2dpProfile != null) { isConnected = hapProfile.setActiveDevice(null) && a2dpProfile.setActiveDevice(null); - updateSummary(true); - setConnectedRecord(); + } else if (a2dpProfile != null) { + isConnected = a2dpProfile.setActiveDevice(null); + } else if (hapProfile != null) { + isConnected = hapProfile.setActiveDevice(null); } + updateSummary(isConnected); + setConnectedRecord(); + Log.d(TAG, "connect() device : " + getName() + ", is selected : " + isConnected); return isConnected; } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java index 50a6a9d7be20c..0752dc03f3975 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java @@ -99,6 +99,30 @@ public class PhoneMediaDeviceTest { assertThat(mPhoneMediaDevice.connect()).isFalse(); } + @Test + public void connect_hearingAidProfileIsNullAndA2dpProfileNotNull_isConnectedReturnTrue() { + when(mLocalProfileManager.getHearingAidProfile()).thenReturn(null); + + when(mA2dpProfile.setActiveDevice(null)).thenReturn(true); + assertThat(mPhoneMediaDevice.connect()).isTrue(); + } + + @Test + public void connect_hearingAidProfileNotNullAndA2dpProfileIsNull_isConnectedReturnTrue() { + when(mLocalProfileManager.getA2dpProfile()).thenReturn(null); + + when(mHapProfile.setActiveDevice(null)).thenReturn(true); + assertThat(mPhoneMediaDevice.connect()).isTrue(); + } + + @Test + public void connect_hearingAidProfileAndA2dpProfileIsNull_isConnectedReturnFalse() { + when(mLocalProfileManager.getA2dpProfile()).thenReturn(null); + when(mLocalProfileManager.getHearingAidProfile()).thenReturn(null); + + assertThat(mPhoneMediaDevice.connect()).isFalse(); + } + @Test public void updateSummary_isActiveIsTrue_returnActiveString() { mPhoneMediaDevice.updateSummary(true);