script-astra/Android/Sdk/sources/android-35/android/media/tv/SignalingDataInfo.java
localadmin 4380f00a78 init
2025-01-20 18:15:20 +03:00

198 lines
6.5 KiB
Java

/*
* Copyright (C) 2024 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.media.tv;
import android.annotation.FlaggedApi;
import android.annotation.NonNull;
import android.media.tv.flags.Flags;
import android.os.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
public SignalingDataInfo[] newArray(int size) {
return new SignalingDataInfo[size];
}
@Override
public SignalingDataInfo createFromParcel(@NonNull android.os.Parcel in) {
return new SignalingDataInfo(in);
}
};
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(
@NonNull String table,
@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.mTable = table;
com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTable);
this.mSignalingDataType = signalingDataType;
this.mVersion = version;
this.mGroup = group;
this.mEncoding = encoding;
com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mEncoding);
}
/**
* 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;
}
/**
* 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;
}
/**
* 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.writeString(mTable);
dest.writeString(mSignalingDataType);
dest.writeInt(mVersion);
dest.writeInt(mGroup);
dest.writeString(mEncoding);
}
@Override
public int describeContents() {
return 0;
}
SignalingDataInfo(@NonNull android.os.Parcel in) {
String table = in.readString();
String metadataType = in.readString();
int version = in.readInt();
int group = in.readInt();
String encoding = in.readString();
this.mTable = table;
com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTable);
this.mSignalingDataType = metadataType;
com.android.internal.util.AnnotationValidations
.validate(NonNull.class, null, mSignalingDataType);
this.mVersion = version;
this.mGroup = group;
this.mEncoding = encoding;
com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mEncoding);
}
}