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

Commit c9c67d25 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Check the device type instead of the object reference" into sc-dev

parents c41c018a 027d957f
Loading
Loading
Loading
Loading
+29 −18
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
public class MediaRouter {
    private static final String TAG = "MediaRouter";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    private static final boolean DEBUG_RESTORE_ROUTE = true;

    static class Static implements DisplayManager.DisplayListener {
        final String mPackageName;
@@ -261,8 +262,8 @@ public class MediaRouter {

            if (audioRoutesChanged) {
                Log.v(TAG, "Audio routes updated: " + newRoutes + ", a2dp=" + isBluetoothA2dpOn());
                if (mSelectedRoute == null || mSelectedRoute == mDefaultAudioVideo
                        || mSelectedRoute == mBluetoothA2dpRoute) {
                if (mSelectedRoute == null || mSelectedRoute.isDefault()
                        || mSelectedRoute.isBluetooth()) {
                    if (forceUseDefaultRoute || mBluetoothA2dpRoute == null) {
                        selectRouteStatic(ROUTE_TYPE_LIVE_AUDIO, mDefaultAudioVideo, false);
                    } else {
@@ -665,13 +666,17 @@ public class MediaRouter {
                    // Skip restoring route if the selected route is not a system audio route,
                    // MediaRouter is initializing, or mClient was changed.
                    if (Client.this != mClient || mSelectedRoute == null
                            || (mSelectedRoute != mDefaultAudioVideo
                                    && mSelectedRoute != mBluetoothA2dpRoute)) {
                            || (!mSelectedRoute.isDefault() && !mSelectedRoute.isBluetooth())) {
                        return;
                    }
                    if (DEBUG) {
                    if (DEBUG_RESTORE_ROUTE) {
                        if (mSelectedRoute.isDefault() && mBluetoothA2dpRoute != null) {
                            Log.d(TAG, "onRestoreRoute() : selectedRoute=" + mSelectedRoute
                                    + ", a2dpRoute=" + mBluetoothA2dpRoute);
                        } else {
                            Log.d(TAG, "onRestoreRoute() : route=" + mSelectedRoute);
                        }
                    }
                    mSelectedRoute.select();
                });
            }
@@ -690,9 +695,12 @@ public class MediaRouter {
            @Override
            public void onGlobalA2dpChanged(boolean a2dpOn) {
                mHandler.post(() -> {
                    if (mSelectedRoute == mDefaultAudioVideo && a2dpOn) {
                    if (mSelectedRoute == null) {
                        return;
                    }
                    if (mSelectedRoute.isDefault() && a2dpOn) {
                        setSelectedRoute(mBluetoothA2dpRoute, /*explicit=*/false);
                    } else if (mSelectedRoute == mBluetoothA2dpRoute && !a2dpOn) {
                    } else if (mSelectedRoute.isBluetooth() && !a2dpOn) {
                        setSelectedRoute(mDefaultAudioVideo, /*explicit=*/false);
                    }
                });
@@ -1057,8 +1065,8 @@ public class MediaRouter {
        final RouteInfo oldRoute = sStatic.mSelectedRoute;
        final RouteInfo currentSystemRoute = sStatic.isBluetoothA2dpOn()
                ? sStatic.mBluetoothA2dpRoute : sStatic.mDefaultAudioVideo;
        boolean wasDefaultOrBluetoothRoute = (oldRoute == sStatic.mDefaultAudioVideo
                || oldRoute == sStatic.mBluetoothA2dpRoute);
        boolean wasDefaultOrBluetoothRoute = (oldRoute != null)
                && (oldRoute.isDefault() || oldRoute.isBluetooth());
        if (oldRoute == route
                && (!wasDefaultOrBluetoothRoute || route == currentSystemRoute)) {
            return;
@@ -1070,14 +1078,17 @@ public class MediaRouter {
            return;
        }

        final RouteInfo btRoute = sStatic.mBluetoothA2dpRoute;
        if (sStatic.isPlaybackActive() && btRoute != null && (types & ROUTE_TYPE_LIVE_AUDIO) != 0
                && (route == btRoute || route == sStatic.mDefaultAudioVideo)) {
        if (sStatic.isPlaybackActive() && sStatic.mBluetoothA2dpRoute != null
                && (types & ROUTE_TYPE_LIVE_AUDIO) != 0
                && (route.isBluetooth() || route.isDefault())) {
            try {
                sStatic.mAudioService.setBluetoothA2dpOn(route == btRoute);
                sStatic.mAudioService.setBluetoothA2dpOn(route.isBluetooth());
            } catch (RemoteException e) {
                Log.e(TAG, "Error changing Bluetooth A2DP state", e);
            }
        } else if (DEBUG_RESTORE_ROUTE) {
            Log.i(TAG, "Skip setBluetoothA2dpOn(): types=" + types + ", isPlaybackActive()="
                    + sStatic.isPlaybackActive() + ", BT route=" + sStatic.mBluetoothA2dpRoute);
        }

        final WifiDisplay activeDisplay =
@@ -1118,7 +1129,8 @@ public class MediaRouter {

    static void selectDefaultRouteStatic() {
        // TODO: Be smarter about the route types here; this selects for all valid.
        if (sStatic.mSelectedRoute != sStatic.mBluetoothA2dpRoute && sStatic.isBluetoothA2dpOn()) {
        if (sStatic.isBluetoothA2dpOn() && sStatic.mSelectedRoute != null
                && !sStatic.mSelectedRoute.isBluetooth()) {
            selectRouteStatic(ROUTE_TYPE_ANY, sStatic.mBluetoothA2dpRoute, false);
        } else {
            selectRouteStatic(ROUTE_TYPE_ANY, sStatic.mDefaultAudioVideo, false);
@@ -1452,8 +1464,7 @@ public class MediaRouter {
        final RouteInfo selectedRoute = sStatic.mSelectedRoute;
        if (selectedRoute == null) return;

        if (selectedRoute == sStatic.mBluetoothA2dpRoute ||
                selectedRoute == sStatic.mDefaultAudioVideo) {
        if (selectedRoute.isBluetooth() || selectedRoute.isDefault()) {
            dispatchRouteVolumeChanged(selectedRoute);
        } else if (sStatic.mBluetoothA2dpRoute != null) {
            dispatchRouteVolumeChanged(sStatic.mIsBluetoothA2dpOn
@@ -2225,7 +2236,7 @@ public class MediaRouter {

        /** @hide */
        public boolean isBluetooth() {
            return this == sStatic.mBluetoothA2dpRoute;
            return mDeviceType == RouteInfo.DEVICE_TYPE_BLUETOOTH;
        }

        /** @hide */
+3 −3
Original line number Diff line number Diff line
@@ -258,16 +258,16 @@ class AudioPlayerStateMonitor {
                if (mActiveAudioUids.size() > 0
                        && !mActiveAudioUids.contains(mSortedAudioPlaybackClientUids.get(0))) {
                    int firstActiveUid = -1;
                    int firatActiveUidIndex = -1;
                    int firstActiveUidIndex = -1;
                    for (int i = 1; i < mSortedAudioPlaybackClientUids.size(); ++i) {
                        int uid = mSortedAudioPlaybackClientUids.get(i);
                        if (mActiveAudioUids.contains(uid)) {
                            firatActiveUidIndex = i;
                            firstActiveUidIndex = i;
                            firstActiveUid = uid;
                            break;
                        }
                    }
                    for (int i = firatActiveUidIndex; i > 0; --i) {
                    for (int i = firstActiveUidIndex; i > 0; --i) {
                        mSortedAudioPlaybackClientUids.set(i,
                                mSortedAudioPlaybackClientUids.get(i - 1));
                    }
+2 −0
Original line number Diff line number Diff line
@@ -907,6 +907,8 @@ public final class MediaRouterService extends IMediaRouterService.Stub
                    mActiveBluetoothDevice = btDevice;
                    mGlobalBluetoothA2dpOn = btDevice != null;
                    if (wasA2dpOn != mGlobalBluetoothA2dpOn) {
                        Slog.d(TAG, "GlobalBluetoothA2dpOn is changed to '"
                                + mGlobalBluetoothA2dpOn + "'");
                        UserRecord userRecord = mUserRecords.get(mCurrentUserId);
                        if (userRecord != null) {
                            for (ClientRecord cr : userRecord.mClientRecords) {