Loading res/values/strings.xml +9 −0 Original line number Diff line number Diff line Loading @@ -5609,6 +5609,15 @@ <!-- Sound: Title for the option managing whether or not to vibrate when ringing. [CHAR LIMIT=30] --> <string name="vibrate_when_ringing_title">Also vibrate for calls</string> <!-- Sound: Title for the option managing mono audio output. [CHAR LIMIT=30] --> <string name="master_mono_title">Mono playback</string> <!-- Sound: Mono audio: Summary for mono audio output when enabled. [CHAR LIMIT=40] --> <string name="master_mono_on">Always play back audio in mono</string> <!-- Sound: Mono audio: Summary for mono audio output when disabled. [CHAR LIMIT=40] --> <string name="master_mono_off">Always play back audio in mono</string> <!-- Sound: Title for the other sounds option and associated settings page. [CHAR LIMIT=30] --> <string name="other_sound_settings">Other sounds</string> Loading res/xml/sound_settings.xml +8 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,14 @@ android:title="@string/vibrate_when_ringing_title" android:persistent="false" /> <!-- Master mono --> <SwitchPreference android:key="master_mono" android:title="@string/master_mono_title" android:persistent="false" android:summaryOn="@string/master_mono_on" android:summaryOff="@string/master_mono_off" /> <!-- Interruptions --> <PreferenceScreen android:key="zen_mode" Loading src/com/android/settings/notification/SoundSettings.java +37 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab private static final String KEY_PHONE_RINGTONE = "ringtone"; private static final String KEY_NOTIFICATION_RINGTONE = "notification_ringtone"; private static final String KEY_VIBRATE_WHEN_RINGING = "vibrate_when_ringing"; private static final String KEY_MASTER_MONO = "master_mono"; private static final String KEY_WIFI_DISPLAY = "wifi_display"; private static final String KEY_ZEN_MODE = "zen_mode"; private static final String KEY_CELL_BROADCAST_SETTINGS = "cell_broadcast_settings"; Loading Loading @@ -103,6 +104,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab private Preference mPhoneRingtonePreference; private Preference mNotificationRingtonePreference; private TwoStatePreference mVibrateWhenRinging; private TwoStatePreference mMasterMono; private ComponentName mSuppressor; private int mRingerMode = -1; Loading Loading @@ -166,6 +168,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab } initRingtones(); initVibrateWhenRinging(); initMasterMono(); updateRingerMode(); updateEffectsSuppressor(); } Loading Loading @@ -419,6 +422,33 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab Settings.System.VIBRATE_WHEN_RINGING, 0) != 0); } // === Master mono === private void initMasterMono() { mMasterMono = (TwoStatePreference) getPreferenceScreen().findPreference(KEY_MASTER_MONO); if (mMasterMono == null) { Log.i(TAG, "Preference not found: " + KEY_MASTER_MONO); return; } mMasterMono.setPersistent(false); updateMasterMono(); mMasterMono.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final boolean val = (Boolean) newValue; mAudioManager.setMasterMono(val); return true; } }); } private void updateMasterMono() { if (mMasterMono == null) return; mMasterMono.setChecked(mAudioManager.isMasterMono()); } // === Callbacks === private final class SettingsObserver extends ContentObserver { Loading Loading @@ -453,6 +483,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab private static final int STOP_SAMPLE = 3; private static final int UPDATE_EFFECTS_SUPPRESSOR = 4; private static final int UPDATE_RINGER_MODE = 5; private static final int UPDATE_MASTER_MONO = 6; private H() { super(Looper.getMainLooper()); Loading @@ -476,6 +507,9 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab case UPDATE_RINGER_MODE: updateRingerMode(); break; case UPDATE_MASTER_MONO: updateMasterMono(); break; } } } Loading @@ -489,6 +523,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab final IntentFilter filter = new IntentFilter(); filter.addAction(NotificationManager.ACTION_EFFECTS_SUPPRESSOR_CHANGED); filter.addAction(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION); filter.addAction(AudioManager.MASTER_MONO_CHANGED_ACTION); mContext.registerReceiver(this, filter); } else { mContext.unregisterReceiver(this); Loading @@ -503,6 +538,8 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab mHandler.sendEmptyMessage(H.UPDATE_EFFECTS_SUPPRESSOR); } else if (AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION.equals(action)) { mHandler.sendEmptyMessage(H.UPDATE_RINGER_MODE); } else if (AudioManager.MASTER_MONO_CHANGED_ACTION.equals(action)) { mHandler.sendEmptyMessage(H.UPDATE_MASTER_MONO); } } } Loading Loading
res/values/strings.xml +9 −0 Original line number Diff line number Diff line Loading @@ -5609,6 +5609,15 @@ <!-- Sound: Title for the option managing whether or not to vibrate when ringing. [CHAR LIMIT=30] --> <string name="vibrate_when_ringing_title">Also vibrate for calls</string> <!-- Sound: Title for the option managing mono audio output. [CHAR LIMIT=30] --> <string name="master_mono_title">Mono playback</string> <!-- Sound: Mono audio: Summary for mono audio output when enabled. [CHAR LIMIT=40] --> <string name="master_mono_on">Always play back audio in mono</string> <!-- Sound: Mono audio: Summary for mono audio output when disabled. [CHAR LIMIT=40] --> <string name="master_mono_off">Always play back audio in mono</string> <!-- Sound: Title for the other sounds option and associated settings page. [CHAR LIMIT=30] --> <string name="other_sound_settings">Other sounds</string> Loading
res/xml/sound_settings.xml +8 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,14 @@ android:title="@string/vibrate_when_ringing_title" android:persistent="false" /> <!-- Master mono --> <SwitchPreference android:key="master_mono" android:title="@string/master_mono_title" android:persistent="false" android:summaryOn="@string/master_mono_on" android:summaryOff="@string/master_mono_off" /> <!-- Interruptions --> <PreferenceScreen android:key="zen_mode" Loading
src/com/android/settings/notification/SoundSettings.java +37 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab private static final String KEY_PHONE_RINGTONE = "ringtone"; private static final String KEY_NOTIFICATION_RINGTONE = "notification_ringtone"; private static final String KEY_VIBRATE_WHEN_RINGING = "vibrate_when_ringing"; private static final String KEY_MASTER_MONO = "master_mono"; private static final String KEY_WIFI_DISPLAY = "wifi_display"; private static final String KEY_ZEN_MODE = "zen_mode"; private static final String KEY_CELL_BROADCAST_SETTINGS = "cell_broadcast_settings"; Loading Loading @@ -103,6 +104,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab private Preference mPhoneRingtonePreference; private Preference mNotificationRingtonePreference; private TwoStatePreference mVibrateWhenRinging; private TwoStatePreference mMasterMono; private ComponentName mSuppressor; private int mRingerMode = -1; Loading Loading @@ -166,6 +168,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab } initRingtones(); initVibrateWhenRinging(); initMasterMono(); updateRingerMode(); updateEffectsSuppressor(); } Loading Loading @@ -419,6 +422,33 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab Settings.System.VIBRATE_WHEN_RINGING, 0) != 0); } // === Master mono === private void initMasterMono() { mMasterMono = (TwoStatePreference) getPreferenceScreen().findPreference(KEY_MASTER_MONO); if (mMasterMono == null) { Log.i(TAG, "Preference not found: " + KEY_MASTER_MONO); return; } mMasterMono.setPersistent(false); updateMasterMono(); mMasterMono.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final boolean val = (Boolean) newValue; mAudioManager.setMasterMono(val); return true; } }); } private void updateMasterMono() { if (mMasterMono == null) return; mMasterMono.setChecked(mAudioManager.isMasterMono()); } // === Callbacks === private final class SettingsObserver extends ContentObserver { Loading Loading @@ -453,6 +483,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab private static final int STOP_SAMPLE = 3; private static final int UPDATE_EFFECTS_SUPPRESSOR = 4; private static final int UPDATE_RINGER_MODE = 5; private static final int UPDATE_MASTER_MONO = 6; private H() { super(Looper.getMainLooper()); Loading @@ -476,6 +507,9 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab case UPDATE_RINGER_MODE: updateRingerMode(); break; case UPDATE_MASTER_MONO: updateMasterMono(); break; } } } Loading @@ -489,6 +523,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab final IntentFilter filter = new IntentFilter(); filter.addAction(NotificationManager.ACTION_EFFECTS_SUPPRESSOR_CHANGED); filter.addAction(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION); filter.addAction(AudioManager.MASTER_MONO_CHANGED_ACTION); mContext.registerReceiver(this, filter); } else { mContext.unregisterReceiver(this); Loading @@ -503,6 +538,8 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab mHandler.sendEmptyMessage(H.UPDATE_EFFECTS_SUPPRESSOR); } else if (AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION.equals(action)) { mHandler.sendEmptyMessage(H.UPDATE_RINGER_MODE); } else if (AudioManager.MASTER_MONO_CHANGED_ACTION.equals(action)) { mHandler.sendEmptyMessage(H.UPDATE_MASTER_MONO); } } } Loading