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

# TvInteractiveAppView.TvInteractiveAppCallback

*** ** * ** ***

` public static abstract class TvInteractiveAppView.TvInteractiveAppCallback `   
` extends https://developer.android.com/reference/java/lang/Object ` ` `

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

<br />

*** ** * ** ***

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

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#TvInteractiveAppCallback()() ` |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onBiInteractiveAppCreated(java.lang.String,%20android.net.Uri,%20java.lang.String)(https://developer.android.com/reference/java/lang/String iAppServiceId, https://developer.android.com/reference/android/net/Uri biIAppUri, https://developer.android.com/reference/java/lang/String biIAppId) ` This is called when broadcast-independent (BI) interactive app is created. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onPlaybackCommandRequest(java.lang.String,%20java.lang.String,%20android.os.Bundle)(https://developer.android.com/reference/java/lang/String iAppServiceId, https://developer.android.com/reference/java/lang/String cmdType, https://developer.android.com/reference/android/os/Bundle parameters) ` This is called when a playback command is requested to be processed by the related TV input. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestAvailableSpeeds(java.lang.String)(https://developer.android.com/reference/java/lang/String iAppServiceId) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestAvailableSpeeds()` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestCertificate(java.lang.String,%20java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String iAppServiceId, https://developer.android.com/reference/java/lang/String host, int port) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestCertificate(java.lang.String,%20int)` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestCurrentChannelLcn(java.lang.String)(https://developer.android.com/reference/java/lang/String iAppServiceId) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestCurrentChannelLcn()` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestCurrentChannelUri(java.lang.String)(https://developer.android.com/reference/java/lang/String iAppServiceId) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestCurrentChannelUri()` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestCurrentTvInputId(java.lang.String)(https://developer.android.com/reference/java/lang/String iAppServiceId) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestCurrentTvInputId()` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestCurrentVideoBounds(java.lang.String)(https://developer.android.com/reference/java/lang/String iAppServiceId) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestCurrentVideoBounds()` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestScheduleRecording(java.lang.String,%20java.lang.String,%20java.lang.String,%20android.net.Uri,%20long,%20long,%20int,%20android.os.Bundle)(https://developer.android.com/reference/java/lang/String iAppServiceId, https://developer.android.com/reference/java/lang/String requestId, https://developer.android.com/reference/java/lang/String inputId, https://developer.android.com/reference/android/net/Uri channelUri, long startTime, long duration, int repeatDays, https://developer.android.com/reference/android/os/Bundle params) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestScheduleRecording(java.lang.String,%20java.lang.String,%20android.net.Uri,%20long,%20long,%20int,%20android.os.Bundle)` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestScheduleRecording(java.lang.String,%20java.lang.String,%20java.lang.String,%20android.net.Uri,%20android.net.Uri,%20android.os.Bundle)(https://developer.android.com/reference/java/lang/String iAppServiceId, https://developer.android.com/reference/java/lang/String requestId, https://developer.android.com/reference/java/lang/String inputId, https://developer.android.com/reference/android/net/Uri channelUri, https://developer.android.com/reference/android/net/Uri programUri, https://developer.android.com/reference/android/os/Bundle params) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestScheduleRecording(java.lang.String,%20java.lang.String,%20android.net.Uri,%20android.net.Uri,%20android.os.Bundle)` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestSelectedTrackInfo(java.lang.String)(https://developer.android.com/reference/java/lang/String iAppServiceId) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestSelectedTrackInfo()` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestSigning(java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String,%20byte[])(https://developer.android.com/reference/java/lang/String iAppServiceId, https://developer.android.com/reference/java/lang/String signingId, https://developer.android.com/reference/java/lang/String algorithm, https://developer.android.com/reference/java/lang/String alias, byte[] data) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestSigning(java.lang.String,%20java.lang.String,%20java.lang.String,%20byte[])` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestSigning(java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String,%20int,%20byte[])(https://developer.android.com/reference/java/lang/String iAppServiceId, https://developer.android.com/reference/java/lang/String signingId, https://developer.android.com/reference/java/lang/String algorithm, https://developer.android.com/reference/java/lang/String host, int port, byte[] data) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestSigning(java.lang.String,%20java.lang.String,%20java.lang.String,%20int,%20byte[])` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestStartRecording(java.lang.String,%20java.lang.String,%20android.net.Uri)(https://developer.android.com/reference/java/lang/String iAppServiceId, https://developer.android.com/reference/java/lang/String requestId, https://developer.android.com/reference/android/net/Uri programUri) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestStartRecording(java.lang.String,%20android.net.Uri)` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestStopRecording(java.lang.String,%20java.lang.String)(https://developer.android.com/reference/java/lang/String iAppServiceId, https://developer.android.com/reference/java/lang/String recordingId) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestStopRecording(java.lang.String)` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestStreamVolume(java.lang.String)(https://developer.android.com/reference/java/lang/String iAppServiceId) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestStreamVolume()` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestTimeShiftMode(java.lang.String)(https://developer.android.com/reference/java/lang/String iAppServiceId) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestTimeShiftMode()` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestTrackInfoList(java.lang.String)(https://developer.android.com/reference/java/lang/String iAppServiceId) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestTrackInfoList()` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestTvRecordingInfo(java.lang.String,%20java.lang.String)(https://developer.android.com/reference/java/lang/String iAppServiceId, https://developer.android.com/reference/java/lang/String recordingId) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestTvRecordingInfo(java.lang.String)` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onRequestTvRecordingInfoList(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String iAppServiceId, int type) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestTvRecordingInfoList(int)` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onSetTvRecordingInfo(java.lang.String,%20java.lang.String,%20android.media.tv.TvRecordingInfo)(https://developer.android.com/reference/java/lang/String iAppServiceId, https://developer.android.com/reference/java/lang/String recordingId, https://developer.android.com/reference/android/media/tv/TvRecordingInfo recordingInfo) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#setTvRecordingInfo(java.lang.String,%20android.media.tv.TvRecordingInfo)` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onSetVideoBounds(java.lang.String,%20android.graphics.Rect)(https://developer.android.com/reference/java/lang/String iAppServiceId, https://developer.android.com/reference/android/graphics/Rect rect) ` This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#setVideoBounds(android.graphics.Rect)` is called. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onStateChanged(java.lang.String,%20int,%20int)(https://developer.android.com/reference/java/lang/String iAppServiceId, int state, int err) ` This is called when the state of corresponding interactive app is changed. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onTeletextAppStateChanged(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String iAppServiceId, int state) ` This is called when the digital teletext app state is changed. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView.TvInteractiveAppCallback#onTimeShiftCommandRequest(java.lang.String,%20java.lang.String,%20android.os.Bundle)(https://developer.android.com/reference/java/lang/String iAppServiceId, https://developer.android.com/reference/java/lang/String cmdType, https://developer.android.com/reference/android/os/Bundle parameters) ` This is called when a time shift command is requested to be processed by the related TV input. |

