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

Commit fcf36420 authored by Wenyu Zhang's avatar Wenyu Zhang
Browse files

[1/2] Support a list of listeners in AudioManagerRouteController

No functional change. Prepare for singleton AudioManagerRouteController
refactor.

Change-Id: I70d4a7c5aeee110c1ab8d2b503c3217115bf3b86
Bug: b/372868909
Test: locally
Flag: EXEMPT No functional change
parent 84319ceb
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * Maintains a list of all available routes and supports transfers to any of them.
@@ -90,7 +91,11 @@ import java.util.Objects;
    @NonNull private final Context mContext;
    @NonNull private final AudioManager mAudioManager;
    @NonNull private final Handler mHandler;
    @NonNull private final OnDeviceRouteChangedListener mOnDeviceRouteChangedListener;

    @NonNull
    private final CopyOnWriteArrayList<OnDeviceRouteChangedListener>
            mOnDeviceRouteChangedListeners = new CopyOnWriteArrayList<>();

    @NonNull private final BluetoothDeviceRoutesManager mBluetoothRouteController;

    @NonNull private final AudioProductStrategy mStrategyForMedia;
@@ -131,7 +136,7 @@ import java.util.Objects;
        mAudioManager = Objects.requireNonNull(audioManager);
        mHandler = new Handler(Objects.requireNonNull(looper));
        mStrategyForMedia = Objects.requireNonNull(strategyForMedia);
        mOnDeviceRouteChangedListener = Objects.requireNonNull(onDeviceRouteChangedListener);
        mOnDeviceRouteChangedListeners.add(Objects.requireNonNull(onDeviceRouteChangedListener));

        mBuiltInSpeakerSuitabilityStatus =
                DeviceRouteController.getBuiltInSpeakerSuitabilityStatus(mContext);
@@ -144,6 +149,11 @@ import java.util.Objects;
        rebuildAvailableRoutes();
    }

    public void registerRouteChangeListener(
            @NonNull OnDeviceRouteChangedListener onDeviceRouteChangedListener) {
        mOnDeviceRouteChangedListeners.add(onDeviceRouteChangedListener);
    }

    @RequiresPermission(
            anyOf = {
                Manifest.permission.MODIFY_AUDIO_ROUTING,
@@ -281,7 +291,9 @@ import java.util.Objects;
            })
    private void rebuildAvailableRoutesAndNotify() {
        rebuildAvailableRoutes();
        mOnDeviceRouteChangedListener.onDeviceRouteChanged();
        for (OnDeviceRouteChangedListener listener : mOnDeviceRouteChangedListeners) {
            listener.onDeviceRouteChanged();
        }
    }

    @RequiresPermission(