Merge "Add vibration preview" into pi-dev am: 1ec06d4623

am: 6a090b46cf

Change-Id: Ia326faa0639ae6357df23d70f570eb7f3cd0d9e6
This commit is contained in:
Alexey Kuzmin
2018-05-25 18:09:19 -07:00
committed by android-build-merger
3 changed files with 35 additions and 0 deletions

View File

@@ -15,7 +15,9 @@
*/ */
package com.android.settings.accessibility; package com.android.settings.accessibility;
import android.media.AudioAttributes;
import android.os.Vibrator; import android.os.Vibrator;
import android.os.VibrationEffect;
import android.provider.Settings; import android.provider.Settings;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -43,6 +45,11 @@ public class NotificationVibrationPreferenceFragment extends VibrationPreference
return Settings.System.NOTIFICATION_VIBRATION_INTENSITY; return Settings.System.NOTIFICATION_VIBRATION_INTENSITY;
} }
@Override
protected int getPreviewVibrationAudioAttributesUsage() {
return AudioAttributes.USAGE_NOTIFICATION;
}
@Override @Override
protected int getDefaultVibrationIntensity() { protected int getDefaultVibrationIntensity() {
Vibrator vibrator = getContext().getSystemService(Vibrator.class); Vibrator vibrator = getContext().getSystemService(Vibrator.class);

View File

@@ -16,7 +16,9 @@
package com.android.settings.accessibility; package com.android.settings.accessibility;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.media.AudioAttributes;
import android.os.Vibrator; import android.os.Vibrator;
import android.os.VibrationEffect;
import android.provider.Settings; import android.provider.Settings;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -50,6 +52,11 @@ public class TouchVibrationPreferenceFragment extends VibrationPreferenceFragmen
return vibrator.getDefaultHapticFeedbackIntensity(); return vibrator.getDefaultHapticFeedbackIntensity();
} }
@Override
protected int getPreviewVibrationAudioAttributesUsage() {
return AudioAttributes.USAGE_ASSISTANCE_SONIFICATION;
}
@Override @Override
public void onVibrationIntensitySelected(int intensity) { public void onVibrationIntensitySelected(int intensity) {
// We want to keep HAPTIC_FEEDBACK_ENABLED consistent with this setting since some // We want to keep HAPTIC_FEEDBACK_ENABLED consistent with this setting since some

View File

@@ -21,8 +21,10 @@ import androidx.annotation.VisibleForTesting;
import android.content.Context; import android.content.Context;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.media.AudioAttributes;
import android.net.Uri; import android.net.Uri;
import android.os.Handler; import android.os.Handler;
import android.os.VibrationEffect;
import android.os.Vibrator; import android.os.Vibrator;
import android.provider.Settings; import android.provider.Settings;
import android.util.ArrayMap; import android.util.ArrayMap;
@@ -105,6 +107,24 @@ public abstract class VibrationPreferenceFragment extends RadioButtonPickerFragm
*/ */
protected void onVibrationIntensitySelected(int intensity) { } 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 @Override
protected List<? extends CandidateInfo> getCandidates() { protected List<? extends CandidateInfo> getCandidates() {
List<VibrationIntensityCandidateInfo> candidates = new ArrayList<>(mCandidates.values()); List<VibrationIntensityCandidateInfo> candidates = new ArrayList<>(mCandidates.values());
@@ -189,6 +209,7 @@ public abstract class VibrationPreferenceFragment extends RadioButtonPickerFragm
@Override @Override
public void onChange(boolean selfChange, Uri uri) { public void onChange(boolean selfChange, Uri uri) {
updateCandidates(); updateCandidates();
playVibrationPreview();
} }
} }
} }