summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author timhypeng <timhypeng@google.com> 2018-04-23 18:08:47 +0800
committer timhypeng <timhypeng@google.com> 2018-04-30 15:30:17 +0800
commit1b25c9a89ca6e085224b037df89c3d9d39b14175 (patch)
tree4e1a59c4f7cc5141484d01db1f8d5b203facfdfa
parent65ead09a0add6dbf818fe877c1aef21fe0cf881c (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.java12
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java33
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();
+ }
}