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);