diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java index 5c21fd1167e40..6560f8f9c4204 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java @@ -18,6 +18,7 @@ package com.android.systemui.statusbar; import android.content.Context; import android.database.ContentObserver; +import android.media.AudioAttributes; import android.os.AsyncTask; import android.os.Handler; import android.os.UserHandle; @@ -30,6 +31,11 @@ public class VibratorHelper { private final Vibrator mVibrator; private final Context mContext; private boolean mHapticFeedbackEnabled; + private static final AudioAttributes STATUS_BAR_VIBRATION_ATTRIBUTES = + new AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) + .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) + .build(); final private ContentObserver mVibrationObserver = new ContentObserver(Handler.getMain()) { @Override @@ -51,7 +57,8 @@ public class VibratorHelper { public void vibrate(final int effectId) { if (mHapticFeedbackEnabled) { AsyncTask.execute(() -> - mVibrator.vibrate(VibrationEffect.get(effectId, false /* fallback */))); + mVibrator.vibrate(VibrationEffect.get(effectId, false /* fallback */), + STATUS_BAR_VIBRATION_ATTRIBUTES)); } } diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java index 89e7dd1460457..ee6748eee2f80 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java @@ -26,8 +26,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.database.ContentObserver; -import android.media.AudioDeviceCallback; -import android.media.AudioDeviceInfo; +import android.media.AudioAttributes; import android.media.AudioManager; import android.media.AudioSystem; import android.media.IVolumeController; @@ -40,6 +39,7 @@ import android.os.HandlerThread; import android.os.Looper; import android.os.Message; import android.os.RemoteException; +import android.os.VibrationEffect; import android.os.Vibrator; import android.provider.Settings; import android.service.notification.Condition; @@ -59,9 +59,7 @@ import com.android.systemui.statusbar.phone.StatusBar; import java.io.FileDescriptor; import java.io.PrintWriter; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Objects; @@ -77,6 +75,11 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa private static final int DYNAMIC_STREAM_START_INDEX = 100; private static final int VIBRATE_HINT_DURATION = 50; + private static final AudioAttributes SONFICIATION_VIBRATION_ATTRIBUTES = + new AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) + .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) + .build(); static final ArrayMap STREAMS = new ArrayMap<>(); static { @@ -299,7 +302,8 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa public void vibrate() { if (mHasVibrator) { - mVibrator.vibrate(VIBRATE_HINT_DURATION); + mVibrator.vibrate(VibrationEffect.createOneShot(VIBRATE_HINT_DURATION, + VibrationEffect.DEFAULT_AMPLITUDE), SONFICIATION_VIBRATION_ATTRIBUTES); } } @@ -308,7 +312,7 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa } private void onNotifyVisibleW(boolean visible) { - if (mDestroyed) return; + if (mDestroyed) return; mAudio.notifyVolumeControllerVisible(mVolumeController, visible); if (!visible) { if (updateActiveStreamW(-1)) {