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

Commit 32cf6e78 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: I36fbdacd601a4e44680d2e1e20c5c11faa6d0d42
parents d0ac0e19 c9c67d25
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) {