Add haptic effect for the seekbar in Settings 2/n.
- for Audio balance, perform haptic feedback as the seekbar's progress value is the center/min/max value. - screenshot, https://screenshot.googleplex.com/3xJUJkvJuXTUCqe Bug: 174109628 Test: make -j42 RunSettingsRoboTests ROBOTEST_FILTER=BalanceSeekBarTest Change-Id: I8b4ab37a2e635fb3b1ca2a9277a06b1e83f81bbb
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import static android.view.HapticFeedbackConstants.CLOCK_TICK;
|
||||
import static com.android.settings.Utils.isNightMode;
|
||||
|
||||
import android.content.Context;
|
||||
@@ -44,6 +45,7 @@ public class BalanceSeekBar extends SeekBar {
|
||||
private final Context mContext;
|
||||
private final Object mListenerLock = new Object();
|
||||
private OnSeekBarChangeListener mOnSeekBarChangeListener;
|
||||
private int mLastProgress = -1;
|
||||
private final OnSeekBarChangeListener mProxySeekBarListener = new OnSeekBarChangeListener() {
|
||||
@Override
|
||||
public void onStopTrackingTouch(SeekBar seekBar) {
|
||||
@@ -73,6 +75,12 @@ public class BalanceSeekBar extends SeekBar {
|
||||
progress = mCenter;
|
||||
seekBar.setProgress(progress); // direct update (fromUser becomes false)
|
||||
}
|
||||
if (progress != mLastProgress) {
|
||||
if (progress == mCenter || progress == getMin() || progress == getMax()) {
|
||||
seekBar.performHapticFeedback(CLOCK_TICK);
|
||||
}
|
||||
mLastProgress = progress;
|
||||
}
|
||||
final float balance = (progress - mCenter) * 0.01f;
|
||||
Settings.System.putFloatForUser(mContext.getContentResolver(),
|
||||
Settings.System.MASTER_BALANCE, balance, UserHandle.USER_CURRENT);
|
||||
@@ -152,10 +160,5 @@ public class BalanceSeekBar extends SeekBar {
|
||||
canvas.restore();
|
||||
super.onDraw(canvas);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
OnSeekBarChangeListener getProxySeekBarListener() {
|
||||
return mProxySeekBarListener;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user