diff --git a/media/java/android/media/tv/TvInputInfo.java b/media/java/android/media/tv/TvInputInfo.java index 0b648765cafac..a33b219b074ea 100644 --- a/media/java/android/media/tv/TvInputInfo.java +++ b/media/java/android/media/tv/TvInputInfo.java @@ -16,7 +16,9 @@ package android.media.tv; +import android.annotation.IntDef; import android.annotation.NonNull; +import android.annotation.StringRes; import android.annotation.SystemApi; import android.content.ComponentName; import android.content.Context; @@ -48,6 +50,8 @@ import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.io.InputStream; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.HashMap; import java.util.HashSet; import java.util.Locale; @@ -62,6 +66,12 @@ public final class TvInputInfo implements Parcelable { private static final boolean DEBUG = false; private static final String TAG = "TvInputInfo"; + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef({TYPE_TUNER, TYPE_OTHER, TYPE_COMPOSITE, TYPE_SVIDEO, TYPE_SCART, TYPE_COMPONENT, + TYPE_VGA, TYPE_DVI, TYPE_HDMI, TYPE_DISPLAY_PORT}) + public @interface Type {} + // Should be in sync with frameworks/base/core/res/res/values/attrs.xml /** * TV input type: the TV input service is a tuner which provides channels. @@ -343,6 +353,7 @@ public final class TvInputInfo implements Parcelable { /** * Returns the type of this TV input. */ + @Type public int getType() { return mType; } @@ -768,7 +779,7 @@ public final class TvInputInfo implements Parcelable { * @hide */ @SystemApi - public Builder setLabel(int resId) { + public Builder setLabel(@StringRes int resId) { if (mLabel != null) { throw new IllegalStateException("Label text is already set."); } diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java index b4536b1135810..d74dda6e800f5 100644 --- a/media/java/android/media/tv/TvInputManager.java +++ b/media/java/android/media/tv/TvInputManager.java @@ -99,6 +99,13 @@ public final class TvInputManager { */ public static final int DVB_DEVICE_FRONTEND = DVB_DEVICE_END; + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef({VIDEO_UNAVAILABLE_REASON_UNKNOWN, VIDEO_UNAVAILABLE_REASON_TUNING, + VIDEO_UNAVAILABLE_REASON_WEAK_SIGNAL, VIDEO_UNAVAILABLE_REASON_BUFFERING, + VIDEO_UNAVAILABLE_REASON_AUDIO_ONLY}) + public @interface VideoUnavailableReason {} + static final int VIDEO_UNAVAILABLE_REASON_START = 0; static final int VIDEO_UNAVAILABLE_REASON_END = 4; @@ -135,10 +142,9 @@ public final class TvInputManager { /** @hide */ @Retention(RetentionPolicy.SOURCE) - @IntDef({VIDEO_UNAVAILABLE_REASON_UNKNOWN, VIDEO_UNAVAILABLE_REASON_TUNING, - VIDEO_UNAVAILABLE_REASON_WEAK_SIGNAL, VIDEO_UNAVAILABLE_REASON_BUFFERING, - VIDEO_UNAVAILABLE_REASON_AUDIO_ONLY}) - public @interface VideoUnavailableReason {} + @IntDef({TIME_SHIFT_STATUS_UNKNOWN, TIME_SHIFT_STATUS_UNSUPPORTED, + TIME_SHIFT_STATUS_UNAVAILABLE, TIME_SHIFT_STATUS_AVAILABLE}) + public @interface TimeShiftStatus {} /** * Status for {@link TvInputService.Session#notifyTimeShiftStatusChanged(int)} and @@ -169,12 +175,6 @@ public final class TvInputManager { */ public static final int TIME_SHIFT_STATUS_AVAILABLE = 3; - /** @hide */ - @Retention(RetentionPolicy.SOURCE) - @IntDef({TIME_SHIFT_STATUS_UNKNOWN, TIME_SHIFT_STATUS_UNSUPPORTED, - TIME_SHIFT_STATUS_UNAVAILABLE, TIME_SHIFT_STATUS_AVAILABLE}) - public @interface TimeShiftStatus {} - /** * Value returned by {@link TvInputService.Session#onTimeShiftGetCurrentPosition()} and * {@link TvInputService.Session#onTimeShiftGetStartPosition()} when time shifting has not @@ -182,6 +182,12 @@ public final class TvInputManager { */ public static final long TIME_SHIFT_INVALID_TIME = Long.MIN_VALUE; + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef({RECORDING_ERROR_UNKNOWN, RECORDING_ERROR_INSUFFICIENT_SPACE, + RECORDING_ERROR_RESOURCE_BUSY}) + public @interface RecordingError {} + /** * Error for {@link TvInputService.RecordingSession#notifyError(int)} and * {@link TvRecordingClient.RecordingCallback#onError(int)}: The requested operation cannot be @@ -205,9 +211,8 @@ public final class TvInputManager { /** @hide */ @Retention(RetentionPolicy.SOURCE) - @IntDef({RECORDING_ERROR_UNKNOWN, RECORDING_ERROR_INSUFFICIENT_SPACE, - RECORDING_ERROR_RESOURCE_BUSY}) - public @interface RecordingError {} + @IntDef({INPUT_STATE_CONNECTED, INPUT_STATE_CONNECTED_STANDBY, INPUT_STATE_DISCONNECTED}) + public @interface InputState {} /** * State for {@link #getInputState(String)} and @@ -240,11 +245,6 @@ public final class TvInputManager { */ public static final int INPUT_STATE_DISCONNECTED = 2; - /** @hide */ - @Retention(RetentionPolicy.SOURCE) - @IntDef({INPUT_STATE_CONNECTED, INPUT_STATE_CONNECTED_STANDBY, INPUT_STATE_DISCONNECTED}) - public @interface InputState {} - /** * Broadcast intent action when the user blocked content ratings change. For use with the * {@link #isRatingBlocked}. diff --git a/media/java/android/media/tv/TvInputService.java b/media/java/android/media/tv/TvInputService.java index 97ef6d83607d4..3780f6f9a542f 100644 --- a/media/java/android/media/tv/TvInputService.java +++ b/media/java/android/media/tv/TvInputService.java @@ -16,6 +16,7 @@ package android.media.tv; +import android.annotation.FloatRange; import android.annotation.MainThread; import android.annotation.NonNull; import android.annotation.Nullable; @@ -823,7 +824,7 @@ public abstract class TvInputService extends Service { * * @param volume A volume value between {@code 0.0f} to {@code 1.0f}. */ - public abstract void onSetStreamVolume(float volume); + public abstract void onSetStreamVolume(@FloatRange(from = 0.0, to = 1.0) float volume); /** * Tunes to a given channel. diff --git a/media/java/android/media/tv/TvTrackInfo.java b/media/java/android/media/tv/TvTrackInfo.java index d718a7ee27237..c9c881c6f3d27 100644 --- a/media/java/android/media/tv/TvTrackInfo.java +++ b/media/java/android/media/tv/TvTrackInfo.java @@ -16,6 +16,7 @@ package android.media.tv; +import android.annotation.IntDef; import android.annotation.NonNull; import android.os.Bundle; import android.os.Parcel; @@ -24,12 +25,20 @@ import android.text.TextUtils; import com.android.internal.util.Preconditions; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.Objects; /** * Encapsulates the format of tracks played in {@link TvInputService}. */ public final class TvTrackInfo implements Parcelable { + + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef({TYPE_AUDIO, TYPE_VIDEO, TYPE_SUBTITLE}) + public @interface Type {} + /** * The type value for audio tracks. */ @@ -96,6 +105,7 @@ public final class TvTrackInfo implements Parcelable { * Returns the type of the track. The type should be one of the followings: * {@link #TYPE_AUDIO}, {@link #TYPE_VIDEO} and {@link #TYPE_SUBTITLE}. */ + @Type public final int getType() { return mType; } @@ -319,7 +329,7 @@ public final class TvTrackInfo implements Parcelable { * @throws IllegalArgumentException if the type is not any of {@link #TYPE_AUDIO}, * {@link #TYPE_VIDEO} and {@link #TYPE_SUBTITLE} */ - public Builder(int type, @NonNull String id) { + public Builder(@Type int type, @NonNull String id) { if (type != TYPE_AUDIO && type != TYPE_VIDEO && type != TYPE_SUBTITLE) { diff --git a/media/java/android/media/tv/TvView.java b/media/java/android/media/tv/TvView.java index 02ee0cc8deb52..71b0193c053d4 100644 --- a/media/java/android/media/tv/TvView.java +++ b/media/java/android/media/tv/TvView.java @@ -16,6 +16,7 @@ package android.media.tv; +import android.annotation.FloatRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; @@ -271,7 +272,7 @@ public class TvView extends ViewGroup { * * @param volume A volume value between {@code 0.0f} to {@code 1.0f}. */ - public void setStreamVolume(float volume) { + public void setStreamVolume(@FloatRange(from = 0.0, to = 1.0) float volume) { if (DEBUG) Log.d(TAG, "setStreamVolume(" + volume + ")"); mStreamVolume = volume; if (mSession == null) {