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

Commit a19c3c30 authored by Wenyu Zhang's avatar Wenyu Zhang Committed by Android (Google) Code Review
Browse files

Merge "[1/2] Support a list of listeners in AudioManagerRouteController" into main

parents 5cb001aa fcf36420
Loading
Loading
Loading
Loading
+15 −3
Original line number Original line Diff line number Diff line
@@ -51,6 +51,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.List;
import java.util.Map;
import java.util.Map;
import java.util.Objects;
import java.util.Objects;
import java.util.concurrent.CopyOnWriteArrayList;


/**
/**
 * Maintains a list of all available routes and supports transfers to any of them.
 * 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 Context mContext;
    @NonNull private final AudioManager mAudioManager;
    @NonNull private final AudioManager mAudioManager;
    @NonNull private final Handler mHandler;
    @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 BluetoothDeviceRoutesManager mBluetoothRouteController;


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


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


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

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


    @RequiresPermission(
    @RequiresPermission(