Loading core/java/android/hardware/display/DisplayManager.java +63 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,28 @@ public final class DisplayManager { private final Object mLock = new Object(); private final SparseArray<Display> mDisplays = new SparseArray<Display>(); /** * Broadcast receiver that indicates when the Wifi display status changes. * <p> * The status is provided as a {@link WifiDisplayStatus} object in the * {@link #EXTRA_WIFI_DISPLAY_STATUS} extra. * </p><p> * This broadcast is only sent to registered receivers with the * {@link android.Manifest.permission#CONFIGURE_WIFI_DISPLAY} permission and can * only be sent by the system. * </p> * @hide */ public static final String ACTION_WIFI_DISPLAY_STATUS_CHANGED = "android.hardware.display.action.WIFI_DISPLAY_STATUS_CHANGED"; /** * Contains a {@link WifiDisplayStatus} object. * @hide */ public static final String EXTRA_WIFI_DISPLAY_STATUS = "android.hardware.display.extra.WIFI_DISPLAY_STATUS"; /** @hide */ public DisplayManager(Context context) { mContext = context; Loading Loading @@ -126,6 +148,47 @@ public final class DisplayManager { mGlobal.unregisterDisplayListener(listener); } /** * Initiates a fresh scan of availble Wifi displays. * The results are sent as a {@link #ACTION_WIFI_DISPLAY_STATUS_CHANGED} broadcast. * @hide */ public void scanWifiDisplays() { mGlobal.scanWifiDisplays(); } /** * Connects to a Wifi display. * The results are sent as a {@link #ACTION_WIFI_DISPLAY_STATUS_CHANGED} broadcast. * * @param deviceAddress The MAC address of the device to which we should connect. * @hide */ public void connectWifiDisplay(String deviceAddress) { mGlobal.connectWifiDisplay(deviceAddress); } /** * Disconnects from the current Wifi display. * The results are sent as a {@link #ACTION_WIFI_DISPLAY_STATUS_CHANGED} broadcast. * @hide */ public void disconnectWifiDisplay() { mGlobal.disconnectWifiDisplay(); } /** * Gets the current Wifi display status. * Watch for changes in the status by registering a broadcast receiver for * {@link #ACTION_WIFI_DISPLAY_STATUS_CHANGED}. * * @return The current Wifi display status. * @hide */ public WifiDisplayStatus getWifiDisplayStatus() { return mGlobal.getWifiDisplayStatus(); } /** * Listens for changes in available display devices. */ Loading core/java/android/hardware/display/DisplayManagerGlobal.java +37 −0 Original line number Diff line number Diff line Loading @@ -253,6 +253,43 @@ public final class DisplayManagerGlobal { } } public void scanWifiDisplays() { try { mDm.scanWifiDisplays(); } catch (RemoteException ex) { Log.e(TAG, "Failed to scan for Wifi displays.", ex); } } public void connectWifiDisplay(String deviceAddress) { if (deviceAddress == null) { throw new IllegalArgumentException("deviceAddress must not be null"); } try { mDm.connectWifiDisplay(deviceAddress); } catch (RemoteException ex) { Log.e(TAG, "Failed to connect to Wifi display " + deviceAddress + ".", ex); } } public void disconnectWifiDisplay() { try { mDm.disconnectWifiDisplay(); } catch (RemoteException ex) { Log.e(TAG, "Failed to disconnect from Wifi display.", ex); } } public WifiDisplayStatus getWifiDisplayStatus() { try { return mDm.getWifiDisplayStatus(); } catch (RemoteException ex) { Log.e(TAG, "Failed to get Wifi display status.", ex); return new WifiDisplayStatus(); } } private final class DisplayManagerCallback extends IDisplayManagerCallback.Stub { @Override public void onDisplayEvent(int displayId, int event) { Loading core/java/android/hardware/display/IDisplayManager.aidl +14 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package android.hardware.display; import android.hardware.display.IDisplayManagerCallback; import android.hardware.display.WifiDisplay; import android.hardware.display.WifiDisplayStatus; import android.view.DisplayInfo; /** @hide */ Loading @@ -25,4 +27,16 @@ interface IDisplayManager { int[] getDisplayIds(); void registerCallback(in IDisplayManagerCallback callback); // Requires CONFIGURE_WIFI_DISPLAY permission. void scanWifiDisplays(); // Requires CONFIGURE_WIFI_DISPLAY permission. void connectWifiDisplay(String address); // Requires CONFIGURE_WIFI_DISPLAY permission. void disconnectWifiDisplay(); // Requires CONFIGURE_WIFI_DISPLAY permission. WifiDisplayStatus getWifiDisplayStatus(); } core/java/android/hardware/display/WifiDisplay.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.display; parcelable WifiDisplay; core/java/android/hardware/display/WifiDisplay.java 0 → 100644 +107 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.display; import android.os.Parcel; import android.os.Parcelable; /** * Describes the properties of a Wifi display. * <p> * This object is immutable. * </p> * * @hide */ public final class WifiDisplay implements Parcelable { private final String mDeviceAddress; private final String mDeviceName; public static final WifiDisplay[] EMPTY_ARRAY = new WifiDisplay[0]; public static final Creator<WifiDisplay> CREATOR = new Creator<WifiDisplay>() { public WifiDisplay createFromParcel(Parcel in) { String deviceAddress = in.readString(); String deviceName = in.readString(); return new WifiDisplay(deviceAddress, deviceName); } public WifiDisplay[] newArray(int size) { return size == 0 ? EMPTY_ARRAY : new WifiDisplay[size]; } }; public WifiDisplay(String deviceAddress, String deviceName) { if (deviceAddress == null) { throw new IllegalArgumentException("deviceAddress must not be null"); } if (deviceName == null) { throw new IllegalArgumentException("deviceName must not be null"); } mDeviceAddress = deviceAddress; mDeviceName = deviceName; } /** * Gets the MAC address of the Wifi display device. */ public String getDeviceAddress() { return mDeviceAddress; } /** * Gets the name of the Wifi display device. */ public String getDeviceName() { return mDeviceName; } @Override public boolean equals(Object o) { return o instanceof WifiDisplay && equals((WifiDisplay)o); } public boolean equals(WifiDisplay other) { return other != null && mDeviceAddress.equals(other.mDeviceAddress) && mDeviceName.equals(other.mDeviceName); } @Override public int hashCode() { // The address on its own should be sufficiently unique for hashing purposes. return mDeviceAddress.hashCode(); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mDeviceAddress); dest.writeString(mDeviceName); } @Override public int describeContents() { return 0; } // For debugging purposes only. @Override public String toString() { return mDeviceName + " (" + mDeviceAddress + ")"; } } Loading
core/java/android/hardware/display/DisplayManager.java +63 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,28 @@ public final class DisplayManager { private final Object mLock = new Object(); private final SparseArray<Display> mDisplays = new SparseArray<Display>(); /** * Broadcast receiver that indicates when the Wifi display status changes. * <p> * The status is provided as a {@link WifiDisplayStatus} object in the * {@link #EXTRA_WIFI_DISPLAY_STATUS} extra. * </p><p> * This broadcast is only sent to registered receivers with the * {@link android.Manifest.permission#CONFIGURE_WIFI_DISPLAY} permission and can * only be sent by the system. * </p> * @hide */ public static final String ACTION_WIFI_DISPLAY_STATUS_CHANGED = "android.hardware.display.action.WIFI_DISPLAY_STATUS_CHANGED"; /** * Contains a {@link WifiDisplayStatus} object. * @hide */ public static final String EXTRA_WIFI_DISPLAY_STATUS = "android.hardware.display.extra.WIFI_DISPLAY_STATUS"; /** @hide */ public DisplayManager(Context context) { mContext = context; Loading Loading @@ -126,6 +148,47 @@ public final class DisplayManager { mGlobal.unregisterDisplayListener(listener); } /** * Initiates a fresh scan of availble Wifi displays. * The results are sent as a {@link #ACTION_WIFI_DISPLAY_STATUS_CHANGED} broadcast. * @hide */ public void scanWifiDisplays() { mGlobal.scanWifiDisplays(); } /** * Connects to a Wifi display. * The results are sent as a {@link #ACTION_WIFI_DISPLAY_STATUS_CHANGED} broadcast. * * @param deviceAddress The MAC address of the device to which we should connect. * @hide */ public void connectWifiDisplay(String deviceAddress) { mGlobal.connectWifiDisplay(deviceAddress); } /** * Disconnects from the current Wifi display. * The results are sent as a {@link #ACTION_WIFI_DISPLAY_STATUS_CHANGED} broadcast. * @hide */ public void disconnectWifiDisplay() { mGlobal.disconnectWifiDisplay(); } /** * Gets the current Wifi display status. * Watch for changes in the status by registering a broadcast receiver for * {@link #ACTION_WIFI_DISPLAY_STATUS_CHANGED}. * * @return The current Wifi display status. * @hide */ public WifiDisplayStatus getWifiDisplayStatus() { return mGlobal.getWifiDisplayStatus(); } /** * Listens for changes in available display devices. */ Loading
core/java/android/hardware/display/DisplayManagerGlobal.java +37 −0 Original line number Diff line number Diff line Loading @@ -253,6 +253,43 @@ public final class DisplayManagerGlobal { } } public void scanWifiDisplays() { try { mDm.scanWifiDisplays(); } catch (RemoteException ex) { Log.e(TAG, "Failed to scan for Wifi displays.", ex); } } public void connectWifiDisplay(String deviceAddress) { if (deviceAddress == null) { throw new IllegalArgumentException("deviceAddress must not be null"); } try { mDm.connectWifiDisplay(deviceAddress); } catch (RemoteException ex) { Log.e(TAG, "Failed to connect to Wifi display " + deviceAddress + ".", ex); } } public void disconnectWifiDisplay() { try { mDm.disconnectWifiDisplay(); } catch (RemoteException ex) { Log.e(TAG, "Failed to disconnect from Wifi display.", ex); } } public WifiDisplayStatus getWifiDisplayStatus() { try { return mDm.getWifiDisplayStatus(); } catch (RemoteException ex) { Log.e(TAG, "Failed to get Wifi display status.", ex); return new WifiDisplayStatus(); } } private final class DisplayManagerCallback extends IDisplayManagerCallback.Stub { @Override public void onDisplayEvent(int displayId, int event) { Loading
core/java/android/hardware/display/IDisplayManager.aidl +14 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package android.hardware.display; import android.hardware.display.IDisplayManagerCallback; import android.hardware.display.WifiDisplay; import android.hardware.display.WifiDisplayStatus; import android.view.DisplayInfo; /** @hide */ Loading @@ -25,4 +27,16 @@ interface IDisplayManager { int[] getDisplayIds(); void registerCallback(in IDisplayManagerCallback callback); // Requires CONFIGURE_WIFI_DISPLAY permission. void scanWifiDisplays(); // Requires CONFIGURE_WIFI_DISPLAY permission. void connectWifiDisplay(String address); // Requires CONFIGURE_WIFI_DISPLAY permission. void disconnectWifiDisplay(); // Requires CONFIGURE_WIFI_DISPLAY permission. WifiDisplayStatus getWifiDisplayStatus(); }
core/java/android/hardware/display/WifiDisplay.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.display; parcelable WifiDisplay;
core/java/android/hardware/display/WifiDisplay.java 0 → 100644 +107 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.display; import android.os.Parcel; import android.os.Parcelable; /** * Describes the properties of a Wifi display. * <p> * This object is immutable. * </p> * * @hide */ public final class WifiDisplay implements Parcelable { private final String mDeviceAddress; private final String mDeviceName; public static final WifiDisplay[] EMPTY_ARRAY = new WifiDisplay[0]; public static final Creator<WifiDisplay> CREATOR = new Creator<WifiDisplay>() { public WifiDisplay createFromParcel(Parcel in) { String deviceAddress = in.readString(); String deviceName = in.readString(); return new WifiDisplay(deviceAddress, deviceName); } public WifiDisplay[] newArray(int size) { return size == 0 ? EMPTY_ARRAY : new WifiDisplay[size]; } }; public WifiDisplay(String deviceAddress, String deviceName) { if (deviceAddress == null) { throw new IllegalArgumentException("deviceAddress must not be null"); } if (deviceName == null) { throw new IllegalArgumentException("deviceName must not be null"); } mDeviceAddress = deviceAddress; mDeviceName = deviceName; } /** * Gets the MAC address of the Wifi display device. */ public String getDeviceAddress() { return mDeviceAddress; } /** * Gets the name of the Wifi display device. */ public String getDeviceName() { return mDeviceName; } @Override public boolean equals(Object o) { return o instanceof WifiDisplay && equals((WifiDisplay)o); } public boolean equals(WifiDisplay other) { return other != null && mDeviceAddress.equals(other.mDeviceAddress) && mDeviceName.equals(other.mDeviceName); } @Override public int hashCode() { // The address on its own should be sufficiently unique for hashing purposes. return mDeviceAddress.hashCode(); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mDeviceAddress); dest.writeString(mDeviceName); } @Override public int describeContents() { return 0; } // For debugging purposes only. @Override public String toString() { return mDeviceName + " (" + mDeviceAddress + ")"; } }