From 6329bf7b1e2217c6c9477bd57349a1edade18417 Mon Sep 17 00:00:00 2001 From: Daniel Sandler Date: Fri, 26 Feb 2010 15:17:44 -0500 Subject: [PATCH] New vibrate/silent mode behavior. In earlier versions of Android, "vibrate mode" (in which only alarms and media produce sound, but notifications may operate the vibe motor) was only accessible by adjusting the ringer volume (via the device's volume rocker) down until the "vibrate" icon appeared (between the lowest ring volume and silent mode). Many users prefer that "silent mode" always allow vibration. Others prefer Android's historical behavior, in which silent mode stops the vibes as well. To accommodate these two distinct usage patterns, we now allow the user to decide whether vibration is allowed in "silent mode", a user interface abstraction that now spans both AudioManager.RINGER_MODE_VIBRATE and AudioManager.RINGER_MODE_SILENT. To minimize API impact (and therefore maximize backward compatibility), RINGER_MODE_VIBRATE and RINGER_MODE_SILENT remain unchanged. What has changed is what happens when the user activates silent mode, either via Settings, GlobalActions (longpress on power), volume rocker, or the keyguard tab. In essence, there is now only one "silent" position in these controls, and whether RINGER_MODE_VIBRATE or RINGER_MODE_SILENT is actually set on the AudioService is determined by a new one-off setting (System.VIBRATE_IN_SILENT). This new setting isn't meant to be a long-term API, however: in the future we hope to replace and extend this design with a much more sophisticated set of systemwide feedback profiles. ETA TBD. Related changes: * I09ad7d69 (GlobalActions and keyguard) * I22ba7bcf (Settings app) Bug: 2457183 Change-Id: I14cf91b0910261ffdfd1bf302423f41ec747d057 --- core/java/android/provider/Settings.java | 11 ++++++++ .../drawable-hdpi/ic_jog_dial_vibrate_on.png | Bin 0 -> 8351 bytes .../drawable-mdpi/ic_jog_dial_vibrate_on.png | Bin 0 -> 4814 bytes media/java/android/media/AudioService.java | 24 ++++++++++-------- 4 files changed, 24 insertions(+), 11 deletions(-) create mode 100644 core/res/res/drawable-hdpi/ic_jog_dial_vibrate_on.png create mode 100644 core/res/res/drawable-mdpi/ic_jog_dial_vibrate_on.png diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 081cf32ba7675..18e2647c6ab05 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -1278,6 +1278,17 @@ public final class Settings { public static final String NOTIFICATIONS_USE_RING_VOLUME = "notifications_use_ring_volume"; + /** + * Whether silent mode should allow vibration feedback. This is used + * internally in AudioService and the Sound settings activity to + * coordinate decoupling of vibrate and silent modes. This setting + * will likely be removed in a future release with support for + * audio/vibe feedback profiles. + * + * @hide + */ + public static final String VIBRATE_IN_SILENT = "vibrate_in_silent"; + /** * The mapping of stream type (integer) to its setting. */ diff --git a/core/res/res/drawable-hdpi/ic_jog_dial_vibrate_on.png b/core/res/res/drawable-hdpi/ic_jog_dial_vibrate_on.png new file mode 100644 index 0000000000000000000000000000000000000000..86caa074a382735832f691229c70aea640a83dec GIT binary patch literal 8351 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 literal 0 HcmV?d00001 diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index 668917e6ef8d9..947307d4509e6 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -901,18 +901,20 @@ public class AudioService extends IAudioService.Stub { boolean adjustVolumeIndex = true; int newRingerMode = mRingerMode; - if (mRingerMode == AudioManager.RINGER_MODE_NORMAL && (oldIndex + 5) / 10 == 1 - && direction == AudioManager.ADJUST_LOWER) { - newRingerMode = AudioManager.RINGER_MODE_VIBRATE; - } else if (mRingerMode == AudioManager.RINGER_MODE_VIBRATE) { - if (direction == AudioManager.ADJUST_RAISE) { - newRingerMode = AudioManager.RINGER_MODE_NORMAL; - } else if (direction == AudioManager.ADJUST_LOWER) { - newRingerMode = AudioManager.RINGER_MODE_SILENT; + if (mRingerMode == AudioManager.RINGER_MODE_NORMAL) { + // audible mode, at the bottom of the scale + if (direction == AudioManager.ADJUST_LOWER + && (oldIndex + 5) / 10 == 1) { + // "silent mode", but which one? + newRingerMode = System.getInt(mContentResolver, System.VIBRATE_IN_SILENT, 1) == 1 + ? AudioManager.RINGER_MODE_VIBRATE + : AudioManager.RINGER_MODE_SILENT; + } + } else { + if (direction == AudioManager.ADJUST_RAISE) { + // exiting silent mode + newRingerMode = AudioManager.RINGER_MODE_NORMAL; } - } else if (direction == AudioManager.ADJUST_RAISE - && mRingerMode == AudioManager.RINGER_MODE_SILENT) { - newRingerMode = AudioManager.RINGER_MODE_VIBRATE; } if (newRingerMode != mRingerMode) {