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

@@ -16,6 +16,8 @@
package com.android.settings.notification;
import static com.android.internal.jank.InteractionJankMonitor.CUJ_SETTINGS_SLIDER;
import android.content.ContentResolver;
import android.content.Context;
import android.media.AudioManager;
@@ -31,6 +33,7 @@ import android.widget.TextView;
import androidx.annotation.VisibleForTesting;
import androidx.preference.PreferenceViewHolder;
import com.android.internal.jank.InteractionJankMonitor;
import com.android.settings.R;
import com.android.settings.widget.SeekBarPreference;
@@ -40,6 +43,8 @@ import java.util.Objects;
public class VolumeSeekBarPreference extends SeekBarPreference {
private static final String TAG = "VolumeSeekBarPreference";
private final InteractionJankMonitor mJankMonitor = InteractionJankMonitor.getInstance();
protected SeekBar mSeekBar;
private int mStream;
private SeekBarVolumizer mVolumizer;
@@ -143,6 +148,13 @@ public class VolumeSeekBarPreference extends SeekBarPreference {
if (mCallback != null) {
mCallback.onStartTrackingTouch(sbv);
}
mJankMonitor.begin(InteractionJankMonitor.Configuration.Builder
.withView(CUJ_SETTINGS_SLIDER, mSeekBar)
.setTag(getKey()));
}
@Override
public void onStopTrackingTouch(SeekBarVolumizer sbv) {
mJankMonitor.end(CUJ_SETTINGS_SLIDER);
}
};
final Uri sampleUri = mStream == AudioManager.STREAM_MUSIC ? getMediaVolumeUri() : null;