Merge "Add vibration preview" into pi-dev am: 1ec06d4623
am: 6a090b46cf
Change-Id: Ia326faa0639ae6357df23d70f570eb7f3cd0d9e6
This commit is contained in:
@@ -15,7 +15,9 @@
|
||||
*/
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import android.media.AudioAttributes;
|
||||
import android.os.Vibrator;
|
||||
import android.os.VibrationEffect;
|
||||
import android.provider.Settings;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
@@ -43,6 +45,11 @@ public class NotificationVibrationPreferenceFragment extends VibrationPreference
|
||||
return Settings.System.NOTIFICATION_VIBRATION_INTENSITY;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getPreviewVibrationAudioAttributesUsage() {
|
||||
return AudioAttributes.USAGE_NOTIFICATION;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getDefaultVibrationIntensity() {
|
||||
Vibrator vibrator = getContext().getSystemService(Vibrator.class);
|
||||
|
@@ -16,7 +16,9 @@
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.media.AudioAttributes;
|
||||
import android.os.Vibrator;
|
||||
import android.os.VibrationEffect;
|
||||
import android.provider.Settings;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
@@ -50,6 +52,11 @@ public class TouchVibrationPreferenceFragment extends VibrationPreferenceFragmen
|
||||
return vibrator.getDefaultHapticFeedbackIntensity();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getPreviewVibrationAudioAttributesUsage() {
|
||||
return AudioAttributes.USAGE_ASSISTANCE_SONIFICATION;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onVibrationIntensitySelected(int intensity) {
|
||||
// We want to keep HAPTIC_FEEDBACK_ENABLED consistent with this setting since some
|
||||
|
@@ -21,8 +21,10 @@ import androidx.annotation.VisibleForTesting;
|
||||
import android.content.Context;
|
||||
import android.database.ContentObserver;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.media.AudioAttributes;
|
||||
import android.net.Uri;
|
||||
import android.os.Handler;
|
||||
import android.os.VibrationEffect;
|
||||
import android.os.Vibrator;
|
||||
import android.provider.Settings;
|
||||
import android.util.ArrayMap;
|
||||
@@ -105,6 +107,24 @@ public abstract class VibrationPreferenceFragment extends RadioButtonPickerFragm
|
||||
*/
|
||||
protected void onVibrationIntensitySelected(int intensity) { }
|
||||
|
||||
/**
|
||||
* Play a vibration effect with intensity just selected by user
|
||||
*/
|
||||
protected void playVibrationPreview() {
|
||||
Vibrator vibrator = getContext().getSystemService(Vibrator.class);
|
||||
VibrationEffect effect = VibrationEffect.get(VibrationEffect.EFFECT_CLICK);
|
||||
AudioAttributes.Builder builder = new AudioAttributes.Builder();
|
||||
builder.setUsage(getPreviewVibrationAudioAttributesUsage());
|
||||
vibrator.vibrate(effect, builder.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the AudioAttributes usage for vibration preview.
|
||||
*/
|
||||
protected int getPreviewVibrationAudioAttributesUsage() {
|
||||
return AudioAttributes.USAGE_UNKNOWN;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<? extends CandidateInfo> getCandidates() {
|
||||
List<VibrationIntensityCandidateInfo> candidates = new ArrayList<>(mCandidates.values());
|
||||
@@ -189,6 +209,7 @@ public abstract class VibrationPreferenceFragment extends RadioButtonPickerFragm
|
||||
@Override
|
||||
public void onChange(boolean selfChange, Uri uri) {
|
||||
updateCandidates();
|
||||
playVibrationPreview();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user