### 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

### TvInteractiveAppCallback

```
public TvInteractiveAppCallback ()
```

<br />

<br />

## Public methods

### onBiInteractiveAppCreated

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

```
public void onBiInteractiveAppCreated (String iAppServiceId, 
                Uri biIAppUri, 
                String biIAppId)
```

This is called when broadcast-independent (BI) interactive app is created.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `biIAppUri` | `Uri`: URI associated this BI interactive app. This is the same URI in `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView#createBiInteractiveApp(android.net.Uri,%20android.os.Bundle)` This value cannot be `null`. <br /> |
| `biIAppId` | `String`: BI interactive app ID, which can be used to destroy the BI interactive app. `null` if it's not created successfully. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView#createBiInteractiveApp(android.net.Uri,%20android.os.Bundle)`
- `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView#destroyBiInteractiveApp(java.lang.String)`

### onPlaybackCommandRequest

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

```
public void onPlaybackCommandRequest (String iAppServiceId, 
                String cmdType, 
                Bundle parameters)
```

This is called when a playback command is requested to be processed by the related TV input.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `cmdType` | `String`: type of the command. This value cannot be `null`. Value is one of the following: - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService#PLAYBACK_COMMAND_TYPE_TUNE` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService#PLAYBACK_COMMAND_TYPE_TUNE_NEXT` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService#PLAYBACK_COMMAND_TYPE_TUNE_PREV` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService#PLAYBACK_COMMAND_TYPE_STOP` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService#PLAYBACK_COMMAND_TYPE_SET_STREAM_VOLUME` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService#PLAYBACK_COMMAND_TYPE_SELECT_TRACK` |
| `parameters` | `Bundle`: parameters of the command. This value cannot be `null`. <br /> |

