Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Ctors](https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#pubctors) \| [Methods](https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#inhmethods)

# TvView.TvInputCallback

*** ** * ** ***


`
public
static

abstract
class
TvView.TvInputCallback
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.media.tv.TvView.TvInputCallback |

<br />

*** ** * ** ***

Callback used to receive various status updates on the `https://developer.android.com/reference/android/media/tv/TvView`.

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#TvInputCallback()() ` |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onAitInfoUpdated(java.lang.String,%20android.media.tv.AitInfo)(https://developer.android.com/reference/java/lang/String inputId, https://developer.android.com/reference/android/media/tv/AitInfo aitInfo) ` This is called when the AIT (Application Information Table) info has been updated. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onAudioPresentationSelected(java.lang.String,%20int,%20int)(https://developer.android.com/reference/java/lang/String inputId, int presentationId, int programId) ` This is called when audio presentation selection has changed. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onAudioPresentationsChanged(java.lang.String,%20java.util.List<android.media.AudioPresentation>)(https://developer.android.com/reference/java/lang/String inputId, https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/media/AudioPresentation> audioPresentations) ` This is called when the audio presentation information has been changed. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onAvailableSpeeds(java.lang.String,%20float[])(https://developer.android.com/reference/java/lang/String inputId, float[] speeds) ` This is called when time-shifting is enabled to inform the available speeds. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onChannelRetuned(java.lang.String,%20android.net.Uri)(https://developer.android.com/reference/java/lang/String inputId, https://developer.android.com/reference/android/net/Uri channelUri) ` This is invoked when the channel of this TvView is changed by the underlying TV input without any `https://developer.android.com/reference/android/media/tv/TvView#tune(java.lang.String,%20android.net.Uri)` request. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onConnectionFailed(java.lang.String)(https://developer.android.com/reference/java/lang/String inputId) ` This is invoked when an error occurred while establishing a connection to the underlying TV input. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onContentAllowed(java.lang.String)(https://developer.android.com/reference/java/lang/String inputId) ` This is called when the current program content turns out to be allowed to watch since its content rating is not blocked by parental controls. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onContentBlocked(java.lang.String,%20android.media.tv.TvContentRating)(https://developer.android.com/reference/java/lang/String inputId, https://developer.android.com/reference/android/media/tv/TvContentRating rating) ` This is called when the current program content turns out to be not allowed to watch since its content rating is blocked by parental controls. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onCueingMessageAvailability(java.lang.String,%20boolean)(https://developer.android.com/reference/java/lang/String inputId, boolean available) ` This is called when cueing message becomes available or unavailable. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onDisconnected(java.lang.String)(https://developer.android.com/reference/java/lang/String inputId) ` This is invoked when the existing connection to the underlying TV input is lost. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onSignalStrengthUpdated(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String inputId, int strength) ` This is called when signal strength is updated. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onTimeShiftMode(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String inputId, int mode) ` This is called when time shift mode is set or updated. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onTimeShiftStatusChanged(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String inputId, int status) ` This is called when the time shift status is changed. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onTrackSelected(java.lang.String,%20int,%20java.lang.String)(https://developer.android.com/reference/java/lang/String inputId, int type, https://developer.android.com/reference/java/lang/String trackId) ` This is called when there is a change on the selected tracks. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onTracksChanged(java.lang.String,%20java.util.List<android.media.tv.TvTrackInfo>)(https://developer.android.com/reference/java/lang/String inputId, https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/media/tv/TvTrackInfo> tracks) ` This is called when the track information has been changed. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onTuned(java.lang.String,%20android.net.Uri)(https://developer.android.com/reference/java/lang/String inputId, https://developer.android.com/reference/android/net/Uri channelUri) ` This is called when the session has been tuned to the given channel. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onTvMessage(java.lang.String,%20int,%20android.os.Bundle)(https://developer.android.com/reference/java/lang/String inputId, int type, https://developer.android.com/reference/android/os/Bundle data) ` This is called when a new TV Message has been received. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onVideoAvailable(java.lang.String)(https://developer.android.com/reference/java/lang/String inputId) ` This is called when the video is available, so the TV input starts the playback. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onVideoFreezeUpdated(java.lang.String,%20boolean)(https://developer.android.com/reference/java/lang/String inputId, boolean isFrozen) ` This is called when the video freeze status is updated. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onVideoSizeChanged(java.lang.String,%20int,%20int)(https://developer.android.com/reference/java/lang/String inputId, int width, int height) ` This is invoked when the video size has been changed. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/TvView.TvInputCallback#onVideoUnavailable(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String inputId, int reason) ` This is called when the video is not available, so the TV input stops the playback. |

| ### Inherited methods |
|---|---|
| From class ` https://developer.android.com/reference/java/lang/Object ` |---|---| | ` https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/java/lang/Object#clone()() ` Creates and returns a copy of this object. | | ` boolean` | ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) ` Indicates whether some other object is "equal to" this one. | | ` void` | ` https://developer.android.com/reference/java/lang/Object#finalize()() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. | | ` final https://developer.android.com/reference/java/lang/Class<?>` | ` https://developer.android.com/reference/java/lang/Object#getClass()() ` Returns the runtime class of this `Object`. | | ` int` | ` https://developer.android.com/reference/java/lang/Object#hashCode()() ` Returns a hash code value for the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notify()() ` Wakes up a single thread that is waiting on this object's monitor. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notifyAll()() ` Wakes up all threads that are waiting on this object's monitor. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Object#toString()() ` Returns a string representation of the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait()() ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*. | ||

