Merge "Don't convert all sounds to vibrations in vibrate mode" into oc-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
169f367125
@@ -4019,19 +4019,19 @@ public class NotificationManagerService extends SystemService {
|
||||
if (mSystemReady && mAudioManager != null) {
|
||||
Uri soundUri = record.getSound();
|
||||
hasValidSound = soundUri != null && !Uri.EMPTY.equals(soundUri);
|
||||
|
||||
long[] vibration = record.getVibration();
|
||||
// Demote sound to vibration if vibration missing & phone in vibration mode.
|
||||
if (vibration == null
|
||||
&& hasValidSound
|
||||
&& (mAudioManager.getRingerModeInternal()
|
||||
== AudioManager.RINGER_MODE_VIBRATE)) {
|
||||
== AudioManager.RINGER_MODE_VIBRATE)
|
||||
&& mAudioManager.getStreamVolume(
|
||||
AudioAttributes.toLegacyStreamType(record.getAudioAttributes())) == 0) {
|
||||
vibration = mFallbackVibrationPattern;
|
||||
}
|
||||
hasValidVibrate = vibration != null;
|
||||
|
||||
boolean hasAudibleAlert = hasValidSound || hasValidVibrate;
|
||||
|
||||
if (hasAudibleAlert && !shouldMuteNotificationLocked(record)) {
|
||||
if (DBG) Slog.v(TAG, "Interrupting!");
|
||||
if (hasValidSound) {
|
||||
@@ -4128,8 +4128,9 @@ public class NotificationManagerService extends SystemService {
|
||||
boolean looping = (record.getNotification().flags & Notification.FLAG_INSISTENT) != 0;
|
||||
// do not play notifications if there is a user of exclusive audio focus
|
||||
// or the device is in vibrate mode
|
||||
if (!mAudioManager.isAudioFocusExclusive() && mAudioManager.getRingerModeInternal()
|
||||
!= AudioManager.RINGER_MODE_VIBRATE) {
|
||||
if (!mAudioManager.isAudioFocusExclusive() && (mAudioManager.getRingerModeInternal()
|
||||
!= AudioManager.RINGER_MODE_VIBRATE || mAudioManager.getStreamVolume(
|
||||
AudioAttributes.toLegacyStreamType(record.getAudioAttributes())) != 0)) {
|
||||
final long identity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
final IRingtonePlayer player = mAudioManager.getRingtonePlayer();
|
||||
|
||||
@@ -558,6 +558,7 @@ public class BuzzBeepBlinkTest extends NotificationTestCase {
|
||||
|
||||
// the phone is quiet
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
|
||||
when(mAudioManager.getStreamVolume(anyInt())).thenReturn(0);
|
||||
|
||||
mService.buzzBeepBlinkLocked(r);
|
||||
|
||||
@@ -567,6 +568,22 @@ public class BuzzBeepBlinkTest extends NotificationTestCase {
|
||||
eq(effect), (AudioAttributes) anyObject());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNoDemoteSoundToVibrateIfNonNotificationStream() throws Exception {
|
||||
NotificationRecord r = getBeepyNotification();
|
||||
assertTrue(r.getSound() != null);
|
||||
assertNull(r.getVibration());
|
||||
|
||||
// the phone is quiet
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
|
||||
when(mAudioManager.getStreamVolume(anyInt())).thenReturn(1);
|
||||
|
||||
mService.buzzBeepBlinkLocked(r);
|
||||
|
||||
verifyNeverVibrate();
|
||||
verifyBeepLooped();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDemoteSoundToVibrate() throws Exception {
|
||||
NotificationRecord r = getBeepyNotification();
|
||||
@@ -575,6 +592,7 @@ public class BuzzBeepBlinkTest extends NotificationTestCase {
|
||||
|
||||
// the phone is quiet
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
|
||||
when(mAudioManager.getStreamVolume(anyInt())).thenReturn(0);
|
||||
|
||||
mService.buzzBeepBlinkLocked(r);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user