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

Commit 0863ea40 authored by Andy Hung's avatar Andy Hung
Browse files

Add mono audio to SoundSettings

Bug: 15283594
Bug: 22700363
Change-Id: Ic4571dee4567a94265bbcf11d08108b19687b284
parent 0c4052ce
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -5597,6 +5597,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);
            }
        }
    }