diff options
2 files changed, 52 insertions, 2 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java index ace78ac1896e..af5b43478192 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java @@ -1189,7 +1189,8 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> * @return {@code true} if {@code cachedBluetoothDevice} is a2dp device */ public boolean isA2dpDevice() { - return mProfileManager.getA2dpProfile().getConnectionStatus(mDevice) == + A2dpProfile a2dpProfile = mProfileManager.getA2dpProfile(); + return a2dpProfile != null && a2dpProfile.getConnectionStatus(mDevice) == BluetoothProfile.STATE_CONNECTED; } @@ -1197,7 +1198,17 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> * @return {@code true} if {@code cachedBluetoothDevice} is HFP device */ public boolean isHfpDevice() { - return mProfileManager.getHeadsetProfile().getConnectionStatus(mDevice) == + HeadsetProfile headsetProfile = mProfileManager.getHeadsetProfile(); + return headsetProfile != null && headsetProfile.getConnectionStatus(mDevice) == + BluetoothProfile.STATE_CONNECTED; + } + + /** + * @return {@code true} if {@code cachedBluetoothDevice} is Hearing Aid device + */ + public boolean isConnectedHearingAidDevice() { + HearingAidProfile hearingAidProfile = mProfileManager.getHearingAidProfile(); + return hearingAidProfile != null && hearingAidProfile.getConnectionStatus(mDevice) == BluetoothProfile.STATE_CONNECTED; } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java index 927a94f6b017..c39fb85428fa 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java @@ -572,4 +572,43 @@ public class CachedBluetoothDeviceTest { assertThat(mCachedDevice.isHfpDevice()).isFalse(); } + + @Test + public void isConnectedHearingAidDevice_connected_returnTrue() { + when(mProfileManager.getHearingAidProfile()).thenReturn(mHearingAidProfile); + when(mHearingAidProfile.getConnectionStatus(mDevice)). + thenReturn(BluetoothProfile.STATE_CONNECTED); + + assertThat(mCachedDevice.isConnectedHearingAidDevice()).isTrue(); + } + + @Test + public void isConnectedHearingAidDevice_disconnected_returnFalse() { + when(mProfileManager.getHearingAidProfile()).thenReturn(mHearingAidProfile); + when(mHearingAidProfile.getConnectionStatus(mDevice)). + thenReturn(BluetoothProfile.STATE_DISCONNECTED); + + assertThat(mCachedDevice.isConnectedHearingAidDevice()).isFalse(); + } + + @Test + public void isConnectedHfpDevice_profileIsNull_returnFalse() { + when(mProfileManager.getHeadsetProfile()).thenReturn(null); + + assertThat(mCachedDevice.isHfpDevice()).isFalse(); + } + + @Test + public void isConnectedA2dpDevice_profileIsNull_returnFalse() { + when(mProfileManager.getA2dpProfile()).thenReturn(null); + + assertThat(mCachedDevice.isA2dpDevice()).isFalse(); + } + + @Test + public void isConnectedHearingAidDevice_profileIsNull_returnFalse() { + when(mProfileManager.getHearingAidProfile()).thenReturn(null); + + assertThat(mCachedDevice.isConnectedHearingAidDevice()).isFalse(); + } } |