## Public constructors

### TvInputCallback

```
public TvInputCallback ()
```

<br />

<br />

## Public methods

### onAitInfoUpdated

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onAitInfoUpdated (String inputId, 
                AitInfo aitInfo)
```

This is called when the AIT (Application Information Table) info has been updated.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: This value cannot be `null`. <br /> |
| `aitInfo` | `AitInfo`: The current AIT info. This value cannot be `null`. <br /> |

### onAudioPresentationSelected

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onAudioPresentationSelected (String inputId, 
                int presentationId, 
                int programId)
```

This is called when audio presentation selection has changed.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. This value cannot be `null`. <br /> |
| `presentationId` | `int`: The ID of the audio presentation selected. <br /> |
| `programId` | `int`: The ID of the program providing the selected audio presentation. <br /> |

### onAudioPresentationsChanged

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onAudioPresentationsChanged (String inputId, 
                List<AudioPresentation> audioPresentations)
```

This is called when the audio presentation information has been changed.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. This value cannot be `null`. <br /> |
| `audioPresentations` | `List`: A list of updated audio presentation information. This value cannot be `null`. <br /> |

### onAvailableSpeeds

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onAvailableSpeeds (String inputId, 
                float[] speeds)
```

This is called when time-shifting is enabled to inform the available speeds.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. This value cannot be `null`. <br /> |
| `speeds` | `float`: An ordered array of playback speeds, expressed as values relative to the normal playback speed (1.0), at which the current content can be played as a time-shifted broadcast. This is an empty array if the supported playback speeds are unknown or the video/broadcast is not in time shift mode. If currently in time shift mode, this array will normally include at least the values 1.0 (normal speed) and 0.0 (paused). This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/PlaybackParams#getSpeed()`

### onChannelRetuned

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onChannelRetuned (String inputId, 
                Uri channelUri)
```

This is invoked when the channel of this TvView is changed by the underlying TV input
without any `https://developer.android.com/reference/android/media/tv/TvView#tune(java.lang.String,%20android.net.Uri)` request.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. <br /> |
| `channelUri` | `Uri`: The URI of a channel. <br /> |

### onConnectionFailed

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onConnectionFailed (String inputId)
```

This is invoked when an error occurred while establishing a connection to the underlying
TV input.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. <br /> |

### onContentAllowed

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onContentAllowed (String inputId)
```

This is called when the current program content turns out to be allowed to watch since
its content rating is not blocked by parental controls.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. <br /> |

### onContentBlocked

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onContentBlocked (String inputId, 
                TvContentRating rating)
```

This is called when the current program content turns out to be not allowed to watch
since its content rating is blocked by parental controls.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. <br /> |
| `rating` | `TvContentRating`: The content rating of the blocked program. <br /> |

### onCueingMessageAvailability

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onCueingMessageAvailability (String inputId, 
                boolean available)
```

