Add the jank detection to Settings sliders

- Currently most the sliders are implemented by
   com.android.settings.widget.SeekBarPreference.
 - Volume ones are implemented by VolumeSeekBarPreference, which resets
   the OnSeekBarChangeListener, so need special handling.
 - PointerSpeedPreference is standalone, added separately.

Bug: 230285829
Test: Verify trace via jank developer guideline.
Change-Id: Ia2978df196676ad6675d2834f6af6cb2aa9094cf
This commit is contained in:
Chaohui Wang
2022-04-26 20:04:39 +08:00
parent 8f463f5c88
commit f311566b85
19 changed files with 77 additions and 4 deletions

View File

@@ -18,6 +18,8 @@ package com.android.settings.widget;
import static android.view.HapticFeedbackConstants.CLOCK_TICK;
import static com.android.internal.jank.InteractionJankMonitor.CUJ_SETTINGS_SLIDER;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Parcel;
@@ -33,6 +35,7 @@ import android.widget.SeekBar.OnSeekBarChangeListener;
import androidx.core.content.res.TypedArrayUtils;
import androidx.preference.PreferenceViewHolder;
import com.android.internal.jank.InteractionJankMonitor;
import com.android.settingslib.RestrictedPreference;
/**
@@ -45,6 +48,7 @@ public class SeekBarPreference extends RestrictedPreference
public static final int HAPTIC_FEEDBACK_MODE_ON_TICKS = 1;
public static final int HAPTIC_FEEDBACK_MODE_ON_ENDS = 2;
private final InteractionJankMonitor mJankMonitor = InteractionJankMonitor.getInstance();
private int mProgress;
private int mMax;
private int mMin;
@@ -312,6 +316,9 @@ public class SeekBarPreference extends RestrictedPreference
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
mTrackingTouch = true;
mJankMonitor.begin(InteractionJankMonitor.Configuration.Builder
.withView(CUJ_SETTINGS_SLIDER, seekBar)
.setTag(getKey()));
}
@Override
@@ -320,6 +327,7 @@ public class SeekBarPreference extends RestrictedPreference
if (seekBar.getProgress() != mProgress) {
syncProgress(seekBar);
}
mJankMonitor.end(CUJ_SETTINGS_SLIDER);
}
/**