### onRequestAvailableSpeeds

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

```
public void onRequestAvailableSpeeds (String iAppServiceId)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestAvailableSpeeds()` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |

### onRequestCertificate

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

```
public void onRequestCertificate (String iAppServiceId, 
                String host, 
                int port)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestCertificate(java.lang.String,%20int)` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `host` | `String`: The hostname of the SSL authentication server. This value cannot be `null`. <br /> |
| `port` | `int`: The port of the SSL authentication server. <br /> |

### onRequestCurrentChannelLcn

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

```
public void onRequestCurrentChannelLcn (String iAppServiceId)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestCurrentChannelLcn()` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |

### onRequestCurrentChannelUri

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

```
public void onRequestCurrentChannelUri (String iAppServiceId)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestCurrentChannelUri()` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |

### onRequestCurrentTvInputId

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

```
public void onRequestCurrentTvInputId (String iAppServiceId)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestCurrentTvInputId()` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |

### onRequestCurrentVideoBounds

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

```
public void onRequestCurrentVideoBounds (String iAppServiceId)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestCurrentVideoBounds()` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |

### onRequestScheduleRecording

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

```
public void onRequestScheduleRecording (String iAppServiceId, 
                String requestId, 
                String inputId, 
                Uri channelUri, 
                long startTime, 
                long duration, 
                int repeatDays, 
                Bundle params)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestScheduleRecording(java.lang.String,%20java.lang.String,%20android.net.Uri,%20long,%20long,%20int,%20android.os.Bundle)` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `requestId` | `String`: The ID of this request which is used to match the corresponding response. The request ID in `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView#notifyRecordingScheduled(java.lang.String,%20java.lang.String)` for this request is the same as the ID sent here. This should be defined by the TIAS and can be any string. Should this API be called with the same requestId twice, both requests should be handled regardless by the TV application. This value cannot be `null`. <br /> |
| `inputId` | `String`: The ID of the TV input for the given channel. This value cannot be `null`. <br /> |
| `channelUri` | `Uri`: The URI of a channel to be recorded. This value cannot be `null`. <br /> |
| `startTime` | `long`: The start time of the recording in milliseconds since epoch. <br /> |
| `duration` | `long`: The duration of the recording in milliseconds. <br /> |
| `repeatDays` | `int`: The repeated days. 0 if not repeated. <br /> |
| `params` | `Bundle`: Domain-specific data for this tune request. Keys *must* be a scoped name, i.e. prefixed with a package name you own, so that different developers will not create conflicting keys. This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/tv/TvRecordingClient#tune(java.lang.String,%20android.net.Uri,%20android.os.Bundle)`
- `https://developer.android.com/reference/android/media/tv/TvRecordingClient#startRecording(android.net.Uri)`

### onRequestScheduleRecording

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

```
public void onRequestScheduleRecording (String iAppServiceId, 
                String requestId, 
                String inputId, 
                Uri channelUri, 
                Uri programUri, 
                Bundle params)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestScheduleRecording(java.lang.String,%20java.lang.String,%20android.net.Uri,%20android.net.Uri,%20android.os.Bundle)` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `requestId` | `String`: The ID of this request which is used to match the corresponding response. The request ID in `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView#notifyRecordingScheduled(java.lang.String,%20java.lang.String)` for this request is the same as the ID sent here. This should be defined by the TIAS and can be any string. Should this API be called with the same requestId twice, both requests should be handled regardless by the TV application. This value cannot be `null`. <br /> |
