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 androidx.preference.PreferenceViewHolder;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.bluetooth.AmbientVolumeUi; import com.android.settingslib.bluetooth.AmbientVolumeUi;
import com.android.settingslib.widget.SliderPreference; 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_UNIFIED = 0;
private static final int ORDER_AMBIENT_VOLUME_CONTROL_SEPARATED = 1; 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 @Nullable
private AmbientVolumeUiListener mListener; private AmbientVolumeUiListener mListener;
@Nullable @Nullable
@@ -71,12 +76,17 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
private final BiMap<Integer, SliderPreference> mSideToSliderMap = HashBiMap.create(); private final BiMap<Integer, SliderPreference> mSideToSliderMap = HashBiMap.create();
private int mVolumeLevel = AMBIENT_VOLUME_LEVEL_DEFAULT; private int mVolumeLevel = AMBIENT_VOLUME_LEVEL_DEFAULT;
private int mMetricsCategory;
private final OnPreferenceChangeListener mPreferenceChangeListener = private final OnPreferenceChangeListener mPreferenceChangeListener =
(slider, v) -> { (slider, v) -> {
if (slider instanceof SliderPreference && v instanceof final Integer value) { if (slider instanceof SliderPreference && v instanceof final Integer value) {
final Integer side = mSideToSliderMap.inverse().get(slider); final Integer side = mSideToSliderMap.inverse().get(slider);
if (mListener != null && side != null) { if (side != null) {
mListener.onSliderValueChange(side, value); logMetrics(METRIC_KEY_AMBIENT_SLIDER, side);
if (mListener != null) {
mListener.onSliderValueChange(side, value);
}
} }
return true; return true;
} }
@@ -106,6 +116,7 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
return; return;
} }
setMuted(!mMuted); setMuted(!mMuted);
logMetrics(METRIC_KEY_AMBIENT_MUTE, mMuted ? 1 : 0);
if (mListener != null) { if (mListener != null) {
mListener.onAmbientVolumeIconClick(); mListener.onAmbientVolumeIconClick();
} }
@@ -115,6 +126,7 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
mExpandIcon = holder.itemView.requireViewById(R.id.expand_icon); mExpandIcon = holder.itemView.requireViewById(R.id.expand_icon);
mExpandIcon.setOnClickListener(v -> { mExpandIcon.setOnClickListener(v -> {
setExpanded(!mExpanded); setExpanded(!mExpanded);
logMetrics(METRIC_KEY_AMBIENT_EXPAND, mExpanded ? 1 : 0);
if (mListener != null) { if (mListener != null) {
mListener.onExpandIconClick(); mListener.onExpandIconClick();
} }
@@ -249,6 +261,15 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
updateVolumeLevel(); updateVolumeLevel();
} }
/** Sets the metrics category. */
public void setMetricsCategory(int category) {
mMetricsCategory = category;
}
private int getMetricsCategory() {
return mMetricsCategory;
}
private void updateVolumeLevel() { private void updateVolumeLevel() {
int leftLevel, rightLevel; int leftLevel, rightLevel;
if (mExpanded) { if (mExpanded) {
@@ -329,4 +350,9 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
Map<Integer, SliderPreference> getSliders() { Map<Integer, SliderPreference> getSliders() {
return mSideToSliderMap; 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.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.bluetooth.VolumeControlProfile; 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.Lifecycle;
import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop; import com.android.settingslib.core.lifecycle.events.OnStop;
@@ -83,6 +84,9 @@ public class BluetoothDetailsAmbientVolumePreferenceController extends Bluetooth
mPreference = new AmbientVolumePreference(deviceControls.getContext()); mPreference = new AmbientVolumePreference(deviceControls.getContext());
mPreference.setKey(KEY_AMBIENT_VOLUME); mPreference.setKey(KEY_AMBIENT_VOLUME);
mPreference.setOrder(ORDER_AMBIENT_VOLUME); mPreference.setOrder(ORDER_AMBIENT_VOLUME);
if (mFragment instanceof Instrumentable) {
mPreference.setMetricsCategory(((Instrumentable) mFragment).getMetricsCategory());
}
deviceControls.addPreference(mPreference); deviceControls.addPreference(mPreference);
mAmbientUiController = new AmbientVolumeUiController(mContext, mBluetoothManager, mAmbientUiController = new AmbientVolumeUiController(mContext, mBluetoothManager,