Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 00683f9d authored by Andy Hung's avatar Andy Hung Committed by Android (Google) Code Review
Browse files

Merge "Add mono audio to SoundSettings"

parents a164305d 0863ea40
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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>

+8 −0
Original line number Diff line number Diff line
@@ -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"
+37 −0
Original line number Diff line number Diff line
@@ -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);
            }
        }
    }