| `inputId` | `String`: The ID of the TV input for the given channel. This value cannot be `null`. <br /> |
| `channelUri` | `Uri`: The URI of a channel to be recorded. This value cannot be `null`. <br /> |
| `programUri` | `Uri`: The URI of the TV program to be recorded. This value cannot be `null`. <br /> |
| `params` | `Bundle`: Domain-specific data for this tune request. Keys *must* be a scoped name, i.e. prefixed with a package name you own, so that different developers will not create conflicting keys. This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/tv/TvRecordingClient#tune(java.lang.String,%20android.net.Uri,%20android.os.Bundle)`
- `https://developer.android.com/reference/android/media/tv/TvRecordingClient#startRecording(android.net.Uri)`

### onRequestSelectedTrackInfo

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

```
public void onRequestSelectedTrackInfo (String iAppServiceId)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestSelectedTrackInfo()` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |

### onRequestSigning

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

```
public void onRequestSigning (String iAppServiceId, 
                String signingId, 
                String algorithm, 
                String alias, 
                byte[] data)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestSigning(java.lang.String,%20java.lang.String,%20java.lang.String,%20byte[])` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `signingId` | `String`: the ID to identify the request. This value cannot be `null`. <br /> |
| `algorithm` | `String`: the standard name of the signature algorithm requested, such as MD5withRSA, SHA256withDSA, etc. This value cannot be `null`. <br /> |
| `alias` | `String`: the alias of the corresponding `https://developer.android.com/reference/java/security/KeyStore`. This value cannot be `null`. <br /> |
| `data` | `byte`: the original bytes to be signed. This value cannot be `null`. <br /> |

### onRequestSigning

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

```
public void onRequestSigning (String iAppServiceId, 
                String signingId, 
                String algorithm, 
                String host, 
                int port, 
                byte[] data)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestSigning(java.lang.String,%20java.lang.String,%20java.lang.String,%20int,%20byte[])` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `signingId` | `String`: the ID to identify the request. This value cannot be `null`. <br /> |
| `algorithm` | `String`: the standard name of the signature algorithm requested, such as MD5withRSA, SHA256withDSA, etc. This value cannot be `null`. <br /> |
| `host` | `String`: The hostname of the SSL authentication server. This value cannot be `null`. <br /> |
| `port` | `int`: The port of the SSL authentication server. <br /> |
| `data` | `byte`: the original bytes to be signed. This value cannot be `null`. <br /> |

### onRequestStartRecording

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

```
public void onRequestStartRecording (String iAppServiceId, 
                String requestId, 
                Uri programUri)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestStartRecording(java.lang.String,%20android.net.Uri)` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `requestId` | `String`: The ID of this request which is used to match the corresponding response. The request ID in `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView#notifyRecordingStarted(java.lang.String,%20java.lang.String)` for this request is the same as the ID sent here. This should be defined by the TIAS and can be any string. Should this API be called with the same requestId twice, both requests should be handled regardless by the TV application. This value cannot be `null`. <br /> |
| `programUri` | `Uri`: The URI of the program to record. This value may be `null`. <br /> |

### onRequestStopRecording

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

```
public void onRequestStopRecording (String iAppServiceId, 
                String recordingId)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestStopRecording(java.lang.String)` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `recordingId` | `String`: The ID of the recording to stop. This is provided by the TV app in `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView#notifyRecordingStarted(java.lang.String,%20java.lang.String)` This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView#notifyRecordingStarted(java.lang.String,%20java.lang.String)`
- `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView#notifyRecordingStopped(java.lang.String)`

### onRequestStreamVolume

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

```
public void onRequestStreamVolume (String iAppServiceId)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestStreamVolume()` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |

### onRequestTimeShiftMode

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

```
public void onRequestTimeShiftMode (String iAppServiceId)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestTimeShiftMode()` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |

### onRequestTrackInfoList

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

```
public void onRequestTrackInfoList (String iAppServiceId)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestTrackInfoList()` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |

### onRequestTvRecordingInfo

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

```
public void onRequestTvRecordingInfo (String iAppServiceId, 
                String recordingId)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestTvRecordingInfo(java.lang.String)` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `recordingId` | `String`: The ID of the recording to get the info for. This is provided by the TV app in `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView#notifyRecordingStarted(java.lang.String,%20java.lang.String)` This value cannot be `null`. <br /> |

