Merge "Adding public API to expose DisplayInfo.deviceProductInfo" into sc-dev
This commit is contained in:
@@ -16,40 +16,69 @@
|
||||
|
||||
package android.hardware.display;
|
||||
|
||||
import android.annotation.IntDef;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Product-specific information about the display or the directly connected device on the
|
||||
* display chain. For example, if the display is transitively connected, this field may contain
|
||||
* product information about the intermediate device.
|
||||
* @hide
|
||||
*/
|
||||
public final class DeviceProductInfo implements Parcelable {
|
||||
/** @hide */
|
||||
@IntDef(prefix = {"CONNECTION_TO_SINK_"}, value = {
|
||||
CONNECTION_TO_SINK_UNKNOWN,
|
||||
CONNECTION_TO_SINK_BUILT_IN,
|
||||
CONNECTION_TO_SINK_DIRECT,
|
||||
CONNECTION_TO_SINK_TRANSITIVE
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface ConnectionToSinkType { }
|
||||
|
||||
/** The device connection to the display sink is unknown. */
|
||||
public static final int CONNECTION_TO_SINK_UNKNOWN =
|
||||
IDeviceProductInfoConstants.CONNECTION_TO_SINK_UNKNOWN;
|
||||
|
||||
/** The display sink is built-in to the device */
|
||||
public static final int CONNECTION_TO_SINK_BUILT_IN =
|
||||
IDeviceProductInfoConstants.CONNECTION_TO_SINK_BUILT_IN;
|
||||
|
||||
/** The device is directly connected to the display sink. */
|
||||
public static final int CONNECTION_TO_SINK_DIRECT =
|
||||
IDeviceProductInfoConstants.CONNECTION_TO_SINK_DIRECT;
|
||||
|
||||
/** The device is transitively connected to the display sink. */
|
||||
public static final int CONNECTION_TO_SINK_TRANSITIVE =
|
||||
IDeviceProductInfoConstants.CONNECTION_TO_SINK_TRANSITIVE;
|
||||
|
||||
private final String mName;
|
||||
private final String mManufacturerPnpId;
|
||||
private final String mProductId;
|
||||
private final Integer mModelYear;
|
||||
private final ManufactureDate mManufactureDate;
|
||||
private final int[] mRelativeAddress;
|
||||
private final @ConnectionToSinkType int mConnectionToSinkType;
|
||||
|
||||
/** @hide */
|
||||
public DeviceProductInfo(
|
||||
String name,
|
||||
String manufacturerPnpId,
|
||||
String productId,
|
||||
Integer modelYear,
|
||||
ManufactureDate manufactureDate,
|
||||
int[] relativeAddress) {
|
||||
int connectionToSinkType) {
|
||||
this.mName = name;
|
||||
this.mManufacturerPnpId = manufacturerPnpId;
|
||||
this.mProductId = productId;
|
||||
this.mModelYear = modelYear;
|
||||
this.mManufactureDate = manufactureDate;
|
||||
this.mRelativeAddress = relativeAddress;
|
||||
this.mConnectionToSinkType = connectionToSinkType;
|
||||
}
|
||||
|
||||
private DeviceProductInfo(Parcel in) {
|
||||
@@ -58,12 +87,13 @@ public final class DeviceProductInfo implements Parcelable {
|
||||
mProductId = (String) in.readValue(null);
|
||||
mModelYear = (Integer) in.readValue(null);
|
||||
mManufactureDate = (ManufactureDate) in.readValue(null);
|
||||
mRelativeAddress = in.createIntArray();
|
||||
mConnectionToSinkType = in.readInt();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Display name.
|
||||
*/
|
||||
@Nullable
|
||||
public String getName() {
|
||||
return mName;
|
||||
}
|
||||
@@ -71,6 +101,7 @@ public final class DeviceProductInfo implements Parcelable {
|
||||
/**
|
||||
* @return Manufacturer Plug and Play ID.
|
||||
*/
|
||||
@NonNull
|
||||
public String getManufacturerPnpId() {
|
||||
return mManufacturerPnpId;
|
||||
}
|
||||
@@ -78,32 +109,58 @@ public final class DeviceProductInfo implements Parcelable {
|
||||
/**
|
||||
* @return Manufacturer product ID.
|
||||
*/
|
||||
@NonNull
|
||||
public String getProductId() {
|
||||
return mProductId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Model year of the device. Typically exactly one of model year or
|
||||
* manufacture date will be present.
|
||||
* @return Model year of the device. Return -1 if not available. Typically,
|
||||
* one of model year or manufacture year is available.
|
||||
*/
|
||||
public Integer getModelYear() {
|
||||
return mModelYear;
|
||||
public int getModelYear() {
|
||||
return mModelYear != null ? mModelYear : -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The year of manufacture, or -1 it is not available. Typically,
|
||||
* one of model year or manufacture year is available.
|
||||
*/
|
||||
public int getManufactureYear() {
|
||||
if (mManufactureDate == null) {
|
||||
return -1;
|
||||
}
|
||||
return mManufactureDate.mYear != null ? mManufactureDate.mYear : -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The week of manufacture, or -1 it is not available. Typically,
|
||||
* not present if model year is available.
|
||||
*/
|
||||
public int getManufactureWeek() {
|
||||
if (mManufactureDate == null) {
|
||||
return -1;
|
||||
}
|
||||
return mManufactureDate.mWeek != null ? mManufactureDate.mWeek : -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Manufacture date. Typically exactly one of model year or manufacture
|
||||
* date will be present.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public ManufactureDate getManufactureDate() {
|
||||
return mManufactureDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Relative address in the display network. For example, for HDMI connected devices this
|
||||
* can be its physical address. Each component of the address is in the range [0, 255].
|
||||
* @return How the current device is connected to the display sink. For example, the display
|
||||
* can be connected immediately to the device or there can be a receiver in between.
|
||||
*/
|
||||
public int[] getRelativeAddress() {
|
||||
return mRelativeAddress;
|
||||
@ConnectionToSinkType
|
||||
public int getConnectionToSinkType() {
|
||||
return mConnectionToSinkType;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -119,8 +176,8 @@ public final class DeviceProductInfo implements Parcelable {
|
||||
+ mModelYear
|
||||
+ ", manufactureDate="
|
||||
+ mManufactureDate
|
||||
+ ", relativeAddress="
|
||||
+ Arrays.toString(mRelativeAddress)
|
||||
+ ", connectionToSinkType="
|
||||
+ mConnectionToSinkType
|
||||
+ '}';
|
||||
}
|
||||
|
||||
@@ -134,16 +191,16 @@ public final class DeviceProductInfo implements Parcelable {
|
||||
&& Objects.equals(mProductId, that.mProductId)
|
||||
&& Objects.equals(mModelYear, that.mModelYear)
|
||||
&& Objects.equals(mManufactureDate, that.mManufactureDate)
|
||||
&& Arrays.equals(mRelativeAddress, that.mRelativeAddress);
|
||||
&& mConnectionToSinkType == that.mConnectionToSinkType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(mName, mManufacturerPnpId, mProductId, mModelYear, mManufactureDate,
|
||||
Arrays.hashCode(mRelativeAddress));
|
||||
mConnectionToSinkType);
|
||||
}
|
||||
|
||||
public static final Creator<DeviceProductInfo> CREATOR =
|
||||
@NonNull public static final Creator<DeviceProductInfo> CREATOR =
|
||||
new Creator<DeviceProductInfo>() {
|
||||
@Override
|
||||
public DeviceProductInfo createFromParcel(Parcel in) {
|
||||
@@ -162,13 +219,13 @@ public final class DeviceProductInfo implements Parcelable {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
public void writeToParcel(@NonNull Parcel dest, int flags) {
|
||||
dest.writeString(mName);
|
||||
dest.writeString(mManufacturerPnpId);
|
||||
dest.writeValue(mProductId);
|
||||
dest.writeValue(mModelYear);
|
||||
dest.writeValue(mManufactureDate);
|
||||
dest.writeIntArray(mRelativeAddress);
|
||||
dest.writeInt(mConnectionToSinkType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user