Merge "Add ambient volume control related logs in Settings" into main

This commit is contained in:
Angela Wang
2025-02-19 18:03:48 -08:00
committed by Android (Google) Code Review
2 changed files with 32 additions and 2 deletions

View File

@@ -37,6 +37,7 @@ import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.bluetooth.AmbientVolumeUi;
import com.android.settingslib.widget.SliderPreference;
@@ -58,6 +59,10 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
private static final int ORDER_AMBIENT_VOLUME_CONTROL_UNIFIED = 0;
private static final int ORDER_AMBIENT_VOLUME_CONTROL_SEPARATED = 1;
private static final String METRIC_KEY_AMBIENT_SLIDER = "ambient_slider";
private static final String METRIC_KEY_AMBIENT_MUTE = "ambient_mute";
private static final String METRIC_KEY_AMBIENT_EXPAND = "ambient_expand";
@Nullable
private AmbientVolumeUiListener mListener;
@Nullable
@@ -71,13 +76,18 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
private final BiMap<Integer, SliderPreference> mSideToSliderMap = HashBiMap.create();
private int mVolumeLevel = AMBIENT_VOLUME_LEVEL_DEFAULT;
private int mMetricsCategory;
private final OnPreferenceChangeListener mPreferenceChangeListener =
(slider, v) -> {
if (slider instanceof SliderPreference && v instanceof final Integer value) {
final Integer side = mSideToSliderMap.inverse().get(slider);
if (mListener != null && side != null) {
if (side != null) {
logMetrics(METRIC_KEY_AMBIENT_SLIDER, side);
if (mListener != null) {
mListener.onSliderValueChange(side, value);
}
}
return true;
}
return false;
@@ -106,6 +116,7 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
return;
}
setMuted(!mMuted);
logMetrics(METRIC_KEY_AMBIENT_MUTE, mMuted ? 1 : 0);
if (mListener != null) {
mListener.onAmbientVolumeIconClick();
}
@@ -115,6 +126,7 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
mExpandIcon = holder.itemView.requireViewById(R.id.expand_icon);
mExpandIcon.setOnClickListener(v -> {
setExpanded(!mExpanded);
logMetrics(METRIC_KEY_AMBIENT_EXPAND, mExpanded ? 1 : 0);
if (mListener != null) {
mListener.onExpandIconClick();
}
@@ -249,6 +261,15 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
updateVolumeLevel();
}
/** Sets the metrics category. */
public void setMetricsCategory(int category) {
mMetricsCategory = category;
}
private int getMetricsCategory() {
return mMetricsCategory;
}
private void updateVolumeLevel() {
int leftLevel, rightLevel;
if (mExpanded) {
@@ -329,4 +350,9 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
Map<Integer, SliderPreference> getSliders() {
return mSideToSliderMap;
}
private void logMetrics(String key, int value) {
FeatureFactory.getFeatureFactory().getMetricsFeatureProvider().changed(
getMetricsCategory(), key, value);
}
}

View File

@@ -32,6 +32,7 @@ import com.android.settingslib.bluetooth.AmbientVolumeUiController;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.bluetooth.VolumeControlProfile;
import com.android.settingslib.core.instrumentation.Instrumentable;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
@@ -83,6 +84,9 @@ public class BluetoothDetailsAmbientVolumePreferenceController extends Bluetooth
mPreference = new AmbientVolumePreference(deviceControls.getContext());
mPreference.setKey(KEY_AMBIENT_VOLUME);
mPreference.setOrder(ORDER_AMBIENT_VOLUME);
if (mFragment instanceof Instrumentable) {
mPreference.setMetricsCategory(((Instrumentable) mFragment).getMetricsCategory());
}
deviceControls.addPreference(mPreference);
mAmbientUiController = new AmbientVolumeUiController(mContext, mBluetoothManager,