diff options
author | Eric Laurent <elaurent@google.com> | 2011-07-19 17:27:24 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-07-19 17:27:24 -0700 |
commit | c3d84701e04a2ad15f16c7fe1ad181b97f410814 (patch) | |
tree | e65195d2208373f209ae33ba1d1fcbbbab699c1b /media | |
parent | 67048842752cbc89564190f6111517d427b9cc6d (diff) | |
parent | 72668b2c040b581b298b069f3b5af5ed7f212d89 (diff) | |
download | frameworks_base-c3d84701e04a2ad15f16c7fe1ad181b97f410814.zip frameworks_base-c3d84701e04a2ad15f16c7fe1ad181b97f410814.tar.gz frameworks_base-c3d84701e04a2ad15f16c7fe1ad181b97f410814.tar.bz2 |
Merge "Fix issue 4499450: Unknown Ringer Mode"
Diffstat (limited to 'media')
-rw-r--r-- | media/java/android/media/AudioManager.java | 21 | ||||
-rw-r--r-- | media/java/android/media/AudioService.java | 6 |
2 files changed, 27 insertions, 0 deletions
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 253010c..7258e11 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -297,6 +297,9 @@ public class AudioManager { */ public static final int RINGER_MODE_NORMAL = 2; + // maximum valid ringer mode value. Values must start from 0 and be contiguous. + private static final int RINGER_MODE_MAX = RINGER_MODE_NORMAL; + /** * Vibrate type that corresponds to the ringer. * @@ -540,6 +543,21 @@ public class AudioManager { } /** + * Checks valid ringer mode values. + * + * @return true if the ringer mode indicated is valid, false otherwise. + * + * @see #setRingerMode(int) + * @hide + */ + public static boolean isValidRingerMode(int ringerMode) { + if (ringerMode < 0 || ringerMode > RINGER_MODE_MAX) { + return false; + } + return true; + } + + /** * Returns the maximum volume index for a particular stream. * * @param streamType The stream type whose maximum volume index is returned. @@ -601,6 +619,9 @@ public class AudioManager { * @see #getRingerMode() */ public void setRingerMode(int ringerMode) { + if (!isValidRingerMode(ringerMode)) { + return; + } IAudioService service = getService(); try { service.setRingerMode(ringerMode); diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index 0876bbf..2e9b64c 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -424,6 +424,12 @@ public class AudioService extends IAudioService.Stub { final ContentResolver cr = mContentResolver; mRingerMode = System.getInt(cr, System.MODE_RINGER, AudioManager.RINGER_MODE_NORMAL); + // sanity check in case the settings are restored from a device with incompatible + // ringer modes + if (!AudioManager.isValidRingerMode(mRingerMode)) { + mRingerMode = AudioManager.RINGER_MODE_NORMAL; + System.putInt(cr, System.MODE_RINGER, mRingerMode); + } mVibrateSetting = System.getInt(cr, System.VIBRATE_ON, 0); |