diff options
| author | 2024-02-14 02:55:06 +0000 | |
|---|---|---|
| committer | 2024-02-14 02:55:06 +0000 | |
| commit | ad48b3098e6fdd7b30fb2ee0e178368f95a49767 (patch) | |
| tree | 716e26367726b7de79eb4a3abf9b4a1504ebe65c | |
| parent | 83f0f8c3f7987643e9eb16be4e26e76d36091b2b (diff) | |
| parent | 74509f898275d6db8204a31a2ddc66fe1747f647 (diff) | |
Merge "Add SignalingDataRequest-Info-Response" into main
| -rw-r--r-- | core/api/current.txt | 61 | ||||
| -rw-r--r-- | media/java/android/media/tv/BroadcastInfoRequest.java | 2 | ||||
| -rw-r--r-- | media/java/android/media/tv/BroadcastInfoResponse.java | 2 | ||||
| -rw-r--r-- | media/java/android/media/tv/SignalingDataInfo.java | 132 | ||||
| -rw-r--r-- | media/java/android/media/tv/SignalingDataRequest.java | 220 | ||||
| -rw-r--r-- | media/java/android/media/tv/SignalingDataResponse.java | 64 |
6 files changed, 374 insertions, 107 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index 36063288b538..044499492a9a 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -26915,6 +26915,67 @@ package android.media.tv { field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.SectionResponse> CREATOR; } + @FlaggedApi("android.media.tv.flags.tiaf_v_apis") public final class SignalingDataInfo implements android.os.Parcelable { + ctor public SignalingDataInfo(@NonNull String, @NonNull String, int, int); + ctor public SignalingDataInfo(@NonNull String, @NonNull String, int, int, @NonNull String); + method public int describeContents(); + method @NonNull public String getEncoding(); + method public int getGroup(); + method @NonNull public String getSignalingDataType(); + method @NonNull public String getTable(); + method public int getVersion(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field public static final String CONTENT_ENCODING_BASE64 = "Base64"; + field public static final String CONTENT_ENCODING_UTF_8 = "UTF-8"; + field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.SignalingDataInfo> CREATOR; + field public static final int LLS_NO_GROUP_ID = -1; // 0xffffffff + } + + @FlaggedApi("android.media.tv.flags.tiaf_v_apis") public final class SignalingDataRequest extends android.media.tv.BroadcastInfoRequest implements android.os.Parcelable { + ctor public SignalingDataRequest(int, int, int, @NonNull java.util.List<java.lang.String>); + method public int getGroup(); + method @NonNull public java.util.List<java.lang.String> getSignalingDataTypes(); + field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.SignalingDataRequest> CREATOR; + field public static final int SIGNALING_DATA_NO_GROUP_ID = -1; // 0xffffffff + field public static final String SIGNALING_METADATA_AEAT = "AEAT"; + field public static final String SIGNALING_METADATA_AEI = "AEI"; + field public static final String SIGNALING_METADATA_APD = "APD"; + field public static final String SIGNALING_METADATA_ASD = "ASD"; + field public static final String SIGNALING_METADATA_ASPD = "ASPD"; + field public static final String SIGNALING_METADATA_CAD = "CAD"; + field public static final String SIGNALING_METADATA_CDT = "CDT"; + field public static final String SIGNALING_METADATA_CRIT = "CRIT"; + field public static final String SIGNALING_METADATA_DCIT = "DCIT"; + field public static final String SIGNALING_METADATA_DWD = "DWD"; + field public static final String SIGNALING_METADATA_EMSG = "EMSG"; + field public static final String SIGNALING_METADATA_EVTI = "EVTI"; + field public static final String SIGNALING_METADATA_HELD = "HELD"; + field public static final String SIGNALING_METADATA_IED = "IED"; + field public static final String SIGNALING_METADATA_MPD = "MPD"; + field public static final String SIGNALING_METADATA_MPIT = "MPIT"; + field public static final String SIGNALING_METADATA_MPT = "MPT"; + field public static final String SIGNALING_METADATA_OSN = "OSN"; + field public static final String SIGNALING_METADATA_PAT = "PAT"; + field public static final String SIGNALING_METADATA_RDT = "RDT"; + field public static final String SIGNALING_METADATA_RRT = "RRT"; + field public static final String SIGNALING_METADATA_RSAT = "RSAT"; + field public static final String SIGNALING_METADATA_SLT = "SLT"; + field public static final String SIGNALING_METADATA_SMT = "SMT"; + field public static final String SIGNALING_METADATA_SSD = "SSD"; + field public static final String SIGNALING_METADATA_STSID = "STSID"; + field public static final String SIGNALING_METADATA_STT = "STT"; + field public static final String SIGNALING_METADATA_USBD = "USBD"; + field public static final String SIGNALING_METADATA_USD = "USD"; + field public static final String SIGNALING_METADATA_VSPD = "VSPD"; + } + + @FlaggedApi("android.media.tv.flags.tiaf_v_apis") public final class SignalingDataResponse extends android.media.tv.BroadcastInfoResponse implements android.os.Parcelable { + ctor public SignalingDataResponse(int, int, int, @NonNull java.util.List<java.lang.String>, @NonNull java.util.List<android.media.tv.SignalingDataInfo>); + method @NonNull public java.util.List<android.media.tv.SignalingDataInfo> getSignalingDataInfoList(); + method @NonNull public java.util.List<java.lang.String> getSignalingDataTypes(); + field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.SignalingDataResponse> CREATOR; + } + public final class StreamEventRequest extends android.media.tv.BroadcastInfoRequest implements android.os.Parcelable { ctor public StreamEventRequest(int, int, @NonNull android.net.Uri, @NonNull String); method @NonNull public String getEventName(); diff --git a/media/java/android/media/tv/BroadcastInfoRequest.java b/media/java/android/media/tv/BroadcastInfoRequest.java index eb980a385cd3..9035cb78f132 100644 --- a/media/java/android/media/tv/BroadcastInfoRequest.java +++ b/media/java/android/media/tv/BroadcastInfoRequest.java @@ -85,6 +85,8 @@ public abstract class BroadcastInfoRequest implements Parcelable { return CommandRequest.createFromParcelBody(source); case TvInputManager.BROADCAST_INFO_TYPE_TIMELINE: return TimelineRequest.createFromParcelBody(source); + case TvInputManager.BROADCAST_INFO_TYPE_SIGNALING_DATA: + return SignalingDataRequest.createFromParcelBody(source); default: throw new IllegalStateException( "Unexpected broadcast info request type (value " diff --git a/media/java/android/media/tv/BroadcastInfoResponse.java b/media/java/android/media/tv/BroadcastInfoResponse.java index 4ba2b2c2ff7b..f589244c1da1 100644 --- a/media/java/android/media/tv/BroadcastInfoResponse.java +++ b/media/java/android/media/tv/BroadcastInfoResponse.java @@ -71,6 +71,8 @@ public abstract class BroadcastInfoResponse implements Parcelable { return CommandResponse.createFromParcelBody(source); case TvInputManager.BROADCAST_INFO_TYPE_TIMELINE: return TimelineResponse.createFromParcelBody(source); + case TvInputManager.BROADCAST_INFO_TYPE_SIGNALING_DATA: + return SignalingDataResponse.createFromParcelBody(source); default: throw new IllegalStateException( "Unexpected broadcast info response type (value " diff --git a/media/java/android/media/tv/SignalingDataInfo.java b/media/java/android/media/tv/SignalingDataInfo.java index b29ea5c905ec..e5231fcc704f 100644 --- a/media/java/android/media/tv/SignalingDataInfo.java +++ b/media/java/android/media/tv/SignalingDataInfo.java @@ -16,11 +16,19 @@ package android.media.tv; +import android.annotation.FlaggedApi; import android.annotation.NonNull; +import android.media.tv.flags.Flags; import android.os.Parcelable; -/** @hide */ -public class SignalingDataInfo implements Parcelable { +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Describes a metadata object of a {@link SignalingDataResponse}. + */ +@FlaggedApi(Flags.FLAG_TIAF_V_APIS) +public final class SignalingDataInfo implements Parcelable { public static final @NonNull Parcelable.Creator<SignalingDataInfo> CREATOR = new Parcelable.Creator<SignalingDataInfo>() { @Override @@ -34,59 +42,131 @@ public class SignalingDataInfo implements Parcelable { } }; - private int mTableId; - private @NonNull String mTable; - private int mMetadataType; - private int mVersion; - private int mGroup; - private @NonNull String mEncoding; + private final @NonNull String mTable; + private final @NonNull @SignalingDataRequest.SignalingMetadata String mSignalingDataType; + private final int mVersion; + private final int mGroup; + private final @NonNull String mEncoding; + + /** + * This value for {@link #getGroup()} denotes that there's no group associated with this + * metadata. + */ + public static final int LLS_NO_GROUP_ID = -1; + + /** + * The encoding of the content is UTF-8. This is the default value. + */ + public static final String CONTENT_ENCODING_UTF_8 = "UTF-8"; + + /** + * A/344:2023-5 9.2.10 compliant string for when the encoding of the content is Base64. + */ + public static final String CONTENT_ENCODING_BASE64 = "Base64"; + + /** + * @hide + */ + @android.annotation.StringDef(prefix = "CONTENT_ENCODING_", value = { + CONTENT_ENCODING_UTF_8, + CONTENT_ENCODING_BASE64 + }) + @Retention(RetentionPolicy.SOURCE) + public @interface ContentEncoding {} public SignalingDataInfo( - int tableId, @NonNull String table, - int metadataType, + @NonNull String signalingDataType, + int version, + int group) { + this.mTable = table; + com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTable); + this.mSignalingDataType = signalingDataType; + this.mVersion = version; + this.mGroup = group; + this.mEncoding = CONTENT_ENCODING_UTF_8; + } + + public SignalingDataInfo( + @NonNull String table, + @NonNull String signalingDataType, int version, int group, @NonNull String encoding) { - this.mTableId = tableId; this.mTable = table; com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTable); - this.mMetadataType = metadataType; + this.mSignalingDataType = signalingDataType; this.mVersion = version; this.mGroup = group; this.mEncoding = encoding; com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mEncoding); } - public int getTableId() { - return mTableId; - } - - public @NonNull String getTable() { + /** + * The signaling table data, represented as a XML, JSON or BASE64 string. + * + * <p> For more details on how this data is formatted refer to the ATSC standard + * A/344:2023-5 9.2.10 - Query Signaling Data API. + * + * @return The signaling table data. + */ + @NonNull + public String getTable() { return mTable; } - public int getMetadataType() { - return mMetadataType; + /** + * Gets the signaling data type contained in this metadata object. This may be either a + * LLS Metadata Object or a SLS Metadata Object name. + * + * <p>For more details on each type of metadata that can be requested, refer to the ATSC + * standard A/344:2023-5 9.2.10 - Query Signaling Data API. + * + * @return the type of metadata in this metadata object + */ + @NonNull + public @SignalingDataRequest.SignalingMetadata String getSignalingDataType() { + return mSignalingDataType; } + /** + * Gets the version of the signalling element. For LLS, this should be the + * LLS_table_version. For SLS Metadata Objects, this should be metadataEnvelope@version. + * + * For more details on where this version comes from, refer to the ATSC 3.0 + * standard A/344:2023-5 9.2.10 - Query Signaling Data API. + * + * @return The version of the signalling element. + */ public int getVersion() { return mVersion; } + /** + * Gets the LLS group ID. Required for LLS Tables. For SLS Metadata Objects, this should be + * {@link #LLS_NO_GROUP_ID}. + * + * @return the LLS group ID. + */ public int getGroup() { return mGroup; } - public @NonNull String getEncoding() { + /** + * The content encoding of the data. This value defaults to {@link #CONTENT_ENCODING_UTF_8}. + * + * <p> Can be either {@link #CONTENT_ENCODING_BASE64} or {@link #CONTENT_ENCODING_UTF_8}. + * @return The content encoding of the data. + */ + @NonNull + public @ContentEncoding String getEncoding() { return mEncoding; } @Override public void writeToParcel(@NonNull android.os.Parcel dest, int flags) { - dest.writeInt(mTableId); dest.writeString(mTable); - dest.writeInt(mMetadataType); + dest.writeString(mSignalingDataType); dest.writeInt(mVersion); dest.writeInt(mGroup); dest.writeString(mEncoding); @@ -98,17 +178,17 @@ public class SignalingDataInfo implements Parcelable { } SignalingDataInfo(@NonNull android.os.Parcel in) { - int tableId = in.readInt(); String table = in.readString(); - int metadataType = in.readInt(); + String metadataType = in.readString(); int version = in.readInt(); int group = in.readInt(); String encoding = in.readString(); - this.mTableId = tableId; this.mTable = table; com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTable); - this.mMetadataType = metadataType; + this.mSignalingDataType = metadataType; + com.android.internal.util.AnnotationValidations + .validate(NonNull.class, null, mSignalingDataType); this.mVersion = version; this.mGroup = group; this.mEncoding = encoding; diff --git a/media/java/android/media/tv/SignalingDataRequest.java b/media/java/android/media/tv/SignalingDataRequest.java index dcf1d48aaf3a..9874517a9085 100644 --- a/media/java/android/media/tv/SignalingDataRequest.java +++ b/media/java/android/media/tv/SignalingDataRequest.java @@ -16,19 +16,27 @@ package android.media.tv; +import android.annotation.FlaggedApi; import android.annotation.NonNull; +import android.media.tv.flags.Flags; +import android.os.Parcel; import android.os.Parcelable; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.List; + /** * Request to retrieve the Low-level Signalling Tables (LLS) and Service-layer Signalling (SLS) * metadata. * - * <p>For more details on each type of metadata that can be requested, refer to the ATSC standard + * <p> For more details on each type of metadata that can be requested, refer to the ATSC standard * A/344:2023-5 9.2.10 - Query Signaling Data API. * - * @hide + * @see SignalingDataResponse */ -public class SignalingDataRequest extends BroadcastInfoRequest implements Parcelable { +@FlaggedApi(Flags.FLAG_TIAF_V_APIS) +public final class SignalingDataRequest extends BroadcastInfoRequest implements Parcelable { private static final @TvInputManager.BroadcastInfoType int REQUEST_TYPE = TvInputManager.BROADCAST_INFO_TYPE_SIGNALING_DATA; @@ -45,126 +53,220 @@ public class SignalingDataRequest extends BroadcastInfoRequest implements Parcel } }; - /** SLS Metadata: All metadata objects for the requested service(s) */ - public static final int SLS_METADATA_ALL = 0x7FFFFFF; /** SLS Metadata: APD for the requested service(s) */ - public static final int SLS_METADATA_APD = 1; + public static final String SIGNALING_METADATA_APD = "APD"; /** SLS Metadata: USBD for the requested service(s) */ - public static final int SLS_METADATA_USBD = 1 << 1; + public static final String SIGNALING_METADATA_USBD = "USBD"; /** SLS Metadata: S-TSID for the requested service(s) */ - public static final int SLS_METADATA_STSID = 1 << 2; + public static final String SIGNALING_METADATA_STSID = "STSID"; /** SLS Metadata: DASH MPD for the requested service(s) */ - public static final int SLS_METADATA_MPD = 1 << 3; + public static final String SIGNALING_METADATA_MPD = "MPD"; /** SLS Metadata: User Service Description for MMTP */ - public static final int SLS_METADATA_USD = 1 << 4; + public static final String SIGNALING_METADATA_USD = "USD"; /** SLS Metadata: MMT Package Access Table for the requested service(s) */ - public static final int SLS_METADATA_PAT = 1 << 5; + public static final String SIGNALING_METADATA_PAT = "PAT"; /** SLS Metadata: MMT Package Table for the requested service(s) */ - public static final int SLS_METADATA_MPT = 1 << 6; + public static final String SIGNALING_METADATA_MPT = "MPT"; /** SLS Metadata: MMT Media Presentation Information Table for the requested service(s) */ - public static final int SLS_METADATA_MPIT = 1 << 7; + public static final String SIGNALING_METADATA_MPIT = "MPIT"; /** SLS Metadata: MMT Clock Relation Information for the requested service(s) */ - public static final int SLS_METADATA_CRIT = 1 << 8; + public static final String SIGNALING_METADATA_CRIT = "CRIT"; /** SLS Metadata: MMT Device Capabilities Information Table for the requested service(s) */ - public static final int SLS_METADATA_DCIT = 1 << 9; + public static final String SIGNALING_METADATA_DCIT = "DCIT"; /** SLS Metadata: HTML Entry Pages Location Description for the requested service(s) */ - public static final int SLS_METADATA_HELD = 1 << 10; + public static final String SIGNALING_METADATA_HELD = "HELD"; /** SLS Metadata: Distribution Window Desciription for the requested service(s) */ - public static final int SLS_METADATA_DWD = 1 << 11; + public static final String SIGNALING_METADATA_DWD = "DWD"; /** SLS Metadata: MMT Application Event Information for the requested service(s) */ - public static final int SLS_METADATA_AEI = 1 << 12; + public static final String SIGNALING_METADATA_AEI = "AEI"; /** SLS Metadata: Video Stream Properties Descriptor */ - public static final int SLS_METADATA_VSPD = 1 << 13; + public static final String SIGNALING_METADATA_VSPD = "VSPD"; /** SLS Metadata: ATSC Staggercast Descriptor */ - public static final int SLS_METADATA_ASD = 1 << 14; + public static final String SIGNALING_METADATA_ASD = "ASD"; /** SLS Metadata: Inband Event Descriptor */ - public static final int SLS_METADATA_IED = 1 << 15; + public static final String SIGNALING_METADATA_IED = "IED"; /** SLS Metadata: Caption Asset Descriptor */ - public static final int SLS_METADATA_CAD = 1 << 16; + public static final String SIGNALING_METADATA_CAD = "CAD"; /** SLS Metadata: Audio Stream Properties Descriptor */ - public static final int SLS_METADATA_ASPD = 1 << 17; + public static final String SIGNALING_METADATA_ASPD = "ASPD"; /** SLS Metadata: Security Properties Descriptor */ - public static final int SLS_METADATA_SSD = 1 << 18; + public static final String SIGNALING_METADATA_SSD = "SSD"; /** SLS Metadata: ROUTE/DASH Application Dynamic Event for the requested service(s) */ - public static final int SLS_METADATA_EMSG = 1 << 19; + public static final String SIGNALING_METADATA_EMSG = "EMSG"; /** SLS Metadata: MMT Application Dynamic Event for the requested service(s) */ - public static final int SLS_METADATA_EVTI = 1 << 20; + public static final String SIGNALING_METADATA_EVTI = "EVTI"; - /** Regional Service Availability Table for the requested service(s) */ - public static final int SLS_METADATA_RSAT = 1 << 21; + /** SLS Metadata: Regional Service Availability Table for the requested service(s) */ + public static final String SIGNALING_METADATA_RSAT = "RSAT"; - private final int mGroup; - private @NonNull final int[] mLlsTableIds; - private final int mSlsMetadataTypes; + /** SLS Metadata: Recovery Data Table for the requested service(s) */ + public static final String SIGNALING_METADATA_RDT = "RDT"; - SignalingDataRequest( - int requestId, - int option, - int group, - @NonNull int[] llsTableIds, - int slsMetadataTypes) { - super(REQUEST_TYPE, requestId, option); - mGroup = group; - mLlsTableIds = llsTableIds; - mSlsMetadataTypes = slsMetadataTypes; - } + /** + * Service List Table for the requested service(s), LLS_table_id = 1. + */ + public static final String SIGNALING_METADATA_SLT = "SLT"; - SignalingDataRequest(@NonNull android.os.Parcel in) { - super(REQUEST_TYPE, in); + /** + * Region Rating Table for the requested service(s), LLS_table_id = 2. + */ + public static final String SIGNALING_METADATA_RRT = "RRT"; - int group = in.readInt(); - int[] llsTableIds = in.createIntArray(); - int slsMetadataTypes = in.readInt(); + /** + * System Time Table for the requested service(s), LLS_table_id = 3. + */ + public static final String SIGNALING_METADATA_STT = "STT"; + /** + * Advance Emergency Information Table for the requested service(s), LLS_table_id = 4. + */ + public static final String SIGNALING_METADATA_AEAT = "AEAT"; + + /** + * Onscreen Message Notifications for the requested service(s), LLS_table_id = 5. + */ + public static final String SIGNALING_METADATA_OSN = "OSN"; + + /** + * Signed Multitable for the requested service(s), LLS_table_id = 0xFE (254). + */ + public static final String SIGNALING_METADATA_SMT = "SMT"; + + /** + * CertificateData Tablefor the requested service(s), LLS_table_id = 6. + */ + public static final String SIGNALING_METADATA_CDT = "CDT"; + + private final int mGroup; + private final @NonNull List<String> mSignalingDataTypes; + + /** + * Denotes that theres no group associated with this request. + */ + public static final int SIGNALING_DATA_NO_GROUP_ID = -1; + + /** + * @hide + */ + @android.annotation.StringDef(prefix = "SIGNALING_METADATA_", value = { + SIGNALING_METADATA_APD, + SIGNALING_METADATA_USBD, + SIGNALING_METADATA_STSID, + SIGNALING_METADATA_MPD, + SIGNALING_METADATA_USD, + SIGNALING_METADATA_PAT, + SIGNALING_METADATA_MPT, + SIGNALING_METADATA_MPIT, + SIGNALING_METADATA_CRIT, + SIGNALING_METADATA_DCIT, + SIGNALING_METADATA_HELD, + SIGNALING_METADATA_DWD, + SIGNALING_METADATA_AEI, + SIGNALING_METADATA_VSPD, + SIGNALING_METADATA_ASD, + SIGNALING_METADATA_IED, + SIGNALING_METADATA_CAD, + SIGNALING_METADATA_ASPD, + SIGNALING_METADATA_SSD, + SIGNALING_METADATA_EMSG, + SIGNALING_METADATA_EVTI, + SIGNALING_METADATA_RSAT, + SIGNALING_METADATA_RDT, + SIGNALING_METADATA_SLT, + SIGNALING_METADATA_RRT, + SIGNALING_METADATA_STT, + SIGNALING_METADATA_AEAT, + SIGNALING_METADATA_OSN, + SIGNALING_METADATA_SMT, + SIGNALING_METADATA_CDT + }) + @Retention(RetentionPolicy.SOURCE) + public @interface SignalingMetadata {} + + public SignalingDataRequest(int requestId, @RequestOption int option, + int group, + @NonNull List<String> signalingDataTypes) { + super(REQUEST_TYPE, requestId, option); this.mGroup = group; - this.mLlsTableIds = llsTableIds; - com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mLlsTableIds); - this.mSlsMetadataTypes = slsMetadataTypes; + this.mSignalingDataTypes = signalingDataTypes; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mSignalingDataTypes); } + static SignalingDataRequest createFromParcelBody(Parcel in) { + return new SignalingDataRequest(in); + } + + /** + * Gets the group with which any signaling returned will be associated. + * + * <p> Requested metadata objects will only be returned if they are part of the group specified. + * + * <p> If no group is specified ({@link #SIGNALING_DATA_NO_GROUP_ID}), + * the receiver will send all the metadata objects discovered. + * + * @return The group ID which any signaling returned will be associated. + */ public int getGroup() { return mGroup; } - public @NonNull int[] getLlsTableIds() { - return mLlsTableIds; + /** + * Gets the signaling data types for which data should be retrieved. + * + * <p> For more details on each type of metadata that can be requested, refer to the ATSC + * standard A/344:2023-5 9.2.10 - Query Signaling Data API. + * + * @return The signaling data types for which data should be retrieved. + */ + public @NonNull List<String> getSignalingDataTypes() { + return mSignalingDataTypes; } - public int getSlsMetadataTypes() { - return mSlsMetadataTypes; + @Override + public int describeContents() { + return 0; } @Override public void writeToParcel(@NonNull android.os.Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeInt(mGroup); - dest.writeIntArray(mLlsTableIds); - dest.writeInt(mSlsMetadataTypes); + dest.writeStringList(mSignalingDataTypes); } - @Override - public int describeContents() { - return 0; + SignalingDataRequest(@NonNull android.os.Parcel in) { + super(REQUEST_TYPE, in); + + int group = in.readInt(); + List<String> signalingDataTypes = new java.util.ArrayList<>(); + in.readStringList(signalingDataTypes); + + this.mGroup = group; + this.mSignalingDataTypes = signalingDataTypes; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mSignalingDataTypes); } + } diff --git a/media/java/android/media/tv/SignalingDataResponse.java b/media/java/android/media/tv/SignalingDataResponse.java index 3e4c790f6c70..be172ec62773 100644 --- a/media/java/android/media/tv/SignalingDataResponse.java +++ b/media/java/android/media/tv/SignalingDataResponse.java @@ -16,13 +16,24 @@ package android.media.tv; +import android.annotation.FlaggedApi; import android.annotation.NonNull; +import android.media.tv.flags.Flags; +import android.os.Parcel; import android.os.Parcelable; +import java.util.ArrayList; import java.util.List; -/** @hide */ -public class SignalingDataResponse extends BroadcastInfoResponse implements Parcelable { + +/** + * A response for the signaling data from the broadcast signal. + * + * @see SignalingDataRequest + * @see SignalingDataInfo + */ +@FlaggedApi(Flags.FLAG_TIAF_V_APIS) +public final class SignalingDataResponse extends BroadcastInfoResponse implements Parcelable { public static final @NonNull Parcelable.Creator<SignalingDataResponse> CREATOR = new Parcelable.Creator<SignalingDataResponse>() { @Override @@ -37,34 +48,44 @@ public class SignalingDataResponse extends BroadcastInfoResponse implements Parc }; private static final @TvInputManager.BroadcastInfoType int RESPONSE_TYPE = TvInputManager.BROADCAST_INFO_TYPE_SIGNALING_DATA; - private final @NonNull int[] mTableIds; - private final int mMetadataTypes; + private final @NonNull List<String> mSignalingDataTypes; private final @NonNull List<SignalingDataInfo> mSignalingDataInfoList; + static SignalingDataResponse createFromParcelBody(Parcel in) { + return new SignalingDataResponse(in); + } + public SignalingDataResponse( int requestId, int sequence, @ResponseResult int responseResult, - @NonNull int[] tableIds, - int metadataTypes, + @NonNull List<String> signalingDataTypes, @NonNull List<SignalingDataInfo> signalingDataInfoList) { super(RESPONSE_TYPE, requestId, sequence, responseResult); - this.mTableIds = tableIds; - com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTableIds); - this.mMetadataTypes = metadataTypes; + mSignalingDataTypes = signalingDataTypes; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mSignalingDataTypes); this.mSignalingDataInfoList = signalingDataInfoList; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mSignalingDataInfoList); } - public @NonNull int[] getTableIds() { - return mTableIds; - } - - public int getMetadataTypes() { - return mMetadataTypes; + /** + * Gets a list of types of metadata that are contained in this response. + * + * <p> A list of types available are defined in {@link SignalingDataRequest}. + * For more information about these types, see A/344:2023-5 9.2.10 - Query Signaling Data API. + * + * @return A list of types of metadata that are contained in this response. + */ + public @NonNull List<String> getSignalingDataTypes() { + return mSignalingDataTypes; } + /** + * Gets a list of {@link SignalingDataInfo} contained in this response. + * @return A list of {@link SignalingDataInfo} contained in this response. + */ public @NonNull List<SignalingDataInfo> getSignalingDataInfoList() { return mSignalingDataInfoList; } @@ -72,8 +93,7 @@ public class SignalingDataResponse extends BroadcastInfoResponse implements Parc @Override public void writeToParcel(@NonNull android.os.Parcel dest, int flags) { super.writeToParcel(dest, flags); - dest.writeIntArray(mTableIds); - dest.writeInt(mMetadataTypes); + dest.writeStringList(mSignalingDataTypes); dest.writeParcelableList(mSignalingDataInfoList, flags); } @@ -85,14 +105,14 @@ public class SignalingDataResponse extends BroadcastInfoResponse implements Parc SignalingDataResponse(@NonNull android.os.Parcel in) { super(RESPONSE_TYPE, in); - int[] tableIds = in.createIntArray(); - int metadataTypes = in.readInt(); + List<String> types = new ArrayList<String>(); + in.readStringList(types); List<SignalingDataInfo> signalingDataInfoList = new java.util.ArrayList<>(); in.readParcelableList(signalingDataInfoList, SignalingDataInfo.class.getClassLoader()); - this.mTableIds = tableIds; - com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTableIds); - this.mMetadataTypes = metadataTypes; + this.mSignalingDataTypes = types; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mSignalingDataTypes); this.mSignalingDataInfoList = signalingDataInfoList; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mSignalingDataInfoList); |