### onRequestTvRecordingInfoList

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

```
public void onRequestTvRecordingInfoList (String iAppServiceId, 
                int type)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#requestTvRecordingInfoList(int)` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `type` | `int`: The type of recording requested to retrieve. Value is one of the following: - `https://developer.android.com/reference/android/media/tv/TvRecordingInfo#RECORDING_SCHEDULED` - `https://developer.android.com/reference/android/media/tv/TvRecordingInfo#RECORDING_IN_PROGRESS` - `https://developer.android.com/reference/android/media/tv/TvRecordingInfo#RECORDING_ALL` |

### onSetTvRecordingInfo

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

```
public void onSetTvRecordingInfo (String iAppServiceId, 
                String recordingId, 
                TvRecordingInfo recordingInfo)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#setTvRecordingInfo(java.lang.String,%20android.media.tv.TvRecordingInfo)` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `recordingId` | `String`: The ID of the recording to set the info for. This is provided by the TV app in `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppView#notifyRecordingStarted(java.lang.String,%20java.lang.String)` This value cannot be `null`. <br /> |
| `recordingInfo` | `TvRecordingInfo`: The `https://developer.android.com/reference/android/media/tv/TvRecordingInfo` to set to the recording. This value cannot be `null`. <br /> |

### onSetVideoBounds

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

```
public void onSetVideoBounds (String iAppServiceId, 
                Rect rect)
```

This is called when `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService.Session#setVideoBounds(android.graphics.Rect)` is called.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `rect` | `Rect`: the video bound. This value cannot be `null`. <br /> |

### onStateChanged

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

```
public void onStateChanged (String iAppServiceId, 
                int state, 
                int err)
```

This is called when the state of corresponding interactive app is changed.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `state` | `int`: the current state. Value is one of the following: - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#INTERACTIVE_APP_STATE_STOPPED` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#INTERACTIVE_APP_STATE_RUNNING` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#INTERACTIVE_APP_STATE_ERROR` |
| `err` | `int`: the error code for error state. `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#ERROR_NONE` is used when the state is not `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#INTERACTIVE_APP_STATE_ERROR`. Value is one of the following: - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#ERROR_NONE` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#ERROR_UNKNOWN` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#ERROR_NOT_SUPPORTED` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#ERROR_WEAK_SIGNAL` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#ERROR_RESOURCE_UNAVAILABLE` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#ERROR_BLOCKED` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#ERROR_ENCRYPTED` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#ERROR_UNKNOWN_CHANNEL` |

### onTeletextAppStateChanged

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

```
public void onTeletextAppStateChanged (String iAppServiceId, 
                int state)
```

This is called when the digital teletext app state is changed.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `state` | `int`: digital teletext app current state. Value is one of the following: - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#TELETEXT_APP_STATE_SHOW` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#TELETEXT_APP_STATE_HIDE` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppManager#TELETEXT_APP_STATE_ERROR` |

### onTimeShiftCommandRequest

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

```
public void onTimeShiftCommandRequest (String iAppServiceId, 
                String cmdType, 
                Bundle parameters)
```

This is called when a time shift command is requested to be processed by the related TV input.

<br />

| Parameters ||
|---|---|
| `iAppServiceId` | `String`: The ID of the TV interactive app service bound to this view. This value cannot be `null`. <br /> |
| `cmdType` | `String`: type of the command. This value cannot be `null`. Value is one of the following: - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService#TIME_SHIFT_COMMAND_TYPE_PLAY` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService#TIME_SHIFT_COMMAND_TYPE_PAUSE` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService#TIME_SHIFT_COMMAND_TYPE_RESUME` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService#TIME_SHIFT_COMMAND_TYPE_SEEK_TO` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService#TIME_SHIFT_COMMAND_TYPE_SET_PLAYBACK_PARAMS` - `https://developer.android.com/reference/android/media/tv/interactive/TvInteractiveAppService#TIME_SHIFT_COMMAND_TYPE_SET_MODE` |
| `parameters` | `Bundle`: parameters of the command. This value cannot be `null`. <br /> |