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

Commit 2475239c authored by Lais Andrade's avatar Lais Andrade Committed by Automerger Merge Worker
Browse files

Merge "Remove usage of deprecated setting VIBRATE_WHEN_RINGING" into tm-dev...

Merge "Remove usage of deprecated setting VIBRATE_WHEN_RINGING" into tm-dev am: 58d82381 am: d4026780 am: c18916bf

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/Telecomm/+/17943735



Change-Id: Icf3844fd79c0eba50ad51f62fbccfdb534b91522
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 277563e0 c18916bf
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -209,7 +209,7 @@ public class AsyncRingtonePlayer {
                        isVibrationEnabled);
                SystemSettingsUtil systemSettingsUtil = new SystemSettingsUtil();
                if (hasHaptics && (volumeShaperConfig == null
                        || systemSettingsUtil.enableAudioCoupledVibrationForRampingRinger())) {
                        || systemSettingsUtil.isAudioCoupledVibrationForRampingRingerEnabled())) {
                    AudioAttributes attributes = mRingtone.getAudioAttributes();
                    Log.d(this, "handlePlay: %s haptic channel",
                            (isVibrationEnabled ? "unmuting" : "muting"));
+15 −29
Original line number Diff line number Diff line
@@ -275,7 +275,9 @@ public class Ringer {
        VibrationEffect effect;
        CompletableFuture<Boolean> hapticsFuture = null;
        // Determine if the settings and DND mode indicate that the vibrator can be used right now.
        boolean isVibratorEnabled = isVibratorEnabled(mContext, foregroundCall);
        boolean isVibratorEnabled = isVibratorEnabled(mContext);
        boolean shouldApplyRampingRinger =
                isVibratorEnabled && mSystemSettingsUtil.isRampingRingerEnabled(mContext);
        if (attributes.isRingerAudible()) {
            mRingingCall = foregroundCall;
            Log.addEvent(foregroundCall, LogUtils.Events.START_RINGER);
@@ -283,9 +285,9 @@ public class Ringer {
            // call (for the purposes of direct-to-voicemail), the information about custom
            // ringtones should be available by the time this code executes. We can safely
            // request the custom ringtone from the call and expect it to be current.
            if (mSystemSettingsUtil.applyRampingRinger(mContext)) {
            if (shouldApplyRampingRinger) {
                Log.i(this, "start ramping ringer.");
                if (mSystemSettingsUtil.enableAudioCoupledVibrationForRampingRinger()) {
                if (mSystemSettingsUtil.isAudioCoupledVibrationForRampingRingerEnabled()) {
                    effect = getVibrationEffectForCall(mRingtoneFactory, foregroundCall);
                } else {
                    effect = mDefaultVibrationEffect;
@@ -331,8 +333,8 @@ public class Ringer {
                            isUsingAudioCoupledHaptics, mIsHapticPlaybackSupportedByDevice);
                    maybeStartVibration(foregroundCall, shouldRingForContact, effect,
                            isVibratorEnabled, isRingerAudible);
                } else if (mSystemSettingsUtil.applyRampingRinger(mContext)
                           && !mSystemSettingsUtil.enableAudioCoupledVibrationForRampingRinger()) {
                } else if (shouldApplyRampingRinger
                        && !mSystemSettingsUtil.isAudioCoupledVibrationForRampingRingerEnabled()) {
                    Log.i(this, "startRinging: apply ramping ringer vibration");
                    maybeStartVibration(foregroundCall, shouldRingForContact, effect,
                            isVibratorEnabled, isRingerAudible);
@@ -360,15 +362,13 @@ public class Ringer {
        VibrationEffect effect, boolean isVibrationEnabled, boolean isRingerAudible) {
        synchronized (mLock) {
            mAudioManager = mContext.getSystemService(AudioManager.class);
            if (isVibrationEnabled
                    && !mIsVibrating && shouldRingForContact) {
            if (isVibrationEnabled && !mIsVibrating && shouldRingForContact) {
                Log.addEvent(foregroundCall, LogUtils.Events.START_VIBRATOR,
                        "hasVibrator=%b, userRequestsVibrate=%b, ringerMode=%d, isVibrating=%b",
                        mVibrator.hasVibrator(),
                        mSystemSettingsUtil.canVibrateWhenRinging(mContext),
                        mSystemSettingsUtil.isRingVibrationEnabled(mContext),
                        mAudioManager.getRingerModeInternal(), mIsVibrating);
                if (mSystemSettingsUtil.applyRampingRinger(mContext)
                        && isRingerAudible) {
                if (mSystemSettingsUtil.isRampingRingerEnabled(mContext) && isRingerAudible) {
                    Log.i(this, "start vibration for ramping ringer.");
                } else {
                    Log.i(this, "start normal vibration.");
@@ -380,7 +380,7 @@ public class Ringer {
                Log.addEvent(foregroundCall, LogUtils.Events.SKIP_VIBRATION,
                        "hasVibrator=%b, userRequestsVibrate=%b, ringerMode=%d, isVibrating=%b",
                        mVibrator.hasVibrator(),
                        mSystemSettingsUtil.canVibrateWhenRinging(mContext),
                        mSystemSettingsUtil.isRingVibrationEnabled(mContext),
                        mAudioManager.getRingerModeInternal(), mIsVibrating);
            }
        }
@@ -503,25 +503,11 @@ public class Ringer {
        }
    }

    private boolean isVibratorEnabled(Context context, Call call) {
    private boolean isVibratorEnabled(Context context) {
        AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        int ringerMode = audioManager.getRingerModeInternal();
        boolean shouldVibrate;
        if (getVibrateWhenRinging(context)) {
            shouldVibrate = ringerMode != AudioManager.RINGER_MODE_SILENT;
        } else {
            shouldVibrate = ringerMode == AudioManager.RINGER_MODE_VIBRATE;
        }

        return shouldVibrate;
    }

    private boolean getVibrateWhenRinging(Context context) {
        if (!mVibrator.hasVibrator()) {
            return false;
        }
        return mSystemSettingsUtil.canVibrateWhenRinging(context)
            || mSystemSettingsUtil.applyRampingRinger(context);
        return mVibrator.hasVibrator()
                && mSystemSettingsUtil.isRingVibrationEnabled(context)
                && audioManager.getRingerModeInternal() != AudioManager.RINGER_MODE_SILENT;
    }

    private RingerAttributes getRingerAttributes(Call call, boolean isHfpDeviceAttached) {
+13 −5
Original line number Diff line number Diff line
@@ -18,9 +18,10 @@ package com.android.server.telecom;

import android.content.Context;
import android.media.AudioManager;
import android.os.VibrationAttributes;
import android.os.Vibrator;
import android.provider.DeviceConfig;
import android.provider.Settings;
import android.telecom.Log;

import com.android.internal.annotations.VisibleForTesting;

@@ -39,9 +40,16 @@ public class SystemSettingsUtil {
                0) == 1;
    }

    public boolean canVibrateWhenRinging(Context context) {
    public boolean isRingVibrationEnabled(Context context) {
        // VIBRATE_WHEN_RINGING setting was deprecated, only RING_VIBRATION_INTENSITY controls the
        // ringtone vibrations on/off state now. Ramping ringer should only be applied when ring
        // vibration intensity is ON, otherwise the ringtone sound should not be delayed as there
        // will be no ring vibration.
        return Settings.System.getIntForUser(context.getContentResolver(),
                Settings.System.VIBRATE_WHEN_RINGING, 0, context.getUserId()) != 0;
                Settings.System.RING_VIBRATION_INTENSITY,
                context.getSystemService(Vibrator.class).getDefaultVibrationIntensity(
                        VibrationAttributes.USAGE_RINGTONE),
                context.getUserId()) != Vibrator.VIBRATION_INTENSITY_OFF;
    }

    public boolean isEnhancedCallBlockingEnabled(Context context) {
@@ -55,11 +63,11 @@ public class SystemSettingsUtil {
                context.getUserId());
    }

    public boolean applyRampingRinger(Context context) {
    public boolean isRampingRingerEnabled(Context context) {
        return context.getSystemService(AudioManager.class).isRampingRingerEnabled();
    }

    public boolean enableAudioCoupledVibrationForRampingRinger() {
    public boolean isAudioCoupledVibrationForRampingRingerEnabled() {
        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TELEPHONY,
                RAMPING_RINGER_AUDIO_COUPLED_VIBRATION_ENABLED, false);
    }
+9 −0
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ import android.os.PersistableBundle;
import android.os.Process;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.Vibrator;
import android.os.VibratorManager;
import android.permission.PermissionCheckerManager;
import android.telecom.ConnectionService;
@@ -220,6 +221,8 @@ public class ComponentContextFixture implements TestFixture<Context> {
                    return mTelephonyRegistryManager;
                case Context.UI_MODE_SERVICE:
                    return mUiModeManager;
                case Context.VIBRATOR_SERVICE:
                    return mVibrator;
                case Context.VIBRATOR_MANAGER_SERVICE:
                    return mVibratorManager;
                case Context.PERMISSION_CHECKER_SERVICE:
@@ -249,6 +252,8 @@ public class ComponentContextFixture implements TestFixture<Context> {
                return Context.TELEPHONY_REGISTRY_SERVICE;
            } else if (svcClass == UiModeManager.class) {
                return Context.UI_MODE_SERVICE;
            } else if (svcClass == Vibrator.class) {
                return Context.VIBRATOR_SERVICE;
            } else if (svcClass == VibratorManager.class) {
                return Context.VIBRATOR_MANAGER_SERVICE;
            } else if (svcClass == PermissionCheckerManager.class) {
@@ -557,6 +562,7 @@ public class ComponentContextFixture implements TestFixture<Context> {
    private final RoleManager mRoleManager = mock(RoleManager.class);
    private final TelephonyRegistryManager mTelephonyRegistryManager =
            mock(TelephonyRegistryManager.class);
    private final Vibrator mVibrator = mock(Vibrator.class);
    private final VibratorManager mVibratorManager = mock(VibratorManager.class);
    private final UiModeManager mUiModeManager = mock(UiModeManager.class);
    private final PermissionCheckerManager mPermissionCheckerManager =
@@ -628,7 +634,10 @@ public class ComponentContextFixture implements TestFixture<Context> {
        }

        when(mPermissionInfo.isAppOp()).thenReturn(true);
        when(mVibrator.getDefaultVibrationIntensity(anyInt()))
                .thenReturn(Vibrator.VIBRATION_INTENSITY_MEDIUM);
        when(mVibratorManager.getVibratorIds()).thenReturn(new int[0]);
        when(mVibratorManager.getDefaultVibrator()).thenReturn(mVibrator);

        // Used in CreateConnectionProcessor to rank emergency numbers by viability.
        // For the test, make them all equal to INVALID so that the preferred PhoneAccount will be
+3 −6
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import android.media.Ringtone;
import android.media.VolumeShaper;
import android.net.Uri;
import android.os.Bundle;
import android.os.Looper;
import android.os.Parcel;
import android.os.VibrationAttributes;
import android.os.VibrationEffect;
@@ -48,8 +47,6 @@ import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -467,15 +464,15 @@ public class RingerTest extends TelecomTestCase {

    private void enableVibrationWhenRinging() {
        when(mockVibrator.hasVibrator()).thenReturn(true);
        when(mockSystemSettingsUtil.canVibrateWhenRinging(any(Context.class))).thenReturn(true);
        when(mockSystemSettingsUtil.isRingVibrationEnabled(any(Context.class))).thenReturn(true);
    }

    private void enableVibrationOnlyWhenNotRinging() {
        when(mockVibrator.hasVibrator()).thenReturn(true);
        when(mockSystemSettingsUtil.canVibrateWhenRinging(any(Context.class))).thenReturn(false);
        when(mockSystemSettingsUtil.isRingVibrationEnabled(any(Context.class))).thenReturn(false);
    }

    private void enableRampingRinger() {
        when(mockSystemSettingsUtil.applyRampingRinger(any(Context.class))).thenReturn(true);
        when(mockSystemSettingsUtil.isRampingRingerEnabled(any(Context.class))).thenReturn(true);
    }
}