Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57032340 authored by Angela Wang's avatar Angela Wang Committed by Android (Google) Code Review
Browse files

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

parents f64677e0 51696f80
Loading
Loading
Loading
Loading
+28 −2
Original line number Diff line number Diff line
@@ -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);
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -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,