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

Commit e7f301a0 authored by John Spurlock's avatar John Spurlock Committed by Android (Google) Code Review
Browse files

Merge "Audio policy: Fix deprecated shouldVibrate api." into lmp-mr1-dev

parents c6de288e 57627794
Loading
Loading
Loading
Loading
+35 −23
Original line number Diff line number Diff line
@@ -1841,12 +1841,22 @@ public class AudioService extends IAudioService.Stub {
    }

    public void setRingerModeExternal(int ringerMode, String caller) {
        final long identity = Binder.clearCallingIdentity();
        try {
            setRingerMode(ringerMode, caller, true /*external*/);
        } finally {
            Binder.restoreCallingIdentity(identity);
        }
    }

    public void setRingerModeInternal(int ringerMode, String caller) {
        enforceSelfOrSystemUI("setRingerModeInternal");
        final long identity = Binder.clearCallingIdentity();
        try {
            setRingerMode(ringerMode, caller, false /*external*/);
        } finally {
            Binder.restoreCallingIdentity(identity);
        }
    }

    private void setRingerMode(int ringerMode, String caller, boolean external) {
@@ -1860,6 +1870,7 @@ public class AudioService extends IAudioService.Stub {
        if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) {
            ringerMode = AudioManager.RINGER_MODE_SILENT;
        }
        synchronized (mSettingsLock) {
            final int ringerModeInternal = getRingerModeInternal();
            final int ringerModeExternal = getRingerModeExternal();
            if (external) {
@@ -1882,6 +1893,7 @@ public class AudioService extends IAudioService.Stub {
                setRingerModeExt(ringerMode);
            }
        }
    }

    private void setRingerModeExt(int ringerMode) {
        synchronized(mSettingsLock) {
@@ -1968,10 +1980,10 @@ public class AudioService extends IAudioService.Stub {
        switch (getVibrateSetting(vibrateType)) {

            case AudioManager.VIBRATE_SETTING_ON:
                return getRingerModeInternal() != AudioManager.RINGER_MODE_SILENT;
                return getRingerModeExternal() != AudioManager.RINGER_MODE_SILENT;

            case AudioManager.VIBRATE_SETTING_ONLY_SILENT:
                return getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE;
                return getRingerModeExternal() == AudioManager.RINGER_MODE_VIBRATE;

            case AudioManager.VIBRATE_SETTING_OFF:
                // return false, even for incoming calls
+1 −1
Original line number Diff line number Diff line
@@ -927,7 +927,7 @@ public class NotificationManagerService extends SystemService {
                    Settings.Global.DEVICE_PROVISIONED, 0)) {
            mDisableNotificationEffects = true;
        }
        mZenModeHelper.updateZenMode();
        mZenModeHelper.readZenModeFromSetting();

        mUserProfiles.updateCache(getContext());
        listenForCallState();
+30 −26
Original line number Diff line number Diff line
@@ -221,21 +221,26 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate {
    }

    public void setZenMode(int zenMode, String reason) {
        setZenMode(zenMode, reason, true);
    }

    private void setZenMode(int zenMode, String reason, boolean setRingerMode) {
        ZenLog.traceSetZenMode(zenMode, reason);
        Global.putInt(mContext.getContentResolver(), Global.ZEN_MODE, zenMode);
        if (mZenMode == zenMode) return;
        ZenLog.traceUpdateZenMode(mZenMode, zenMode);
        mZenMode = zenMode;
        Global.putInt(mContext.getContentResolver(), Global.ZEN_MODE, mZenMode);
        if (setRingerMode) {
            applyZenToRingerMode();
        }
        applyRestrictions();
        mHandler.postDispatchOnZenModeChanged();
    }

    public void updateZenMode() {
        final int oldMode = mZenMode;
    public void readZenModeFromSetting() {
        final int newMode = Global.getInt(mContext.getContentResolver(),
                Global.ZEN_MODE, Global.ZEN_MODE_OFF);
        if (oldMode != newMode) {
            ZenLog.traceUpdateZenMode(oldMode, newMode);
        }
        mZenMode = newMode;
        applyRestrictions();
        onZenUpdated(oldMode, newMode);
        dispatchOnZenModeChanged();
        setZenMode(newMode, "setting");
    }

    private void applyRestrictions() {
@@ -297,18 +302,16 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate {
        dispatchOnConfigChanged();
        final String val = Integer.toString(mConfig.hashCode());
        Global.putString(mContext.getContentResolver(), Global.ZEN_MODE_CONFIG_ETAG, val);
        updateZenMode();
        applyRestrictions();
        return true;
    }

    private void onZenUpdated(int oldZen, int newZen) {
    private void applyZenToRingerMode() {
        if (mAudioManager == null) return;
        if (oldZen == newZen) return;

        // force the ringer mode into compliance
        final int ringerModeInternal = mAudioManager.getRingerModeInternal();
        int newRingerModeInternal = ringerModeInternal;
        switch (newZen) {
        switch (mZenMode) {
            case Global.ZEN_MODE_NO_INTERRUPTIONS:
                if (ringerModeInternal != AudioManager.RINGER_MODE_SILENT) {
                    mPreviousRingerMode = ringerModeInternal;
@@ -356,7 +359,7 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate {
                break;
        }
        if (newZen != -1) {
            mHandler.postSetZenMode(newZen, "ringerModeInternal");
            setZenMode(newZen, "ringerModeInternal", false /*setRingerMode*/);
        }

        if (isChange || newZen != -1 || ringerModeExternal != ringerModeExternalOut) {
@@ -394,7 +397,7 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate {
                break;
        }
        if (newZen != -1) {
            mHandler.postSetZenMode(newZen, "ringerModeExternal");
            setZenMode(newZen, "ringerModeExternal", false /*setRingerMode*/);
        }

        ZenLog.traceSetRingerModeExternal(ringerModeOld, ringerModeNew, caller, ringerModeInternal,
@@ -516,27 +519,28 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate {

        public void update(Uri uri) {
            if (ZEN_MODE.equals(uri)) {
                updateZenMode();
                readZenModeFromSetting();
            }
        }
    }

    private class H extends Handler {
        private static final int MSG_SET_ZEN = 1;
        private static final int MSG_DISPATCH = 1;

        private H(Looper looper) {
            super(looper);
        }

        private void postSetZenMode(int zen, String reason) {
            obtainMessage(MSG_SET_ZEN, zen, 0, reason).sendToTarget();
        private void postDispatchOnZenModeChanged() {
            removeMessages(MSG_DISPATCH);
            sendEmptyMessage(MSG_DISPATCH);
        }

        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case MSG_SET_ZEN:
                    setZenMode(msg.arg1, (String) msg.obj);
                case MSG_DISPATCH:
                    dispatchOnZenModeChanged();
                    break;
            }
        }