This is called when cueing message becomes available or unavailable.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. This value cannot be `null`. <br /> |
| `available` | `boolean`: The current availability of cueing message. `true` if cueing message is available; `false` if it becomes unavailable. <br /> |

### onDisconnected

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onDisconnected (String inputId)
```

This is invoked when the existing connection to the underlying TV input is lost.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. <br /> |

### onSignalStrengthUpdated

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onSignalStrengthUpdated (String inputId, 
                int strength)
```

This is called when signal strength is updated.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. This value cannot be `null`. <br /> |
| `strength` | `int`: The current signal strength. Value is one of the following: - `https://developer.android.com/reference/android/media/tv/TvInputManager#SIGNAL_STRENGTH_LOST` - `https://developer.android.com/reference/android/media/tv/TvInputManager#SIGNAL_STRENGTH_WEAK` - `https://developer.android.com/reference/android/media/tv/TvInputManager#SIGNAL_STRENGTH_STRONG` |

### onTimeShiftMode

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onTimeShiftMode (String inputId, 
                int mode)
```

This is called when time shift mode is set or updated.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. This value cannot be `null`. <br /> |
| `mode` | `int`: The current time shift mode. The value is one of the following: `https://developer.android.com/reference/android/media/tv/TvInputManager#TIME_SHIFT_MODE_OFF`, `https://developer.android.com/reference/android/media/tv/TvInputManager#TIME_SHIFT_MODE_LOCAL`, `https://developer.android.com/reference/android/media/tv/TvInputManager#TIME_SHIFT_MODE_NETWORK`, `https://developer.android.com/reference/android/media/tv/TvInputManager#TIME_SHIFT_MODE_AUTO`. Value is one of the following: - `https://developer.android.com/reference/android/media/tv/TvInputManager#TIME_SHIFT_MODE_OFF` - `https://developer.android.com/reference/android/media/tv/TvInputManager#TIME_SHIFT_MODE_LOCAL` - `https://developer.android.com/reference/android/media/tv/TvInputManager#TIME_SHIFT_MODE_NETWORK` - `https://developer.android.com/reference/android/media/tv/TvInputManager#TIME_SHIFT_MODE_AUTO` |

### onTimeShiftStatusChanged

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onTimeShiftStatusChanged (String inputId, 
                int status)
```

This is called when the time shift status is changed.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. <br /> |
| `status` | `int`: The current time shift status. Should be one of the followings. - `https://developer.android.com/reference/android/media/tv/TvInputManager#TIME_SHIFT_STATUS_UNSUPPORTED` - `https://developer.android.com/reference/android/media/tv/TvInputManager#TIME_SHIFT_STATUS_UNAVAILABLE` - `https://developer.android.com/reference/android/media/tv/TvInputManager#TIME_SHIFT_STATUS_AVAILABLE` . Value is one of the following: - `https://developer.android.com/reference/android/media/tv/TvInputManager#TIME_SHIFT_STATUS_UNKNOWN` - `https://developer.android.com/reference/android/media/tv/TvInputManager#TIME_SHIFT_STATUS_UNSUPPORTED` - `https://developer.android.com/reference/android/media/tv/TvInputManager#TIME_SHIFT_STATUS_UNAVAILABLE` - `https://developer.android.com/reference/android/media/tv/TvInputManager#TIME_SHIFT_STATUS_AVAILABLE` |

### onTrackSelected

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onTrackSelected (String inputId, 
                int type, 
                String trackId)
```

This is called when there is a change on the selected tracks.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. <br /> |
| `type` | `int`: The type of the track selected. The type can be `https://developer.android.com/reference/android/media/tv/TvTrackInfo#TYPE_AUDIO`, `https://developer.android.com/reference/android/media/tv/TvTrackInfo#TYPE_VIDEO` or `https://developer.android.com/reference/android/media/tv/TvTrackInfo#TYPE_SUBTITLE`. <br /> |
| `trackId` | `String`: The ID of the track selected. <br /> |

### onTracksChanged

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onTracksChanged (String inputId, 
                List<TvTrackInfo> tracks)
