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

Commit bc78ae7e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

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

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14326778

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


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


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


        final RouteInfo btRoute = sStatic.mBluetoothA2dpRoute;
        if (sStatic.isPlaybackActive() && sStatic.mBluetoothA2dpRoute != null
        if (sStatic.isPlaybackActive() && btRoute != null && (types & ROUTE_TYPE_LIVE_AUDIO) != 0
                && (types & ROUTE_TYPE_LIVE_AUDIO) != 0
                && (route == btRoute || route == sStatic.mDefaultAudioVideo)) {
                && (route.isBluetooth() || route.isDefault())) {
            try {
            try {
                sStatic.mAudioService.setBluetoothA2dpOn(route == btRoute);
                sStatic.mAudioService.setBluetoothA2dpOn(route.isBluetooth());
            } catch (RemoteException e) {
            } catch (RemoteException e) {
                Log.e(TAG, "Error changing Bluetooth A2DP state", 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 =
        final WifiDisplay activeDisplay =
@@ -1118,7 +1129,8 @@ public class MediaRouter {


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


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


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


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