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

Commit 3d4c06f9 authored by Eric Laurent's avatar Eric Laurent
Browse files

Change condition to enter silent mode.

Previously, silent mode was entered if volume was already at 0 and
volume down key was pressed once.

The new volume management policy specifies that silent mode is entered when
volume is at last audible step and volume down key is pressed once.

Change-Id: Id3e75a99c522d8afe276868010b6e73495d23fde
parent 25614758
Loading
Loading
Loading
Loading
+16 −15
Original line number Original line Diff line number Diff line
@@ -1558,21 +1558,29 @@ public class AudioService extends IAudioService.Stub {
    private boolean checkForRingerModeChange(int oldIndex, int direction) {
    private boolean checkForRingerModeChange(int oldIndex, int direction) {
        boolean adjustVolumeIndex = true;
        boolean adjustVolumeIndex = true;
        int newRingerMode = mRingerMode;
        int newRingerMode = mRingerMode;
        int uiIndex = (oldIndex + 5) / 10;


        if (mRingerMode == AudioManager.RINGER_MODE_NORMAL) {
        if (mRingerMode == AudioManager.RINGER_MODE_NORMAL) {
            // audible mode, at the bottom of the scale
            if ((direction == AudioManager.ADJUST_LOWER) && (uiIndex <= 1)) {
            if ((direction == AudioManager.ADJUST_LOWER &&
                // enter silent mode if current index is the last audible one and not repeating a
                 mPrevVolDirection != AudioManager.ADJUST_LOWER) &&
                // volume key down
                ((oldIndex + 5) / 10 == 0)) {
                if (mPrevVolDirection != AudioManager.ADJUST_LOWER) {
                    // "silent mode", but which one?
                    // "silent mode", but which one?
                    newRingerMode = System.getInt(mContentResolver, System.VIBRATE_IN_SILENT, 1) == 1
                    newRingerMode = System.getInt(mContentResolver, System.VIBRATE_IN_SILENT, 1) == 1
                        ? AudioManager.RINGER_MODE_VIBRATE
                        ? AudioManager.RINGER_MODE_VIBRATE
                        : AudioManager.RINGER_MODE_SILENT;
                        : AudioManager.RINGER_MODE_SILENT;
                }
                }
                if (uiIndex == 0) {
                    adjustVolumeIndex = false;
                }
            }
        } else {
        } else {
            if (direction == AudioManager.ADJUST_RAISE) {
            if (direction == AudioManager.ADJUST_RAISE) {
                // exiting silent mode
                // exiting silent mode
                newRingerMode = AudioManager.RINGER_MODE_NORMAL;
                newRingerMode = AudioManager.RINGER_MODE_NORMAL;
                if (uiIndex != 0) {
                    adjustVolumeIndex = false;
                }
            } else {
            } else {
                // prevent last audible index to reach 0
                // prevent last audible index to reach 0
                adjustVolumeIndex = false;
                adjustVolumeIndex = false;
@@ -1581,13 +1589,6 @@ public class AudioService extends IAudioService.Stub {


        if (newRingerMode != mRingerMode) {
        if (newRingerMode != mRingerMode) {
            setRingerMode(newRingerMode);
            setRingerMode(newRingerMode);

            /*
             * If we are changing ringer modes, do not increment/decrement the
             * volume index. Instead, the handler for the message above will
             * take care of changing the index.
             */
            adjustVolumeIndex = false;
        }
        }


        mPrevVolDirection = direction;
        mPrevVolDirection = direction;