summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2011-07-19 17:27:24 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-07-19 17:27:24 -0700
commitc3d84701e04a2ad15f16c7fe1ad181b97f410814 (patch)
treee65195d2208373f209ae33ba1d1fcbbbab699c1b /media
parent67048842752cbc89564190f6111517d427b9cc6d (diff)
parent72668b2c040b581b298b069f3b5af5ed7f212d89 (diff)
downloadframeworks_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.java21
-rw-r--r--media/java/android/media/AudioService.java6
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);