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

Commit 1e2d5e88 authored by Kyunglyul Hyun's avatar Kyunglyul Hyun Committed by Android (Google) Code Review
Browse files

Merge "MediaRouterService binds services when necessary"

parents 8f77cb9b 9f889ca4
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -73,6 +73,8 @@ interface IMediaRouterService {
    void unregisterManager(IMediaRouter2Manager manager);
    void setRouteVolumeWithManager(IMediaRouter2Manager manager, int requestId,
            in MediaRoute2Info route, int volume);
    void startScan(IMediaRouter2Manager manager);
    void stopScan(IMediaRouter2Manager manager);

    void requestCreateSessionWithManager(IMediaRouter2Manager manager, int requestId,
            in RoutingSessionInfo oldSession, in @nullable MediaRoute2Info route);
+30 −0
Original line number Diff line number Diff line
@@ -146,6 +146,36 @@ public final class MediaRouter2Manager {
        }
    }

    /**
     * Starts scanning remote routes.
     * @see #stopScan(String)
     */
    public void startScan() {
        Client client = getOrCreateClient();
        if (client != null) {
            try {
                mMediaRouterService.startScan(client);
            } catch (RemoteException ex) {
                Log.e(TAG, "Unable to get sessions. Service probably died.", ex);
            }
        }
    }

    /**
     * Stops scanning remote routes to reduce resource consumption.
     * @see #startScan(String)
     */
    public void stopScan() {
        Client client = getOrCreateClient();
        if (client != null) {
            try {
                mMediaRouterService.stopScan(client);
            } catch (RemoteException ex) {
                Log.e(TAG, "Unable to get sessions. Service probably died.", ex);
            }
        }
    }

    /**
     * Gets a {@link android.media.session.MediaController} associated with the
     * given routing session.
+1 −0
Original line number Diff line number Diff line
@@ -153,6 +153,7 @@ public final class RouteDiscoveryPreference implements Parcelable {
            return false;
        }
        RouteDiscoveryPreference other = (RouteDiscoveryPreference) o;
        //TODO: Make this order-free
        return Objects.equals(mPreferredFeatures, other.mPreferredFeatures)
                && mShouldPerformActiveScan == other.mShouldPerformActiveScan;
    }
+7 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.media.MediaMetadata;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.media.RoutingSessionInfo;
import android.media.session.MediaController;
import android.media.session.MediaSessionManager;
@@ -76,6 +77,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback {
    private final List<MediaDevice> mGroupMediaDevices = new CopyOnWriteArrayList<>();
    private final boolean mAboveStatusbar;
    private final NotificationEntryManager mNotificationEntryManager;
    private final MediaRouter2Manager mRouterManager;
    @VisibleForTesting
    final List<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>();

@@ -104,6 +106,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback {
        mLocalMediaManager = new LocalMediaManager(mContext, lbm, imm, packageName);
        mMetricLogger = new MediaOutputMetricLogger(mContext, mPackageName);
        mUiEventLogger = uiEventLogger;
        mRouterManager = MediaRouter2Manager.getInstance(mContext);
    }

    void start(@NonNull Callback cb) {
@@ -134,6 +137,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback {
        mLocalMediaManager.stopScan();
        mLocalMediaManager.registerCallback(this);
        mLocalMediaManager.startScan();
        mRouterManager.startScan();
    }

    void stop() {
@@ -144,6 +148,9 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback {
            mLocalMediaManager.unregisterCallback(this);
            mLocalMediaManager.stopScan();
        }
        if (mRouterManager != null) {
            mRouterManager.stopScan();
        }
        mMediaDevices.clear();
    }

+1 −1
Original line number Diff line number Diff line
@@ -77,7 +77,7 @@ abstract class MediaRoute2Provider {
    @NonNull
    public List<RoutingSessionInfo> getSessionInfos() {
        synchronized (mLock) {
            return mSessionInfos;
            return new ArrayList<>(mSessionInfos);
        }
    }

Loading