diff options
8 files changed, 172 insertions, 122 deletions
diff --git a/core/java/android/hardware/display/WifiDisplay.java b/core/java/android/hardware/display/WifiDisplay.java index 339fd6b246cc..af5a84e61116 100644 --- a/core/java/android/hardware/display/WifiDisplay.java +++ b/core/java/android/hardware/display/WifiDisplay.java @@ -33,7 +33,9 @@ public final class WifiDisplay implements Parcelable { private final String mDeviceAddress; private final String mDeviceName; private final String mDeviceAlias; + private final boolean mIsAvailable; private final boolean mCanConnect; + private final boolean mIsRemembered; public static final WifiDisplay[] EMPTY_ARRAY = new WifiDisplay[0]; @@ -42,9 +44,11 @@ public final class WifiDisplay implements Parcelable { String deviceAddress = in.readString(); String deviceName = in.readString(); String deviceAlias = in.readString(); + boolean isAvailable = (in.readInt() != 0); boolean canConnect = (in.readInt() != 0); - return new WifiDisplay(deviceAddress, deviceName, - deviceAlias, canConnect); + boolean isRemembered = (in.readInt() != 0); + return new WifiDisplay(deviceAddress, deviceName, deviceAlias, + isAvailable, canConnect, isRemembered); } public WifiDisplay[] newArray(int size) { @@ -52,12 +56,8 @@ public final class WifiDisplay implements Parcelable { } }; - public WifiDisplay(String deviceAddress, String deviceName, String deviceAlias) { - this(deviceAddress, deviceName, deviceAlias, false); - } - - public WifiDisplay(String deviceAddress, String deviceName, - String deviceAlias, boolean canConnect) { + public WifiDisplay(String deviceAddress, String deviceName, String deviceAlias, + boolean available, boolean canConnect, boolean remembered) { if (deviceAddress == null) { throw new IllegalArgumentException("deviceAddress must not be null"); } @@ -68,7 +68,9 @@ public final class WifiDisplay implements Parcelable { mDeviceAddress = deviceAddress; mDeviceName = deviceName; mDeviceAlias = deviceAlias; + mIsAvailable = available; mCanConnect = canConnect; + mIsRemembered = remembered; } /** @@ -97,13 +99,27 @@ public final class WifiDisplay implements Parcelable { } /** - * Gets the availability of the Wifi display device. + * Returns true if device is available, false otherwise. + */ + public boolean isAvailable() { + return mIsAvailable; + } + + /** + * Returns true if device can be connected to (not in use), false otherwise. */ public boolean canConnect() { return mCanConnect; } /** + * Returns true if device has been remembered, false otherwise. + */ + public boolean isRemembered() { + return mIsRemembered; + } + + /** * Gets the name to show in the UI. * Uses the device alias if available, otherwise uses the device name. */ @@ -116,12 +132,15 @@ public final class WifiDisplay implements Parcelable { return o instanceof WifiDisplay && equals((WifiDisplay)o); } + /** + * Returns true if the two displays have the same identity (address, name and alias). + * This method does not compare the current status of the displays. + */ public boolean equals(WifiDisplay other) { return other != null && mDeviceAddress.equals(other.mDeviceAddress) && mDeviceName.equals(other.mDeviceName) - && Objects.equal(mDeviceAlias, other.mDeviceAlias) - && (mCanConnect == other.mCanConnect); + && Objects.equal(mDeviceAlias, other.mDeviceAlias); } /** @@ -144,7 +163,9 @@ public final class WifiDisplay implements Parcelable { dest.writeString(mDeviceAddress); dest.writeString(mDeviceName); dest.writeString(mDeviceAlias); + dest.writeInt(mIsAvailable ? 1 : 0); dest.writeInt(mCanConnect ? 1 : 0); + dest.writeInt(mIsRemembered ? 1 : 0); } @Override @@ -159,7 +180,8 @@ public final class WifiDisplay implements Parcelable { if (mDeviceAlias != null) { result += ", alias " + mDeviceAlias; } - result += ", canConnect " + mCanConnect; + result += ", isAvailable " + mIsAvailable + ", canConnect " + mCanConnect + + ", isRemembered " + mIsRemembered; return result; } } diff --git a/core/java/android/hardware/display/WifiDisplayStatus.java b/core/java/android/hardware/display/WifiDisplayStatus.java index f7e72c417f77..77acdc04afd2 100644 --- a/core/java/android/hardware/display/WifiDisplayStatus.java +++ b/core/java/android/hardware/display/WifiDisplayStatus.java @@ -20,6 +20,8 @@ import android.os.Parcel; import android.os.Parcelable; import java.util.Arrays; +import java.util.ArrayList; +import java.util.List; /** * Describes the current global state of Wifi display connectivity, including the @@ -35,8 +37,7 @@ public final class WifiDisplayStatus implements Parcelable { private final int mScanState; private final int mActiveDisplayState; private final WifiDisplay mActiveDisplay; - private final WifiDisplay[] mAvailableDisplays; - private final WifiDisplay[] mRememberedDisplays; + private final WifiDisplay[] mDisplays; /** Feature state: Wifi display is not available on this device. */ public static final int FEATURE_STATE_UNAVAILABLE = 0; @@ -70,18 +71,13 @@ public final class WifiDisplayStatus implements Parcelable { activeDisplay = WifiDisplay.CREATOR.createFromParcel(in); } - WifiDisplay[] availableDisplays = WifiDisplay.CREATOR.newArray(in.readInt()); - for (int i = 0; i < availableDisplays.length; i++) { - availableDisplays[i] = WifiDisplay.CREATOR.createFromParcel(in); - } - - WifiDisplay[] rememberedDisplays = WifiDisplay.CREATOR.newArray(in.readInt()); - for (int i = 0; i < rememberedDisplays.length; i++) { - rememberedDisplays[i] = WifiDisplay.CREATOR.createFromParcel(in); + WifiDisplay[] displays = WifiDisplay.CREATOR.newArray(in.readInt()); + for (int i = 0; i < displays.length; i++) { + displays[i] = WifiDisplay.CREATOR.createFromParcel(in); } return new WifiDisplayStatus(featureState, scanState, activeDisplayState, - activeDisplay, availableDisplays, rememberedDisplays); + activeDisplay, displays); } public WifiDisplayStatus[] newArray(int size) { @@ -91,25 +87,20 @@ public final class WifiDisplayStatus implements Parcelable { public WifiDisplayStatus() { this(FEATURE_STATE_UNAVAILABLE, SCAN_STATE_NOT_SCANNING, DISPLAY_STATE_NOT_CONNECTED, - null, WifiDisplay.EMPTY_ARRAY, WifiDisplay.EMPTY_ARRAY); + null, WifiDisplay.EMPTY_ARRAY); } public WifiDisplayStatus(int featureState, int scanState, - int activeDisplayState, WifiDisplay activeDisplay, - WifiDisplay[] availableDisplays, WifiDisplay[] rememberedDisplays) { - if (availableDisplays == null) { - throw new IllegalArgumentException("availableDisplays must not be null"); - } - if (rememberedDisplays == null) { - throw new IllegalArgumentException("rememberedDisplays must not be null"); + int activeDisplayState, WifiDisplay activeDisplay, WifiDisplay[] displays) { + if (displays == null) { + throw new IllegalArgumentException("displays must not be null"); } mFeatureState = featureState; mScanState = scanState; mActiveDisplayState = activeDisplayState; mActiveDisplay = activeDisplay; - mAvailableDisplays = availableDisplays; - mRememberedDisplays = rememberedDisplays; + mDisplays = displays; } /** @@ -152,24 +143,12 @@ public final class WifiDisplayStatus implements Parcelable { } /** - * Gets the list of all available Wifi displays as reported by the most recent - * scan, never null. - * <p> - * Some of these displays may already be remembered, others may be unknown. - * </p> - */ - public WifiDisplay[] getAvailableDisplays() { - return mAvailableDisplays; - } - - /** - * Gets the list of all remembered Wifi displays, never null. - * <p> - * Not all remembered displays will necessarily be available. - * </p> + * Gets the list of Wifi displays, returns a combined list of all available + * Wifi displays as reported by the most recent scan, and all remembered + * Wifi displays (not necessarily available at the time). */ - public WifiDisplay[] getRememberedDisplays() { - return mRememberedDisplays; + public WifiDisplay[] getDisplays() { + return mDisplays; } @Override @@ -185,13 +164,8 @@ public final class WifiDisplayStatus implements Parcelable { dest.writeInt(0); } - dest.writeInt(mAvailableDisplays.length); - for (WifiDisplay display : mAvailableDisplays) { - display.writeToParcel(dest, flags); - } - - dest.writeInt(mRememberedDisplays.length); - for (WifiDisplay display : mRememberedDisplays) { + dest.writeInt(mDisplays.length); + for (WifiDisplay display : mDisplays) { display.writeToParcel(dest, flags); } } @@ -208,8 +182,7 @@ public final class WifiDisplayStatus implements Parcelable { + ", scanState=" + mScanState + ", activeDisplayState=" + mActiveDisplayState + ", activeDisplay=" + mActiveDisplay - + ", availableDisplays=" + Arrays.toString(mAvailableDisplays) - + ", rememberedDisplays=" + Arrays.toString(mRememberedDisplays) + + ", displays=" + Arrays.toString(mDisplays) + "}"; } } diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index d40eb64deb16..3e2d8d377fe6 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -3970,6 +3970,9 @@ <!-- Status message for remote routes that are not available for connection right now --> <string name="media_route_status_not_available">Not available</string> + <!-- Status message for a remote route that is in use (and thus unavailabe) right now --> + <string name="media_route_status_in_use">In use</string> + <!-- Display manager service --> <!-- Name of the built-in display. [CHAR LIMIT=50] --> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index d33a6fa1d3be..5680ce436823 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -850,6 +850,7 @@ <java-symbol type="string" name="media_route_status_connecting" /> <java-symbol type="string" name="media_route_status_available" /> <java-symbol type="string" name="media_route_status_not_available" /> + <java-symbol type="string" name="media_route_status_in_use" /> <java-symbol type="string" name="owner_name" /> <java-symbol type="string" name="config_chooseAccountActivity" /> <java-symbol type="string" name="config_chooseTypeAndAccountActivity" /> diff --git a/media/java/android/media/MediaRouter.java b/media/java/android/media/MediaRouter.java index d653d9470585..420a19525410 100644 --- a/media/java/android/media/MediaRouter.java +++ b/media/java/android/media/MediaRouter.java @@ -876,44 +876,45 @@ public class MediaRouter { boolean wantScan = false; boolean blockScan = false; WifiDisplay[] oldDisplays = oldStatus != null ? - oldStatus.getRememberedDisplays() : WifiDisplay.EMPTY_ARRAY; + oldStatus.getDisplays() : WifiDisplay.EMPTY_ARRAY; WifiDisplay[] newDisplays; - WifiDisplay[] availableDisplays; WifiDisplay activeDisplay; if (newStatus.getFeatureState() == WifiDisplayStatus.FEATURE_STATE_ON) { - newDisplays = newStatus.getRememberedDisplays(); - availableDisplays = newStatus.getAvailableDisplays(); + newDisplays = newStatus.getDisplays(); activeDisplay = newStatus.getActiveDisplay(); } else { - newDisplays = availableDisplays = WifiDisplay.EMPTY_ARRAY; + newDisplays = WifiDisplay.EMPTY_ARRAY; activeDisplay = null; } for (int i = 0; i < newDisplays.length; i++) { final WifiDisplay d = newDisplays[i]; - final boolean available = findMatchingDisplay(d, availableDisplays) != null; - RouteInfo route = findWifiDisplayRoute(d); - if (route == null) { - route = makeWifiDisplayRoute(d, available); - addRouteStatic(route); - wantScan = true; - } else { - updateWifiDisplayRoute(route, d, available, newStatus); - } - if (d.equals(activeDisplay)) { - selectRouteStatic(route.getSupportedTypes(), route); + if (d.isRemembered()) { + RouteInfo route = findWifiDisplayRoute(d); + if (route == null) { + route = makeWifiDisplayRoute(d, newStatus); + addRouteStatic(route); + wantScan = true; + } else { + updateWifiDisplayRoute(route, d, newStatus); + } + if (d.equals(activeDisplay)) { + selectRouteStatic(route.getSupportedTypes(), route); - // Don't scan if we're already connected to a wifi display, - // the scanning process can cause a hiccup with some configurations. - blockScan = true; + // Don't scan if we're already connected to a wifi display, + // the scanning process can cause a hiccup with some configurations. + blockScan = true; + } } } for (int i = 0; i < oldDisplays.length; i++) { final WifiDisplay d = oldDisplays[i]; - final WifiDisplay newDisplay = findMatchingDisplay(d, newDisplays); - if (newDisplay == null) { - removeRoute(findWifiDisplayRoute(d)); + if (d.isRemembered()) { + final WifiDisplay newDisplay = findMatchingDisplay(d, newDisplays); + if (newDisplay == null || !newDisplay.isRemembered()) { + removeRoute(findWifiDisplayRoute(d)); + } } } @@ -924,42 +925,20 @@ public class MediaRouter { sStatic.mLastKnownWifiDisplayStatus = newStatus; } - static RouteInfo makeWifiDisplayRoute(WifiDisplay display, boolean available) { - final RouteInfo newRoute = new RouteInfo(sStatic.mSystemCategory); - newRoute.mDeviceAddress = display.getDeviceAddress(); - newRoute.mSupportedTypes = ROUTE_TYPE_LIVE_AUDIO | ROUTE_TYPE_LIVE_VIDEO; - newRoute.mVolumeHandling = RouteInfo.PLAYBACK_VOLUME_FIXED; - newRoute.mPlaybackType = RouteInfo.PLAYBACK_TYPE_REMOTE; - - newRoute.setStatusCode(available ? - RouteInfo.STATUS_AVAILABLE : RouteInfo.STATUS_CONNECTING); - newRoute.mEnabled = available; - - newRoute.mName = display.getFriendlyDisplayName(); - newRoute.mDescription = sStatic.mResources.getText( - com.android.internal.R.string.wireless_display_route_description); - - newRoute.mPresentationDisplay = choosePresentationDisplayForRoute(newRoute, - sStatic.getAllPresentationDisplays()); - return newRoute; - } - - private static void updateWifiDisplayRoute(RouteInfo route, WifiDisplay display, - boolean available, WifiDisplayStatus wifiDisplayStatus) { - final boolean isScanning = - wifiDisplayStatus.getScanState() == WifiDisplayStatus.SCAN_STATE_SCANNING; - - boolean changed = false; + static int getWifiDisplayStatusCode(WifiDisplay d, WifiDisplayStatus wfdStatus) { int newStatus = RouteInfo.STATUS_NONE; - if (available) { - newStatus = isScanning ? RouteInfo.STATUS_SCANNING : RouteInfo.STATUS_AVAILABLE; + if (wfdStatus.getScanState() == WifiDisplayStatus.SCAN_STATE_SCANNING) { + newStatus = RouteInfo.STATUS_SCANNING; + } else if (d.isAvailable()) { + newStatus = d.canConnect() ? + RouteInfo.STATUS_AVAILABLE: RouteInfo.STATUS_IN_USE; } else { newStatus = RouteInfo.STATUS_NOT_AVAILABLE; } - if (display.equals(wifiDisplayStatus.getActiveDisplay())) { - final int activeState = wifiDisplayStatus.getActiveDisplayState(); + if (d.equals(wfdStatus.getActiveDisplay())) { + final int activeState = wfdStatus.getActiveDisplayState(); switch (activeState) { case WifiDisplayStatus.DISPLAY_STATE_CONNECTED: newStatus = RouteInfo.STATUS_NONE; @@ -973,22 +952,51 @@ public class MediaRouter { } } + return newStatus; + } + + static boolean isWifiDisplayEnabled(WifiDisplay d, WifiDisplayStatus wfdStatus) { + return d.isAvailable() && (d.canConnect() || d.equals(wfdStatus.getActiveDisplay())); + } + + static RouteInfo makeWifiDisplayRoute(WifiDisplay display, WifiDisplayStatus wfdStatus) { + final RouteInfo newRoute = new RouteInfo(sStatic.mSystemCategory); + newRoute.mDeviceAddress = display.getDeviceAddress(); + newRoute.mSupportedTypes = ROUTE_TYPE_LIVE_AUDIO | ROUTE_TYPE_LIVE_VIDEO; + newRoute.mVolumeHandling = RouteInfo.PLAYBACK_VOLUME_FIXED; + newRoute.mPlaybackType = RouteInfo.PLAYBACK_TYPE_REMOTE; + + newRoute.setStatusCode(getWifiDisplayStatusCode(display, wfdStatus)); + newRoute.mEnabled = isWifiDisplayEnabled(display, wfdStatus); + newRoute.mName = display.getFriendlyDisplayName(); + newRoute.mDescription = sStatic.mResources.getText( + com.android.internal.R.string.wireless_display_route_description); + + newRoute.mPresentationDisplay = choosePresentationDisplayForRoute(newRoute, + sStatic.getAllPresentationDisplays()); + return newRoute; + } + + private static void updateWifiDisplayRoute( + RouteInfo route, WifiDisplay display, WifiDisplayStatus wfdStatus) { + boolean changed = false; final String newName = display.getFriendlyDisplayName(); if (!route.getName().equals(newName)) { route.mName = newName; changed = true; } - changed |= route.mEnabled != available; - route.mEnabled = available; + boolean enabled = isWifiDisplayEnabled(display, wfdStatus); + changed |= route.mEnabled != enabled; + route.mEnabled = enabled; - changed |= route.setStatusCode(newStatus); + changed |= route.setStatusCode(getWifiDisplayStatusCode(display, wfdStatus)); if (changed) { dispatchRouteChanged(route); } - if (!available && route == sStatic.mSelectedRoute) { + if (!enabled && route == sStatic.mSelectedRoute) { // Oops, no longer available. Reselect the default. final RouteInfo defaultRoute = sStatic.mDefaultAudioVideo; selectRouteStatic(defaultRoute.getSupportedTypes(), defaultRoute); @@ -1069,6 +1077,7 @@ public class MediaRouter { /** @hide */ public static final int STATUS_CONNECTING = 2; /** @hide */ public static final int STATUS_AVAILABLE = 3; /** @hide */ public static final int STATUS_NOT_AVAILABLE = 4; + /** @hide */ public static final int STATUS_IN_USE = 5; private Object mTag; @@ -1180,6 +1189,9 @@ public class MediaRouter { case STATUS_NOT_AVAILABLE: resId = com.android.internal.R.string.media_route_status_not_available; break; + case STATUS_IN_USE: + resId = com.android.internal.R.string.media_route_status_in_use; + break; } mStatus = resId != 0 ? sStatic.mResources.getText(resId) : null; return true; diff --git a/services/java/com/android/server/display/PersistentDataStore.java b/services/java/com/android/server/display/PersistentDataStore.java index d5d71322f4a9..67b36958a35a 100644 --- a/services/java/com/android/server/display/PersistentDataStore.java +++ b/services/java/com/android/server/display/PersistentDataStore.java @@ -106,7 +106,7 @@ final class PersistentDataStore { } if (!Objects.equal(display.getDeviceAlias(), alias)) { return new WifiDisplay(display.getDeviceAddress(), display.getDeviceName(), - alias, display.canConnect()); + alias, display.isAvailable(), display.canConnect(), display.isRemembered()); } } return display; @@ -260,7 +260,8 @@ final class PersistentDataStore { } mRememberedWifiDisplays.add( - new WifiDisplay(deviceAddress, deviceName, deviceAlias)); + new WifiDisplay(deviceAddress, deviceName, deviceAlias, + false, false, false)); } } } diff --git a/services/java/com/android/server/display/WifiDisplayAdapter.java b/services/java/com/android/server/display/WifiDisplayAdapter.java index b655b3ad66fc..4c80cf5c9fef 100644 --- a/services/java/com/android/server/display/WifiDisplayAdapter.java +++ b/services/java/com/android/server/display/WifiDisplayAdapter.java @@ -45,6 +45,8 @@ import android.view.SurfaceControl; import java.io.PrintWriter; import java.util.Arrays; +import java.util.List; +import java.util.ArrayList; import libcore.util.Objects; @@ -88,6 +90,7 @@ final class WifiDisplayAdapter extends DisplayAdapter { private int mScanState; private int mActiveDisplayState; private WifiDisplay mActiveDisplay; + private WifiDisplay[] mDisplays = WifiDisplay.EMPTY_ARRAY; private WifiDisplay[] mAvailableDisplays = WifiDisplay.EMPTY_ARRAY; private WifiDisplay[] mRememberedDisplays = WifiDisplay.EMPTY_ARRAY; @@ -116,6 +119,7 @@ final class WifiDisplayAdapter extends DisplayAdapter { pw.println("mScanState=" + mScanState); pw.println("mActiveDisplayState=" + mActiveDisplayState); pw.println("mActiveDisplay=" + mActiveDisplay); + pw.println("mDisplays=" + Arrays.toString(mDisplays)); pw.println("mAvailableDisplays=" + Arrays.toString(mAvailableDisplays)); pw.println("mRememberedDisplays=" + Arrays.toString(mRememberedDisplays)); pw.println("mPendingStatusChangeBroadcast=" + mPendingStatusChangeBroadcast); @@ -229,7 +233,8 @@ final class WifiDisplayAdapter extends DisplayAdapter { WifiDisplay display = mPersistentDataStore.getRememberedWifiDisplay(address); if (display != null && !Objects.equal(display.getDeviceAlias(), alias)) { - display = new WifiDisplay(address, display.getDeviceName(), alias); + display = new WifiDisplay(address, display.getDeviceName(), alias, + false, false, false); if (mPersistentDataStore.rememberWifiDisplay(display)) { mPersistentDataStore.saveIfNeeded(); updateRememberedDisplaysLocked(); @@ -262,7 +267,7 @@ final class WifiDisplayAdapter extends DisplayAdapter { if (mCurrentStatus == null) { mCurrentStatus = new WifiDisplayStatus( mFeatureState, mScanState, mActiveDisplayState, - mActiveDisplay, mAvailableDisplays, mRememberedDisplays); + mActiveDisplay, mDisplays); } if (DEBUG) { @@ -271,10 +276,36 @@ final class WifiDisplayAdapter extends DisplayAdapter { return mCurrentStatus; } + private void updateDisplaysLocked() { + List<WifiDisplay> displays = new ArrayList<WifiDisplay>( + mAvailableDisplays.length + mRememberedDisplays.length); + boolean[] remembered = new boolean[mAvailableDisplays.length]; + for (WifiDisplay d : mRememberedDisplays) { + boolean available = false; + for (int i = 0; i < mAvailableDisplays.length; i++) { + if (d.equals(mAvailableDisplays[i])) { + remembered[i] = available = true; + break; + } + } + if (!available) { + displays.add(new WifiDisplay(d.getDeviceAddress(), d.getDeviceName(), + d.getDeviceAlias(), false, false, true)); + } + } + for (int i = 0; i < mAvailableDisplays.length; i++) { + WifiDisplay d = mAvailableDisplays[i]; + displays.add(new WifiDisplay(d.getDeviceAddress(), d.getDeviceName(), + d.getDeviceAlias(), true, d.canConnect(), remembered[i])); + } + mDisplays = displays.toArray(WifiDisplay.EMPTY_ARRAY); + } + private void updateRememberedDisplaysLocked() { mRememberedDisplays = mPersistentDataStore.getRememberedWifiDisplays(); mActiveDisplay = mPersistentDataStore.applyWifiDisplayAlias(mActiveDisplay); mAvailableDisplays = mPersistentDataStore.applyWifiDisplayAliases(mAvailableDisplays); + updateDisplaysLocked(); } private void fixRememberedDisplayNamesFromAvailableDisplaysLocked() { @@ -487,11 +518,18 @@ final class WifiDisplayAdapter extends DisplayAdapter { availableDisplays = mPersistentDataStore.applyWifiDisplayAliases( availableDisplays); - if (mScanState != WifiDisplayStatus.SCAN_STATE_NOT_SCANNING - || !Arrays.equals(mAvailableDisplays, availableDisplays)) { + // check if any of the available displays changed canConnect status + boolean changed = !Arrays.equals(mAvailableDisplays, availableDisplays); + for (int i = 0; !changed && i<availableDisplays.length; i++) { + changed = availableDisplays[i].canConnect() + != mAvailableDisplays[i].canConnect(); + } + + if (mScanState != WifiDisplayStatus.SCAN_STATE_NOT_SCANNING || changed) { mScanState = WifiDisplayStatus.SCAN_STATE_NOT_SCANNING; mAvailableDisplays = availableDisplays; fixRememberedDisplayNamesFromAvailableDisplaysLocked(); + updateDisplaysLocked(); scheduleStatusChangedBroadcastLocked(); } } diff --git a/services/java/com/android/server/display/WifiDisplayController.java b/services/java/com/android/server/display/WifiDisplayController.java index e595df400d59..f89917c32917 100644 --- a/services/java/com/android/server/display/WifiDisplayController.java +++ b/services/java/com/android/server/display/WifiDisplayController.java @@ -898,7 +898,7 @@ final class WifiDisplayController implements DumpUtils.Dump { private static WifiDisplay createWifiDisplay(WifiP2pDevice device) { return new WifiDisplay(device.deviceAddress, device.deviceName, null, - device.wfdInfo.isSessionAvailable()); + true, device.wfdInfo.isSessionAvailable(), false); } private final BroadcastReceiver mWifiP2pReceiver = new BroadcastReceiver() { |