Merge "Add mono audio to SoundSettings"
This commit is contained in:
@@ -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>
|
||||
|
||||
|
@@ -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"
|
||||
|
@@ -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";
|
||||
@@ -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;
|
||||
|
||||
@@ -166,6 +168,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab
|
||||
}
|
||||
initRingtones();
|
||||
initVibrateWhenRinging();
|
||||
initMasterMono();
|
||||
updateRingerMode();
|
||||
updateEffectsSuppressor();
|
||||
}
|
||||
@@ -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 {
|
||||
@@ -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());
|
||||
@@ -476,6 +507,9 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab
|
||||
case UPDATE_RINGER_MODE:
|
||||
updateRingerMode();
|
||||
break;
|
||||
case UPDATE_MASTER_MONO:
|
||||
updateMasterMono();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user