Loading core/java/android/hardware/hdmi/HdmiClient.java +2 −2 Original line number Diff line number Diff line Loading @@ -28,10 +28,10 @@ public abstract class HdmiClient { /** * Returns the active source information. * * @return {@link HdmiCecDeviceInfo} object that describes the active source * @return {@link HdmiDeviceInfo} object that describes the active source * or active routing path */ public HdmiCecDeviceInfo getActiveSource() { public HdmiDeviceInfo getActiveSource() { try { return mService.getActiveSource(); } catch (RemoteException e) { Loading core/java/android/hardware/hdmi/HdmiControlManager.java +8 −8 Original line number Diff line number Diff line Loading @@ -228,8 +228,8 @@ public final class HdmiControlManager { // Do nothing. } } mHasTvDevice = hasDeviceType(types, HdmiCecDeviceInfo.DEVICE_TV); mHasPlaybackDevice = hasDeviceType(types, HdmiCecDeviceInfo.DEVICE_PLAYBACK); mHasTvDevice = hasDeviceType(types, HdmiDeviceInfo.DEVICE_TV); mHasPlaybackDevice = hasDeviceType(types, HdmiDeviceInfo.DEVICE_PLAYBACK); } private static boolean hasDeviceType(int[] types, int type) { Loading @@ -249,8 +249,8 @@ public final class HdmiControlManager { * * @param type CEC device type * @return {@link HdmiClient} instance. {@code null} on failure. * @see {@link HdmiCecDeviceInfo#DEVICE_PLAYBACK} * @see {@link HdmiCecDeviceInfo#DEVICE_TV} * See {@link HdmiDeviceInfo#DEVICE_PLAYBACK} * See {@link HdmiDeviceInfo#DEVICE_TV} */ @Nullable public HdmiClient getClient(int type) { Loading @@ -258,9 +258,9 @@ public final class HdmiControlManager { return null; } switch (type) { case HdmiCecDeviceInfo.DEVICE_TV: case HdmiDeviceInfo.DEVICE_TV: return mHasTvDevice ? new HdmiTvClient(mService) : null; case HdmiCecDeviceInfo.DEVICE_PLAYBACK: case HdmiDeviceInfo.DEVICE_PLAYBACK: return mHasPlaybackDevice ? new HdmiPlaybackClient(mService) : null; default: return null; Loading @@ -278,7 +278,7 @@ public final class HdmiControlManager { */ @Nullable public HdmiPlaybackClient getPlaybackClient() { return (HdmiPlaybackClient) getClient(HdmiCecDeviceInfo.DEVICE_PLAYBACK); return (HdmiPlaybackClient) getClient(HdmiDeviceInfo.DEVICE_PLAYBACK); } /** Loading @@ -292,7 +292,7 @@ public final class HdmiControlManager { */ @Nullable public HdmiTvClient getTvClient() { return (HdmiTvClient) getClient(HdmiCecDeviceInfo.DEVICE_TV); return (HdmiTvClient) getClient(HdmiDeviceInfo.DEVICE_TV); } /** Loading core/java/android/hardware/hdmi/HdmiCecDeviceInfo.aidl→core/java/android/hardware/hdmi/HdmiDeviceInfo.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -16,4 +16,4 @@ package android.hardware.hdmi; parcelable HdmiCecDeviceInfo; parcelable HdmiDeviceInfo; core/java/android/hardware/hdmi/HdmiCecDeviceInfo.java→core/java/android/hardware/hdmi/HdmiDeviceInfo.java +411 −0 Original line number Diff line number Diff line Loading @@ -21,16 +21,16 @@ import android.os.Parcel; import android.os.Parcelable; /** * A class to encapsulate device information for HDMI-CEC. This container * include basic information such as logical address, physical address and * device type, and additional information like vendor id and osd name. * Also used to keep the information of non-CEC devices for which only * port ID, physical address are meaningful. * A class to encapsulate device information for HDMI devices including CEC and MHL. In terms of * CEC, this container includes basic information such as logical address, physical address and * device type, and additional information like vendor id and osd name. In terms of MHL device, this * container includes adopter id and device type. Otherwise, it keeps the information of other type * devices for which only port ID, physical address are meaningful. * * @hide */ @SystemApi public final class HdmiCecDeviceInfo implements Parcelable { public class HdmiDeviceInfo implements Parcelable { /** TV device type. */ public static final int DEVICE_TV = 0; Loading Loading @@ -60,14 +60,14 @@ public final class HdmiCecDeviceInfo implements Parcelable { public static final int DEVICE_INACTIVE = -1; /** * Logical address used to indicate the source comes from internal device. * The logical address of TV(0) is used. * Logical address used to indicate the source comes from internal device. The logical address * of TV(0) is used. */ public static final int ADDR_INTERNAL = 0; /** * Physical address used to indicate the source comes from internal device. * The physical address of TV(0) is used. * Physical address used to indicate the source comes from internal device. The physical address * of TV(0) is used. */ public static final int PATH_INTERNAL = 0x0000; Loading @@ -77,36 +77,60 @@ public final class HdmiCecDeviceInfo implements Parcelable { /** Invalid port ID */ public static final int PORT_INVALID = -1; // Logical address, physical address, device type, vendor id and display name // are immutable value. private final int mLogicalAddress; private static final int HDMI_DEVICE_TYPE_OTHER = 0; private static final int HDMI_DEVICE_TYPE_CEC = 1; private static final int HDMI_DEVICE_TYPE_MHL = 2; // Common parameters for all device. private final int mHdmiDeviceType; private final int mPhysicalAddress; private final int mPortId; // CEC only parameters. private final int mLogicalAddress; private final int mDeviceType; private final int mVendorId; private final String mDisplayName; private final boolean mIsCecDevice; private final int mDevicePowerStatus; // MHL only parameters. private final int mDeviceId; private final int mAdopterId; /** * A helper class to deserialize {@link HdmiCecDeviceInfo} for a parcel. * A helper class to deserialize {@link HdmiDeviceInfo} for a parcel. */ public static final Parcelable.Creator<HdmiCecDeviceInfo> CREATOR = new Parcelable.Creator<HdmiCecDeviceInfo>() { public static final Parcelable.Creator<HdmiDeviceInfo> CREATOR = new Parcelable.Creator<HdmiDeviceInfo>() { @Override public HdmiCecDeviceInfo createFromParcel(Parcel source) { int logicalAddress = source.readInt(); public HdmiDeviceInfo createFromParcel(Parcel source) { int hdmiDeviceType = source.readInt(); int physicalAddress = source.readInt(); int portId = source.readInt(); switch (hdmiDeviceType) { case HDMI_DEVICE_TYPE_CEC: int logicalAddress = source.readInt(); int deviceType = source.readInt(); int vendorId = source.readInt(); int powerStatus = source.readInt(); String displayName = source.readString(); return new HdmiCecDeviceInfo(logicalAddress, physicalAddress, portId, deviceType, vendorId, displayName); return new HdmiDeviceInfo(logicalAddress, physicalAddress, portId, deviceType, vendorId, displayName, powerStatus); case HDMI_DEVICE_TYPE_MHL: int deviceId = source.readInt(); int adopterId = source.readInt(); return new HdmiDeviceInfo(physicalAddress, portId, adopterId, deviceId); case HDMI_DEVICE_TYPE_OTHER: return new HdmiDeviceInfo(physicalAddress, portId); default: return null; } } @Override public HdmiCecDeviceInfo[] newArray(int size) { return new HdmiCecDeviceInfo[size]; public HdmiDeviceInfo[] newArray(int size) { return new HdmiDeviceInfo[size]; } }; Loading @@ -119,38 +143,91 @@ public final class HdmiCecDeviceInfo implements Parcelable { * @param deviceType type of device * @param vendorId vendor id of device. Used for vendor specific command. * @param displayName name of device * @param powerStatus device power status * @hide */ public HdmiCecDeviceInfo(int logicalAddress, int physicalAddress, int portId, int deviceType, int vendorId, String displayName) { mLogicalAddress = logicalAddress; public HdmiDeviceInfo(int logicalAddress, int physicalAddress, int portId, int deviceType, int vendorId, String displayName, int powerStatus) { mHdmiDeviceType = HDMI_DEVICE_TYPE_CEC; mPhysicalAddress = physicalAddress; mPortId = portId; mLogicalAddress = logicalAddress; mDeviceType = deviceType; mDisplayName = displayName; mVendorId = vendorId; mIsCecDevice = true; mDevicePowerStatus = powerStatus; mDisplayName = displayName; mDeviceId = -1; mAdopterId = -1; } /** * Constructor. Used to initialize the instance for non-CEC device. * Constructor. Used to initialize the instance for CEC device. * * @param logicalAddress logical address of HDMI-CEC device * @param physicalAddress physical address of HDMI-CEC device * @param portId HDMI port ID (1 for HDMI1) * @param deviceType type of device * @param vendorId vendor id of device. Used for vendor specific command. * @param displayName name of device * @hide */ public HdmiDeviceInfo(int logicalAddress, int physicalAddress, int portId, int deviceType, int vendorId, String displayName) { this(logicalAddress, physicalAddress, portId, deviceType, vendorId, displayName, HdmiControlManager.POWER_STATUS_UNKNOWN); } /** * Constructor. Used to initialize the instance for other device. * * @param physicalAddress physical address of HDMI device * @param portId HDMI port ID (1 for HDMI1) * @hide */ public HdmiCecDeviceInfo(int physicalAddress, int portId) { public HdmiDeviceInfo(int physicalAddress, int portId) { mHdmiDeviceType = HDMI_DEVICE_TYPE_OTHER; mPhysicalAddress = physicalAddress; mPortId = portId; mLogicalAddress = -1; mDeviceType = DEVICE_RESERVED; mVendorId = 0; mDevicePowerStatus = HdmiControlManager.POWER_STATUS_UNKNOWN; mDisplayName = "HDMI" + portId; mDeviceId = -1; mAdopterId = -1; } /** * Constructor. Used to initialize the instance for MHL device. * * @param physicalAddress physical address of HDMI device * @param portId portId HDMI port ID (1 for HDMI1) * @param adopterId adopter id of MHL * @param deviceId device id of MHL * @hide */ public HdmiDeviceInfo(int physicalAddress, int portId, int adopterId, int deviceId) { mHdmiDeviceType = HDMI_DEVICE_TYPE_MHL; mPhysicalAddress = physicalAddress; mPortId = portId; mLogicalAddress = -1; mDeviceType = DEVICE_RESERVED; mDisplayName = null; mVendorId = 0; mIsCecDevice = false; mDevicePowerStatus = HdmiControlManager.POWER_STATUS_UNKNOWN; mDisplayName = "MHL"; mDeviceId = adopterId; mAdopterId = deviceId; } /** * Return the logical address of the device. * Return the CEC logical address of the device. */ public int getLogicalAddress() { return mLogicalAddress; Loading @@ -171,13 +248,41 @@ public final class HdmiCecDeviceInfo implements Parcelable { } /** * Return type of the device. For more details, refer constants between * {@link DEVICE_TV} and {@link DEVICE_INACTIVE}. * Return CEC type of the device. For more details, refer constants between {@link #DEVICE_TV} * and {@link #DEVICE_INACTIVE}. */ public int getDeviceType() { return mDeviceType; } /** * Return device's power status. It should be one of the following values. * <ul> * <li>{@link HdmiControlManager#POWER_STATUS_ON} * <li>{@link HdmiControlManager#POWER_STATUS_STANDBY} * <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_ON} * <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_STANDBY} * <li>{@link HdmiControlManager#POWER_STATUS_UNKNOWN} * </ul> */ public int getDevicePowerStatus() { return mDevicePowerStatus; } /** * Return MHL device id. Return -1 for non-MHL device. */ public int getDeviceId() { return mDeviceId; } /** * Return MHL adopter id. Return -1 for non-MHL device. */ public int getAdopterId() { return mAdopterId; } /** * Return {@code true} if the device is of a type that can be an input source. */ Loading @@ -188,11 +293,19 @@ public final class HdmiCecDeviceInfo implements Parcelable { } /** * Return {@code true} if the device represents an HDMI-CEC device. {@code false} * if the device is either MHL or non-CEC device. * Return {@code true} if the device represents an HDMI-CEC device. {@code false} if the device * is either MHL or other device. */ public boolean isCecDevice() { return mIsCecDevice; return mHdmiDeviceType == HDMI_DEVICE_TYPE_CEC; } /** * Return {@code true} if the device represents an MHL device. {@code false} if the device is * either CEC or other device. */ public boolean isMhlDevice() { return mHdmiDeviceType == HDMI_DEVICE_TYPE_MHL; } /** Loading @@ -203,17 +316,16 @@ public final class HdmiCecDeviceInfo implements Parcelable { } /** * Return vendor id of the device. Vendor id is used to distinguish devices * built by other manufactures. This is required for vendor-specific command * on CEC standard. * Return vendor id of the device. Vendor id is used to distinguish devices built by other * manufactures. This is required for vendor-specific command on CEC standard. */ public int getVendorId() { return mVendorId; } /** * Describe the kinds of special objects contained in this Parcelable's * marshalled representation. * Describe the kinds of special objects contained in this Parcelable's marshalled * representation. */ @Override public int describeContents() { Loading @@ -224,50 +336,76 @@ public final class HdmiCecDeviceInfo implements Parcelable { * Serialize this object into a {@link Parcel}. * * @param dest The Parcel in which the object should be written. * @param flags Additional flags about how the object should be written. * May be 0 or {@link Parcelable#PARCELABLE_WRITE_RETURN_VALUE}. * @param flags Additional flags about how the object should be written. May be 0 or * {@link Parcelable#PARCELABLE_WRITE_RETURN_VALUE}. */ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mLogicalAddress); dest.writeInt(mHdmiDeviceType); dest.writeInt(mPhysicalAddress); dest.writeInt(mPortId); switch (mHdmiDeviceType) { case HDMI_DEVICE_TYPE_CEC: dest.writeInt(mLogicalAddress); dest.writeInt(mDeviceType); dest.writeInt(mVendorId); dest.writeInt(mDevicePowerStatus); dest.writeString(mDisplayName); break; case HDMI_DEVICE_TYPE_MHL: dest.writeInt(mDeviceId); dest.writeInt(mAdopterId); break; default: // no-op } } @Override public String toString() { StringBuffer s = new StringBuffer(); if (isCecDevice()) { switch (mHdmiDeviceType) { case HDMI_DEVICE_TYPE_CEC: s.append("CEC: "); s.append("logical_address: ").append(mLogicalAddress).append(", "); s.append("physical_address: ").append(mPhysicalAddress).append(", "); s.append("port_id: ").append(mPortId).append(", "); s.append("device_type: ").append(mDeviceType).append(", "); s.append("vendor_id: ").append(mVendorId).append(", "); s.append("display_name: ").append(mDisplayName); } else { s.append("Non-CEC: "); s.append("physical_address: ").append(mPhysicalAddress).append(", "); s.append("port_id: ").append(mPortId).append(", "); s.append("display_name: ").append(mDisplayName).append(", "); s.append("power_status: ").append(mDevicePowerStatus).append(", "); break; case HDMI_DEVICE_TYPE_MHL: s.append("MHL: "); break; case HDMI_DEVICE_TYPE_OTHER: s.append("Other: "); s.append("device_id: ").append(mDeviceId).append(", "); s.append("adopter_id: ").append(mAdopterId).append(", "); break; default: return ""; } s.append("physical_address: ").append(mPhysicalAddress).append(", "); s.append("port_id: ").append(mPortId); return s.toString(); } @Override public boolean equals(Object obj) { if (!(obj instanceof HdmiCecDeviceInfo)) { if (!(obj instanceof HdmiDeviceInfo)) { return false; } HdmiCecDeviceInfo other = (HdmiCecDeviceInfo) obj; return mLogicalAddress == other.mLogicalAddress HdmiDeviceInfo other = (HdmiDeviceInfo) obj; return mHdmiDeviceType == other.mHdmiDeviceType && mPhysicalAddress == other.mPhysicalAddress && mPortId == other.mPortId && mLogicalAddress == other.mLogicalAddress && mDeviceType == other.mDeviceType && mVendorId == other.mVendorId && mDisplayName.equals(other.mDisplayName); && mDevicePowerStatus == other.mDevicePowerStatus && mDisplayName.equals(other.mDisplayName) && mDeviceId == other.mDeviceId && mAdopterId == other.mAdopterId; } } core/java/android/hardware/hdmi/HdmiPlaybackClient.java +9 −7 Original line number Diff line number Diff line Loading @@ -52,12 +52,14 @@ public final class HdmiPlaybackClient extends HdmiClient { /** * Called when display device status is reported. * * @param status display device status * @see {@link HdmiControlManager#POWER_STATUS_ON} * @see {@link HdmiControlManager#POWER_STATUS_STANDBY} * @see {@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_ON} * @see {@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_STANDBY} * @see {@link HdmiControlManager#POWER_STATUS_UNKNOWN} * @param status display device status. It should be one of the following values. * <ul> * <li>{@link HdmiControlManager#POWER_STATUS_ON} * <li>{@link HdmiControlManager#POWER_STATUS_STANDBY} * <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_ON} * <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_STANDBY} * <li>{@link HdmiControlManager#POWER_STATUS_UNKNOWN} * </ul> */ public void onComplete(int status); } Loading @@ -84,7 +86,7 @@ public final class HdmiPlaybackClient extends HdmiClient { @Override public int getDeviceType() { return HdmiCecDeviceInfo.DEVICE_PLAYBACK; return HdmiDeviceInfo.DEVICE_PLAYBACK; } /** Loading Loading
core/java/android/hardware/hdmi/HdmiClient.java +2 −2 Original line number Diff line number Diff line Loading @@ -28,10 +28,10 @@ public abstract class HdmiClient { /** * Returns the active source information. * * @return {@link HdmiCecDeviceInfo} object that describes the active source * @return {@link HdmiDeviceInfo} object that describes the active source * or active routing path */ public HdmiCecDeviceInfo getActiveSource() { public HdmiDeviceInfo getActiveSource() { try { return mService.getActiveSource(); } catch (RemoteException e) { Loading
core/java/android/hardware/hdmi/HdmiControlManager.java +8 −8 Original line number Diff line number Diff line Loading @@ -228,8 +228,8 @@ public final class HdmiControlManager { // Do nothing. } } mHasTvDevice = hasDeviceType(types, HdmiCecDeviceInfo.DEVICE_TV); mHasPlaybackDevice = hasDeviceType(types, HdmiCecDeviceInfo.DEVICE_PLAYBACK); mHasTvDevice = hasDeviceType(types, HdmiDeviceInfo.DEVICE_TV); mHasPlaybackDevice = hasDeviceType(types, HdmiDeviceInfo.DEVICE_PLAYBACK); } private static boolean hasDeviceType(int[] types, int type) { Loading @@ -249,8 +249,8 @@ public final class HdmiControlManager { * * @param type CEC device type * @return {@link HdmiClient} instance. {@code null} on failure. * @see {@link HdmiCecDeviceInfo#DEVICE_PLAYBACK} * @see {@link HdmiCecDeviceInfo#DEVICE_TV} * See {@link HdmiDeviceInfo#DEVICE_PLAYBACK} * See {@link HdmiDeviceInfo#DEVICE_TV} */ @Nullable public HdmiClient getClient(int type) { Loading @@ -258,9 +258,9 @@ public final class HdmiControlManager { return null; } switch (type) { case HdmiCecDeviceInfo.DEVICE_TV: case HdmiDeviceInfo.DEVICE_TV: return mHasTvDevice ? new HdmiTvClient(mService) : null; case HdmiCecDeviceInfo.DEVICE_PLAYBACK: case HdmiDeviceInfo.DEVICE_PLAYBACK: return mHasPlaybackDevice ? new HdmiPlaybackClient(mService) : null; default: return null; Loading @@ -278,7 +278,7 @@ public final class HdmiControlManager { */ @Nullable public HdmiPlaybackClient getPlaybackClient() { return (HdmiPlaybackClient) getClient(HdmiCecDeviceInfo.DEVICE_PLAYBACK); return (HdmiPlaybackClient) getClient(HdmiDeviceInfo.DEVICE_PLAYBACK); } /** Loading @@ -292,7 +292,7 @@ public final class HdmiControlManager { */ @Nullable public HdmiTvClient getTvClient() { return (HdmiTvClient) getClient(HdmiCecDeviceInfo.DEVICE_TV); return (HdmiTvClient) getClient(HdmiDeviceInfo.DEVICE_TV); } /** Loading
core/java/android/hardware/hdmi/HdmiCecDeviceInfo.aidl→core/java/android/hardware/hdmi/HdmiDeviceInfo.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -16,4 +16,4 @@ package android.hardware.hdmi; parcelable HdmiCecDeviceInfo; parcelable HdmiDeviceInfo;
core/java/android/hardware/hdmi/HdmiCecDeviceInfo.java→core/java/android/hardware/hdmi/HdmiDeviceInfo.java +411 −0 Original line number Diff line number Diff line Loading @@ -21,16 +21,16 @@ import android.os.Parcel; import android.os.Parcelable; /** * A class to encapsulate device information for HDMI-CEC. This container * include basic information such as logical address, physical address and * device type, and additional information like vendor id and osd name. * Also used to keep the information of non-CEC devices for which only * port ID, physical address are meaningful. * A class to encapsulate device information for HDMI devices including CEC and MHL. In terms of * CEC, this container includes basic information such as logical address, physical address and * device type, and additional information like vendor id and osd name. In terms of MHL device, this * container includes adopter id and device type. Otherwise, it keeps the information of other type * devices for which only port ID, physical address are meaningful. * * @hide */ @SystemApi public final class HdmiCecDeviceInfo implements Parcelable { public class HdmiDeviceInfo implements Parcelable { /** TV device type. */ public static final int DEVICE_TV = 0; Loading Loading @@ -60,14 +60,14 @@ public final class HdmiCecDeviceInfo implements Parcelable { public static final int DEVICE_INACTIVE = -1; /** * Logical address used to indicate the source comes from internal device. * The logical address of TV(0) is used. * Logical address used to indicate the source comes from internal device. The logical address * of TV(0) is used. */ public static final int ADDR_INTERNAL = 0; /** * Physical address used to indicate the source comes from internal device. * The physical address of TV(0) is used. * Physical address used to indicate the source comes from internal device. The physical address * of TV(0) is used. */ public static final int PATH_INTERNAL = 0x0000; Loading @@ -77,36 +77,60 @@ public final class HdmiCecDeviceInfo implements Parcelable { /** Invalid port ID */ public static final int PORT_INVALID = -1; // Logical address, physical address, device type, vendor id and display name // are immutable value. private final int mLogicalAddress; private static final int HDMI_DEVICE_TYPE_OTHER = 0; private static final int HDMI_DEVICE_TYPE_CEC = 1; private static final int HDMI_DEVICE_TYPE_MHL = 2; // Common parameters for all device. private final int mHdmiDeviceType; private final int mPhysicalAddress; private final int mPortId; // CEC only parameters. private final int mLogicalAddress; private final int mDeviceType; private final int mVendorId; private final String mDisplayName; private final boolean mIsCecDevice; private final int mDevicePowerStatus; // MHL only parameters. private final int mDeviceId; private final int mAdopterId; /** * A helper class to deserialize {@link HdmiCecDeviceInfo} for a parcel. * A helper class to deserialize {@link HdmiDeviceInfo} for a parcel. */ public static final Parcelable.Creator<HdmiCecDeviceInfo> CREATOR = new Parcelable.Creator<HdmiCecDeviceInfo>() { public static final Parcelable.Creator<HdmiDeviceInfo> CREATOR = new Parcelable.Creator<HdmiDeviceInfo>() { @Override public HdmiCecDeviceInfo createFromParcel(Parcel source) { int logicalAddress = source.readInt(); public HdmiDeviceInfo createFromParcel(Parcel source) { int hdmiDeviceType = source.readInt(); int physicalAddress = source.readInt(); int portId = source.readInt(); switch (hdmiDeviceType) { case HDMI_DEVICE_TYPE_CEC: int logicalAddress = source.readInt(); int deviceType = source.readInt(); int vendorId = source.readInt(); int powerStatus = source.readInt(); String displayName = source.readString(); return new HdmiCecDeviceInfo(logicalAddress, physicalAddress, portId, deviceType, vendorId, displayName); return new HdmiDeviceInfo(logicalAddress, physicalAddress, portId, deviceType, vendorId, displayName, powerStatus); case HDMI_DEVICE_TYPE_MHL: int deviceId = source.readInt(); int adopterId = source.readInt(); return new HdmiDeviceInfo(physicalAddress, portId, adopterId, deviceId); case HDMI_DEVICE_TYPE_OTHER: return new HdmiDeviceInfo(physicalAddress, portId); default: return null; } } @Override public HdmiCecDeviceInfo[] newArray(int size) { return new HdmiCecDeviceInfo[size]; public HdmiDeviceInfo[] newArray(int size) { return new HdmiDeviceInfo[size]; } }; Loading @@ -119,38 +143,91 @@ public final class HdmiCecDeviceInfo implements Parcelable { * @param deviceType type of device * @param vendorId vendor id of device. Used for vendor specific command. * @param displayName name of device * @param powerStatus device power status * @hide */ public HdmiCecDeviceInfo(int logicalAddress, int physicalAddress, int portId, int deviceType, int vendorId, String displayName) { mLogicalAddress = logicalAddress; public HdmiDeviceInfo(int logicalAddress, int physicalAddress, int portId, int deviceType, int vendorId, String displayName, int powerStatus) { mHdmiDeviceType = HDMI_DEVICE_TYPE_CEC; mPhysicalAddress = physicalAddress; mPortId = portId; mLogicalAddress = logicalAddress; mDeviceType = deviceType; mDisplayName = displayName; mVendorId = vendorId; mIsCecDevice = true; mDevicePowerStatus = powerStatus; mDisplayName = displayName; mDeviceId = -1; mAdopterId = -1; } /** * Constructor. Used to initialize the instance for non-CEC device. * Constructor. Used to initialize the instance for CEC device. * * @param logicalAddress logical address of HDMI-CEC device * @param physicalAddress physical address of HDMI-CEC device * @param portId HDMI port ID (1 for HDMI1) * @param deviceType type of device * @param vendorId vendor id of device. Used for vendor specific command. * @param displayName name of device * @hide */ public HdmiDeviceInfo(int logicalAddress, int physicalAddress, int portId, int deviceType, int vendorId, String displayName) { this(logicalAddress, physicalAddress, portId, deviceType, vendorId, displayName, HdmiControlManager.POWER_STATUS_UNKNOWN); } /** * Constructor. Used to initialize the instance for other device. * * @param physicalAddress physical address of HDMI device * @param portId HDMI port ID (1 for HDMI1) * @hide */ public HdmiCecDeviceInfo(int physicalAddress, int portId) { public HdmiDeviceInfo(int physicalAddress, int portId) { mHdmiDeviceType = HDMI_DEVICE_TYPE_OTHER; mPhysicalAddress = physicalAddress; mPortId = portId; mLogicalAddress = -1; mDeviceType = DEVICE_RESERVED; mVendorId = 0; mDevicePowerStatus = HdmiControlManager.POWER_STATUS_UNKNOWN; mDisplayName = "HDMI" + portId; mDeviceId = -1; mAdopterId = -1; } /** * Constructor. Used to initialize the instance for MHL device. * * @param physicalAddress physical address of HDMI device * @param portId portId HDMI port ID (1 for HDMI1) * @param adopterId adopter id of MHL * @param deviceId device id of MHL * @hide */ public HdmiDeviceInfo(int physicalAddress, int portId, int adopterId, int deviceId) { mHdmiDeviceType = HDMI_DEVICE_TYPE_MHL; mPhysicalAddress = physicalAddress; mPortId = portId; mLogicalAddress = -1; mDeviceType = DEVICE_RESERVED; mDisplayName = null; mVendorId = 0; mIsCecDevice = false; mDevicePowerStatus = HdmiControlManager.POWER_STATUS_UNKNOWN; mDisplayName = "MHL"; mDeviceId = adopterId; mAdopterId = deviceId; } /** * Return the logical address of the device. * Return the CEC logical address of the device. */ public int getLogicalAddress() { return mLogicalAddress; Loading @@ -171,13 +248,41 @@ public final class HdmiCecDeviceInfo implements Parcelable { } /** * Return type of the device. For more details, refer constants between * {@link DEVICE_TV} and {@link DEVICE_INACTIVE}. * Return CEC type of the device. For more details, refer constants between {@link #DEVICE_TV} * and {@link #DEVICE_INACTIVE}. */ public int getDeviceType() { return mDeviceType; } /** * Return device's power status. It should be one of the following values. * <ul> * <li>{@link HdmiControlManager#POWER_STATUS_ON} * <li>{@link HdmiControlManager#POWER_STATUS_STANDBY} * <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_ON} * <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_STANDBY} * <li>{@link HdmiControlManager#POWER_STATUS_UNKNOWN} * </ul> */ public int getDevicePowerStatus() { return mDevicePowerStatus; } /** * Return MHL device id. Return -1 for non-MHL device. */ public int getDeviceId() { return mDeviceId; } /** * Return MHL adopter id. Return -1 for non-MHL device. */ public int getAdopterId() { return mAdopterId; } /** * Return {@code true} if the device is of a type that can be an input source. */ Loading @@ -188,11 +293,19 @@ public final class HdmiCecDeviceInfo implements Parcelable { } /** * Return {@code true} if the device represents an HDMI-CEC device. {@code false} * if the device is either MHL or non-CEC device. * Return {@code true} if the device represents an HDMI-CEC device. {@code false} if the device * is either MHL or other device. */ public boolean isCecDevice() { return mIsCecDevice; return mHdmiDeviceType == HDMI_DEVICE_TYPE_CEC; } /** * Return {@code true} if the device represents an MHL device. {@code false} if the device is * either CEC or other device. */ public boolean isMhlDevice() { return mHdmiDeviceType == HDMI_DEVICE_TYPE_MHL; } /** Loading @@ -203,17 +316,16 @@ public final class HdmiCecDeviceInfo implements Parcelable { } /** * Return vendor id of the device. Vendor id is used to distinguish devices * built by other manufactures. This is required for vendor-specific command * on CEC standard. * Return vendor id of the device. Vendor id is used to distinguish devices built by other * manufactures. This is required for vendor-specific command on CEC standard. */ public int getVendorId() { return mVendorId; } /** * Describe the kinds of special objects contained in this Parcelable's * marshalled representation. * Describe the kinds of special objects contained in this Parcelable's marshalled * representation. */ @Override public int describeContents() { Loading @@ -224,50 +336,76 @@ public final class HdmiCecDeviceInfo implements Parcelable { * Serialize this object into a {@link Parcel}. * * @param dest The Parcel in which the object should be written. * @param flags Additional flags about how the object should be written. * May be 0 or {@link Parcelable#PARCELABLE_WRITE_RETURN_VALUE}. * @param flags Additional flags about how the object should be written. May be 0 or * {@link Parcelable#PARCELABLE_WRITE_RETURN_VALUE}. */ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mLogicalAddress); dest.writeInt(mHdmiDeviceType); dest.writeInt(mPhysicalAddress); dest.writeInt(mPortId); switch (mHdmiDeviceType) { case HDMI_DEVICE_TYPE_CEC: dest.writeInt(mLogicalAddress); dest.writeInt(mDeviceType); dest.writeInt(mVendorId); dest.writeInt(mDevicePowerStatus); dest.writeString(mDisplayName); break; case HDMI_DEVICE_TYPE_MHL: dest.writeInt(mDeviceId); dest.writeInt(mAdopterId); break; default: // no-op } } @Override public String toString() { StringBuffer s = new StringBuffer(); if (isCecDevice()) { switch (mHdmiDeviceType) { case HDMI_DEVICE_TYPE_CEC: s.append("CEC: "); s.append("logical_address: ").append(mLogicalAddress).append(", "); s.append("physical_address: ").append(mPhysicalAddress).append(", "); s.append("port_id: ").append(mPortId).append(", "); s.append("device_type: ").append(mDeviceType).append(", "); s.append("vendor_id: ").append(mVendorId).append(", "); s.append("display_name: ").append(mDisplayName); } else { s.append("Non-CEC: "); s.append("physical_address: ").append(mPhysicalAddress).append(", "); s.append("port_id: ").append(mPortId).append(", "); s.append("display_name: ").append(mDisplayName).append(", "); s.append("power_status: ").append(mDevicePowerStatus).append(", "); break; case HDMI_DEVICE_TYPE_MHL: s.append("MHL: "); break; case HDMI_DEVICE_TYPE_OTHER: s.append("Other: "); s.append("device_id: ").append(mDeviceId).append(", "); s.append("adopter_id: ").append(mAdopterId).append(", "); break; default: return ""; } s.append("physical_address: ").append(mPhysicalAddress).append(", "); s.append("port_id: ").append(mPortId); return s.toString(); } @Override public boolean equals(Object obj) { if (!(obj instanceof HdmiCecDeviceInfo)) { if (!(obj instanceof HdmiDeviceInfo)) { return false; } HdmiCecDeviceInfo other = (HdmiCecDeviceInfo) obj; return mLogicalAddress == other.mLogicalAddress HdmiDeviceInfo other = (HdmiDeviceInfo) obj; return mHdmiDeviceType == other.mHdmiDeviceType && mPhysicalAddress == other.mPhysicalAddress && mPortId == other.mPortId && mLogicalAddress == other.mLogicalAddress && mDeviceType == other.mDeviceType && mVendorId == other.mVendorId && mDisplayName.equals(other.mDisplayName); && mDevicePowerStatus == other.mDevicePowerStatus && mDisplayName.equals(other.mDisplayName) && mDeviceId == other.mDeviceId && mAdopterId == other.mAdopterId; } }
core/java/android/hardware/hdmi/HdmiPlaybackClient.java +9 −7 Original line number Diff line number Diff line Loading @@ -52,12 +52,14 @@ public final class HdmiPlaybackClient extends HdmiClient { /** * Called when display device status is reported. * * @param status display device status * @see {@link HdmiControlManager#POWER_STATUS_ON} * @see {@link HdmiControlManager#POWER_STATUS_STANDBY} * @see {@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_ON} * @see {@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_STANDBY} * @see {@link HdmiControlManager#POWER_STATUS_UNKNOWN} * @param status display device status. It should be one of the following values. * <ul> * <li>{@link HdmiControlManager#POWER_STATUS_ON} * <li>{@link HdmiControlManager#POWER_STATUS_STANDBY} * <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_ON} * <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_STANDBY} * <li>{@link HdmiControlManager#POWER_STATUS_UNKNOWN} * </ul> */ public void onComplete(int status); } Loading @@ -84,7 +86,7 @@ public final class HdmiPlaybackClient extends HdmiClient { @Override public int getDeviceType() { return HdmiCecDeviceInfo.DEVICE_PLAYBACK; return HdmiDeviceInfo.DEVICE_PLAYBACK; } /** Loading