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

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

Merge changes from topic "sound" into main

* changes:
  Fix IntentReceiver leaked on Sound & vibration
  Get rid of VolumeSeekBarPreferenceController.setCallback
parents 2d664f30 402e5bb3
Loading
Loading
Loading
Loading
+6 −9
Original line number Diff line number Diff line
@@ -28,17 +28,18 @@ import android.os.Message;
import android.service.notification.NotificationListenerService;
import android.view.View;

import androidx.lifecycle.OnLifecycleEvent;
import androidx.annotation.NonNull;
import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settingslib.core.lifecycle.Lifecycle;

/**
 * Update notification volume icon in Settings in response to user adjusting volume.
 */
public class NotificationVolumePreferenceController extends
        RingerModeAffectedVolumePreferenceController {
        RingerModeAffectedVolumePreferenceController implements DefaultLifecycleObserver {

    private static final String KEY_NOTIFICATION_VOLUME = "notification_volume";
    private static final String TAG = "NotificationVolumePreferenceController";
@@ -80,17 +81,13 @@ public class NotificationVolumePreferenceController extends
        updateEnabledState();
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    @Override
    public void onResume() {
        super.onResume();
    public void onResume(@NonNull LifecycleOwner owner) {
        mReceiver.register(true);
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    @Override
    public void onPause() {
        super.onPause();
    public void onPause(@NonNull LifecycleOwner owner) {
        mReceiver.register(false);
    }

+1 −2
Original line number Diff line number Diff line
@@ -49,8 +49,7 @@ public class RemoteVolumeSeekBarPreference extends VolumeSeekBarPreference {
    }

    @Override
    protected void init() {
        if (mSeekBar == null) return;
    protected void onBindViewHolder() {
        setContinuousUpdates(true);
        updateIconView();
        updateSuppressionText();
+6 −9
Original line number Diff line number Diff line
@@ -27,16 +27,17 @@ import android.os.Looper;
import android.os.Message;
import android.service.notification.NotificationListenerService;

import androidx.lifecycle.OnLifecycleEvent;
import androidx.annotation.NonNull;
import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner;

import com.android.settings.R;
import com.android.settingslib.core.lifecycle.Lifecycle;

/**
 * This slider represents both ring and notification
 */
public class RingVolumePreferenceController extends
        RingerModeAffectedVolumePreferenceController {
        RingerModeAffectedVolumePreferenceController implements DefaultLifecycleObserver {

    private static final String KEY_RING_VOLUME = "ring_volume";
    private static final String TAG = "RingVolumePreferenceController";
@@ -58,10 +59,8 @@ public class RingVolumePreferenceController extends
        updateRingerMode();
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    @Override
    public void onResume() {
        super.onResume();
    public void onResume(@NonNull LifecycleOwner owner) {
        mReceiver.register(true);
        updateEffectsSuppressor();
        selectPreferenceIconState();
@@ -71,10 +70,8 @@ public class RingVolumePreferenceController extends
        }
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    @Override
    public void onPause() {
        super.onPause();
    public void onPause(@NonNull LifecycleOwner owner) {
        mReceiver.register(false);
    }

+6 −9
Original line number Diff line number Diff line
@@ -27,17 +27,18 @@ import android.os.Looper;
import android.os.Message;
import android.service.notification.NotificationListenerService;

import androidx.lifecycle.OnLifecycleEvent;
import androidx.annotation.NonNull;
import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner;

import com.android.settings.R;
import com.android.settingslib.core.lifecycle.Lifecycle;

/**
 * This slider is used to represent ring volume when ring is separated from notification
 */
// LINT.IfChange
public class SeparateRingVolumePreferenceController extends
        RingerModeAffectedVolumePreferenceController {
        RingerModeAffectedVolumePreferenceController implements DefaultLifecycleObserver {

    private static final String KEY_SEPARATE_RING_VOLUME = "separate_ring_volume";
    private static final String TAG = "SeparateRingVolumePreferenceController";
@@ -59,10 +60,8 @@ public class SeparateRingVolumePreferenceController extends
        updateRingerMode();
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    @Override
    public void onResume() {
        super.onResume();
    public void onResume(@NonNull LifecycleOwner owner) {
        mReceiver.register(true);
        updateEffectsSuppressor();
        selectPreferenceIconState();
@@ -73,10 +72,8 @@ public class SeparateRingVolumePreferenceController extends
        }
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    @Override
    public void onPause() {
        super.onPause();
    public void onPause(@NonNull LifecycleOwner owner) {
        mReceiver.register(false);
    }

+6 −18
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import com.android.settings.widget.UpdatableListPreferenceDialogFragment;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.instrumentation.Instrumentable;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.preference.UtilsKt;
import com.android.settingslib.search.SearchIndexable;

import java.util.ArrayList;
@@ -113,14 +114,12 @@ public class SoundSettings extends DashboardFragment implements OnActivityResult
        if (phoneRingTonePreference != null && openPhoneRingtonePicker) {
            onPreferenceTreeClick(phoneRingTonePreference);
        }
        if (isCatalystEnabled()) {
            for (String key : getPreferenceKeysInHierarchy()) {
                Preference preference = findPreference(key);
        UtilsKt.forEachRecursively(getPreferenceScreen(), preference -> {
            if (preference instanceof VolumeSeekBarPreference) {
                ((VolumeSeekBarPreference) preference).setCallback(mVolumeCallback);
            }
            }
        }
            return null;
        });
    }

    @Override
@@ -203,22 +202,11 @@ public class SoundSettings extends DashboardFragment implements OnActivityResult
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        ArrayList<VolumeSeekBarPreferenceController> volumeControllers = new ArrayList<>();
        volumeControllers.add(use(AlarmVolumePreferenceController.class));
        volumeControllers.add(use(MediaVolumePreferenceController.class));
        volumeControllers.add(use(SeparateRingVolumePreferenceController.class));
        volumeControllers.add(use(NotificationVolumePreferenceController.class));
        volumeControllers.add(use(CallVolumePreferenceController.class));

        use(HandsFreeProfileOutputPreferenceController.class).setCallback(listPreference ->
                onPreferenceDataChanged(listPreference));
        mHfpOutputControllerKey =
                use(HandsFreeProfileOutputPreferenceController.class).getPreferenceKey();

        for (VolumeSeekBarPreferenceController controller : volumeControllers) {
            controller.setCallback(mVolumeCallback);
            getSettingsLifecycle().addObserver(controller);
        }
    }

    // === Volumes ===
Loading