diff options
| author | 2018-04-23 18:08:47 +0800 | |
|---|---|---|
| committer | 2018-04-30 15:30:17 +0800 | |
| commit | 1b25c9a89ca6e085224b037df89c3d9d39b14175 (patch) | |
| tree | 4e1a59c4f7cc5141484d01db1f8d5b203facfdfa | |
| parent | 65ead09a0add6dbf818fe877c1aef21fe0cf881c (diff) | |
Add isAudioModeOngoingCall function to check call status
*return true if it is in ringing/call/communication(VoIP) status
Bug: 78318415
Test: make -j50 RunSettingsLibRoboTests
Change-Id: Ifb84da386fcd5bf03eaccf78fc264fbad86a9707
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/Utils.java | 12 | ||||
| -rw-r--r-- | packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java | 33 |
2 files changed, 45 insertions, 0 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java index 56a242aea6a1..505cfeac220c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/Utils.java +++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java @@ -15,6 +15,7 @@ import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.location.LocationManager; +import android.media.AudioManager; import android.net.ConnectivityManager; import android.os.BatteryManager; import android.os.SystemProperties; @@ -362,4 +363,15 @@ public class Utils { isDefaultOn ? 1 : 0) != 0; } + + /** + * get that {@link AudioManager#getMode()} is in ringing/call/communication(VoIP) status. + */ + public static boolean isAudioModeOngoingCall(Context context) { + final AudioManager audioManager = context.getSystemService(AudioManager.class); + final int audioMode = audioManager.getMode(); + return audioMode == AudioManager.MODE_RINGTONE + || audioMode == AudioManager.MODE_IN_CALL + || audioMode == AudioManager.MODE_IN_COMMUNICATION; + } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java index 706d0c0f51e5..a79f841e70c6 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java @@ -26,6 +26,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static org.robolectric.Shadows.shadowOf; import android.app.ActivityManager; import android.content.ContentResolver; @@ -33,6 +34,7 @@ import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.location.LocationManager; +import android.media.AudioManager; import android.os.SystemProperties; import android.os.UserHandle; import android.provider.Settings; @@ -52,6 +54,7 @@ import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; +import org.robolectric.shadows.ShadowAudioManager; import org.robolectric.shadows.ShadowSettings; import java.util.HashMap; @@ -69,6 +72,7 @@ public class UtilsTest { private static final String PERCENTAGE_50 = "50%"; private static final String PERCENTAGE_100 = "100%"; + private ShadowAudioManager mShadowAudioManager; private Context mContext; @Mock private LocationManager mLocationManager; @@ -79,6 +83,7 @@ public class UtilsTest { mContext = spy(RuntimeEnvironment.application); when(mContext.getSystemService(Context.LOCATION_SERVICE)).thenReturn(mLocationManager); ShadowSecure.reset(); + mShadowAudioManager = shadowOf(mContext.getSystemService(AudioManager.class)); } @Test @@ -195,4 +200,32 @@ public class UtilsTest { // Do nothing } } + + @Test + public void isAudioModeOngoingCall_modeInCommunication_returnTrue() { + mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); + + assertThat(Utils.isAudioModeOngoingCall(mContext)).isTrue(); + } + + @Test + public void isAudioModeOngoingCall_modeInCall_returnTrue() { + mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); + + assertThat(Utils.isAudioModeOngoingCall(mContext)).isTrue(); + } + + @Test + public void isAudioModeOngoingCall_modeRingtone_returnTrue() { + mShadowAudioManager.setMode(AudioManager.MODE_RINGTONE); + + assertThat(Utils.isAudioModeOngoingCall(mContext)).isTrue(); + } + + @Test + public void isAudioModeOngoingCall_modeNormal_returnFalse() { + mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + + assertThat(Utils.isAudioModeOngoingCall(mContext)).isFalse(); + } } |