Add isAudioModeOngoingCall function to check call status
am: 1b25c9a89c
Change-Id: I24b89b51a275149ec02e4c59b6a7bbc7ccd072a0
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user