```

This is called when the track information has been changed.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. <br /> |
| `tracks` | `List`: A list which includes track information. <br /> |

### onTuned

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onTuned (String inputId, 
                Uri channelUri)
```

This is called when the session has been tuned to the given channel.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: This value cannot be `null`. <br /> |
| `channelUri` | `Uri`: The URI of a channel. This value cannot be `null`. <br /> |

### onTvMessage

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onTvMessage (String inputId, 
                int type, 
                Bundle data)
```

This is called when a new TV Message has been received.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. This value cannot be `null`. <br /> |
| `type` | `int`: The type of message received, such as `https://developer.android.com/reference/android/media/tv/TvInputManager#TV_MESSAGE_TYPE_WATERMARK` Value is one of the following: - `https://developer.android.com/reference/android/media/tv/TvInputManager#TV_MESSAGE_TYPE_WATERMARK` - `https://developer.android.com/reference/android/media/tv/TvInputManager#TV_MESSAGE_TYPE_CLOSED_CAPTION` - `https://developer.android.com/reference/android/media/tv/TvInputManager#TV_MESSAGE_TYPE_OTHER` |
| `data` | `Bundle`: The raw data of the message. The bundle keys are: `https://developer.android.com/reference/android/media/tv/TvInputManager#TV_MESSAGE_KEY_STREAM_ID`, `https://developer.android.com/reference/android/media/tv/TvInputManager#TV_MESSAGE_KEY_GROUP_ID`, `https://developer.android.com/reference/android/media/tv/TvInputManager#TV_MESSAGE_KEY_SUBTYPE`, `https://developer.android.com/reference/android/media/tv/TvInputManager#TV_MESSAGE_KEY_RAW_DATA`. See `https://developer.android.com/reference/android/media/tv/TvInputManager#TV_MESSAGE_KEY_SUBTYPE` for more information on how to parse this data. This value cannot be `null`. <br /> |

### onVideoAvailable

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onVideoAvailable (String inputId)
```

This is called when the video is available, so the TV input starts the playback.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. <br /> |

### onVideoFreezeUpdated

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onVideoFreezeUpdated (String inputId, 
                boolean isFrozen)
```

This is called when the video freeze status is updated.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. This value cannot be `null`. <br /> |
| `isFrozen` | `boolean`: Whether or not the video is currently frozen on the las <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/tv/TvView#setVideoFrozen(boolean)`

### onVideoSizeChanged

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onVideoSizeChanged (String inputId, 
                int width, 
                int height)
```

This is invoked when the video size has been changed. It is also called when the first
time video size information becomes available after this view is tuned to a specific
channel.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. <br /> |
| `width` | `int`: The width of the video. <br /> |
| `height` | `int`: The height of the video. <br /> |

### onVideoUnavailable

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onVideoUnavailable (String inputId, 
                int reason)
```

This is called when the video is not available, so the TV input stops the playback.

<br />

| Parameters ||
|---|---|
| `inputId` | `String`: The ID of the TV input bound to this view. <br /> |
| `reason` | `int`: The reason why the TV input stopped the playback: - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_UNKNOWN` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_TUNING` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_WEAK_SIGNAL` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_BUFFERING` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_AUDIO_ONLY` - `https://developer.android.com/` . Value is one of the following: - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_UNKNOWN` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_TUNING` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_WEAK_SIGNAL` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_BUFFERING` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_AUDIO_ONLY` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_NOT_CONNECTED` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_INSUFFICIENT_RESOURCE` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_CAS_INSUFFICIENT_OUTPUT_PROTECTION` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_CAS_PVR_RECORDING_NOT_ALLOWED` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_CAS_LICENSE_EXPIRED` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_CAS_NEED_ACTIVATION` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_CAS_NEED_PAIRING` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_CAS_NO_CARD` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_CAS_CARD_MUTE` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_CAS_CARD_INVALID` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_CAS_BLACKOUT` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_CAS_REBOOTING` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_CAS_UNKNOWN` - `https://developer.android.com/reference/android/media/tv/TvInputManager#VIDEO_UNAVAILABLE_REASON_STOPPED` |