Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Nested Classes](https://developer.android.com/reference/android/media/tv/ad/TvAdManager#nestedclasses) \| [Constants](https://developer.android.com/reference/android/media/tv/ad/TvAdManager#constants) \| [Methods](https://developer.android.com/reference/android/media/tv/ad/TvAdManager#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/media/tv/ad/TvAdManager#inhmethods)

# TvAdManager

*** ** * ** ***


`
public

final

class
TvAdManager
`


`

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


`

`


`

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

<br />

*** ** * ** ***

Central system API to the overall client-side TV AD architecture, which arbitrates interaction
between applications and AD services.

## Summary

| ### Nested classes ||
|---|---|
| ` class` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager.TvAdServiceCallback` Callback used to monitor status of the TV advertisement service. |

| ### Constants ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#ACTION_APP_LINK_COMMAND` Broadcast intent action to send app command to TV app. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#APP_LINK_KEY_BACK_URI` Key for back URI in app link command. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#APP_LINK_KEY_CLASS_NAME` Key for class name in app link. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#APP_LINK_KEY_COMMAND_TYPE` Key for command type in app link command. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#APP_LINK_KEY_PACKAGE_NAME` Key for package name in app link. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#APP_LINK_KEY_SERVICE_ID` Key for service ID in app link command. |
| `int` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#ERROR_BLOCKED` Error code for blocked contents. |
| `int` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#ERROR_ENCRYPTED` Error code when the key or module is missing for the encrypted channel. |
| `int` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#ERROR_NONE` No error. |
| `int` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#ERROR_NOT_SUPPORTED` Error code for an unsupported channel. |
| `int` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#ERROR_RESOURCE_UNAVAILABLE` Error code when resource (e.g. tuner) is unavailable. |
| `int` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#ERROR_UNKNOWN` Unknown error code. |
| `int` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#ERROR_UNKNOWN_CHANNEL` Error code when the current channel is an unknown channel. |
| `int` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#ERROR_WEAK_SIGNAL` Error code for weak signal. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#INTENT_KEY_AD_SERVICE_ID` Intent key for TV AD service ID. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#INTENT_KEY_CHANNEL_URI` Intent key for TV channel URI. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#INTENT_KEY_COMMAND_TYPE` Intent key for command type. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#INTENT_KEY_TV_INPUT_ID` Intent key for TV input ID. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#SESSION_DATA_KEY_AD_BUFFER` An object of `https://developer.android.com/reference/android/media/tv/AdBuffer`. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#SESSION_DATA_KEY_AD_REQUEST` An object of `https://developer.android.com/reference/android/media/tv/AdRequest`. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#SESSION_DATA_KEY_BROADCAST_INFO_REQUEST` An object of `https://developer.android.com/reference/android/media/tv/BroadcastInfoRequest`. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#SESSION_DATA_KEY_REQUEST_ID` The ID of `https://developer.android.com/reference/android/media/tv/BroadcastInfoRequest`. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#SESSION_DATA_TYPE_AD_BUFFER_READY` Notifies the advertisement buffer is ready. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#SESSION_DATA_TYPE_AD_REQUEST` Sends an advertisement request to be processed by the related TV input. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#SESSION_DATA_TYPE_BROADCAST_INFO_REQUEST` Sends request for broadcast info. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#SESSION_DATA_TYPE_REMOVE_BROADCAST_INFO_REQUEST` Removes request for broadcast info. |
| `int` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#SESSION_STATE_ERROR` Error state of AD service session. |
| `int` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#SESSION_STATE_RUNNING` Running state of AD service session. |
| `int` | `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#SESSION_STATE_STOPPED` Stopped (or not started) state of AD service session. |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/media/tv/ad/TvAdServiceInfo>` | ` https://developer.android.com/reference/android/media/tv/ad/TvAdManager#getTvAdServiceList()() ` Returns the complete list of TV AD services on the system. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/ad/TvAdManager#registerCallback(java.util.concurrent.Executor,%20android.media.tv.ad.TvAdManager.TvAdServiceCallback)(https://developer.android.com/reference/java/util/concurrent/Executor executor, https://developer.android.com/reference/android/media/tv/ad/TvAdManager.TvAdServiceCallback callback) ` Registers a `https://developer.android.com/reference/android/media/tv/ad/TvAdManager.TvAdServiceCallback`. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/ad/TvAdManager#sendAppLinkCommand(java.lang.String,%20android.os.Bundle)(https://developer.android.com/reference/java/lang/String serviceId, https://developer.android.com/reference/android/os/Bundle command) ` Sends app link command. |
| ` void` | ` https://developer.android.com/reference/android/media/tv/ad/TvAdManager#unregisterCallback(android.media.tv.ad.TvAdManager.TvAdServiceCallback)(https://developer.android.com/reference/android/media/tv/ad/TvAdManager.TvAdServiceCallback callback) ` Unregisters the existing `https://developer.android.com/reference/android/media/tv/ad/TvAdManager.TvAdServiceCallback`. |

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

## Constants

### ACTION_APP_LINK_COMMAND

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

```
public static final String ACTION_APP_LINK_COMMAND
```

Broadcast intent action to send app command to TV app.

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#sendAppLinkCommand(java.lang.String,%20android.os.Bundle)`

Constant Value:

"android.media.tv.ad.action.APP_LINK_COMMAND"


### APP_LINK_KEY_BACK_URI

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

```
public static final String APP_LINK_KEY_BACK_URI
```

Key for back URI in app link command.

Type: String

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#sendAppLinkCommand(java.lang.String,%20android.os.Bundle)`

Constant Value:

"back_uri"


### APP_LINK_KEY_CLASS_NAME

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

```
public static final String APP_LINK_KEY_CLASS_NAME
```

Key for class name in app link.

Type: String

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#sendAppLinkCommand(java.lang.String,%20android.os.Bundle)`

Constant Value:

"class_name"


### APP_LINK_KEY_COMMAND_TYPE

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

```
public static final String APP_LINK_KEY_COMMAND_TYPE
```

Key for command type in app link command.

Type: String

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#sendAppLinkCommand(java.lang.String,%20android.os.Bundle)`

Constant Value:

"command_type"


### APP_LINK_KEY_PACKAGE_NAME

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

```
public static final String APP_LINK_KEY_PACKAGE_NAME
```

Key for package name in app link.

Type: String

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#sendAppLinkCommand(java.lang.String,%20android.os.Bundle)`

Constant Value:

"package_name"


### APP_LINK_KEY_SERVICE_ID

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

```
public static final String APP_LINK_KEY_SERVICE_ID
```

Key for service ID in app link command.

Type: String

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#sendAppLinkCommand(java.lang.String,%20android.os.Bundle)`

Constant Value:

"service_id"


### ERROR_BLOCKED

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

```
public static final int ERROR_BLOCKED
```

Error code for blocked contents.

<br />

Constant Value:

5
(0x00000005)


### ERROR_ENCRYPTED

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

```
public static final int ERROR_ENCRYPTED
```

Error code when the key or module is missing for the encrypted channel.

<br />

Constant Value:

6
(0x00000006)


### ERROR_NONE

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

```
public static final int ERROR_NONE
```

No error.

<br />

Constant Value:

0
(0x00000000)


### ERROR_NOT_SUPPORTED

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

```
public static final int ERROR_NOT_SUPPORTED
```

Error code for an unsupported channel.

<br />

Constant Value:

2
(0x00000002)


### ERROR_RESOURCE_UNAVAILABLE

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

```
public static final int ERROR_RESOURCE_UNAVAILABLE
```

Error code when resource (e.g. tuner) is unavailable.

<br />

Constant Value:

4
(0x00000004)


### ERROR_UNKNOWN

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

```
public static final int ERROR_UNKNOWN
```

Unknown error code.

<br />

Constant Value:

1
(0x00000001)


### ERROR_UNKNOWN_CHANNEL

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

```
public static final int ERROR_UNKNOWN_CHANNEL
```

Error code when the current channel is an unknown channel.

<br />

Constant Value:

7
(0x00000007)


### ERROR_WEAK_SIGNAL

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

```
public static final int ERROR_WEAK_SIGNAL
```

Error code for weak signal.

<br />

Constant Value:

3
(0x00000003)


### INTENT_KEY_AD_SERVICE_ID

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

```
public static final String INTENT_KEY_AD_SERVICE_ID
```

Intent key for TV AD service ID. It's used to send app command to TV app.

Type: String

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#sendAppLinkCommand(java.lang.String,%20android.os.Bundle)`
- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#ACTION_APP_LINK_COMMAND`
- `https://developer.android.com/reference/android/media/tv/ad/TvAdServiceInfo#getId()`

Constant Value:

"ad_service_id"


### INTENT_KEY_CHANNEL_URI

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

```
public static final String INTENT_KEY_CHANNEL_URI
```

Intent key for TV channel URI. It's used to send app command to TV app.

Type: android.net.Uri

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#sendAppLinkCommand(java.lang.String,%20android.os.Bundle)`
- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#ACTION_APP_LINK_COMMAND`

Constant Value:

"channel_uri"


### INTENT_KEY_COMMAND_TYPE

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

```
public static final String INTENT_KEY_COMMAND_TYPE
```

Intent key for command type. It's used to send app command to TV app. The value of this key
could vary according to TV apps.

Type: String

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#sendAppLinkCommand(java.lang.String,%20android.os.Bundle)`
- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#ACTION_APP_LINK_COMMAND`

Constant Value:

"command_type"


### INTENT_KEY_TV_INPUT_ID

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

```
public static final String INTENT_KEY_TV_INPUT_ID
```

Intent key for TV input ID. It's used to send app command to TV app.

Type: String

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#sendAppLinkCommand(java.lang.String,%20android.os.Bundle)`
- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#ACTION_APP_LINK_COMMAND`

Constant Value:

"tv_input_id"


### SESSION_DATA_KEY_AD_BUFFER

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

```
public static final String SESSION_DATA_KEY_AD_BUFFER
```

An object of `https://developer.android.com/reference/android/media/tv/AdBuffer`.

Type: android.media.tv.AdBuffer

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdService.Session#sendTvAdSessionData(java.lang.String,%20android.os.Bundle)`

Constant Value:

"ad_buffer"


### SESSION_DATA_KEY_AD_REQUEST

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

```
public static final String SESSION_DATA_KEY_AD_REQUEST
```

An object of `https://developer.android.com/reference/android/media/tv/AdRequest`.

Type: android.media.tv.AdRequest

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdService.Session#sendTvAdSessionData(java.lang.String,%20android.os.Bundle)`

Constant Value:

"ad_request"


### SESSION_DATA_KEY_BROADCAST_INFO_REQUEST

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

```
public static final String SESSION_DATA_KEY_BROADCAST_INFO_REQUEST
```

An object of `https://developer.android.com/reference/android/media/tv/BroadcastInfoRequest`.

Type: android.media.tv.BroadcastInfoRequest

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdService.Session#sendTvAdSessionData(java.lang.String,%20android.os.Bundle)`

Constant Value:

"broadcast_info_request"


### SESSION_DATA_KEY_REQUEST_ID

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

```
public static final String SESSION_DATA_KEY_REQUEST_ID
```

The ID of `https://developer.android.com/reference/android/media/tv/BroadcastInfoRequest`.

Type: Integer

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdService.Session#sendTvAdSessionData(java.lang.String,%20android.os.Bundle)`

Constant Value:

"request_id"


### SESSION_DATA_TYPE_AD_BUFFER_READY

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

```
public static final String SESSION_DATA_TYPE_AD_BUFFER_READY
```

Notifies the advertisement buffer is ready.

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdService.Session#sendTvAdSessionData(java.lang.String,%20android.os.Bundle)`
- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#SESSION_DATA_KEY_AD_BUFFER`

Constant Value:

"ad_buffer_ready"


### SESSION_DATA_TYPE_AD_REQUEST

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

```
public static final String SESSION_DATA_TYPE_AD_REQUEST
```

Sends an advertisement request to be processed by the related TV input.

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdService.Session#sendTvAdSessionData(java.lang.String,%20android.os.Bundle)`
- `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#SESSION_DATA_KEY_AD_REQUEST`

Constant Value:

"ad_request"


### SESSION_DATA_TYPE_BROADCAST_INFO_REQUEST

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

```
public static final String SESSION_DATA_TYPE_BROADCAST_INFO_REQUEST
```

Sends request for broadcast info.

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdService.Session#sendTvAdSessionData(java.lang.String,%20android.os.Bundle)`
- `https://developer.android.com/`

Constant Value:

"broadcast_info_request"


### SESSION_DATA_TYPE_REMOVE_BROADCAST_INFO_REQUEST

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

```
public static final String SESSION_DATA_TYPE_REMOVE_BROADCAST_INFO_REQUEST
```

Removes request for broadcast info.

<br />

**See also:**

- `https://developer.android.com/reference/android/media/tv/ad/TvAdService.Session#sendTvAdSessionData(java.lang.String,%20android.os.Bundle)`
- `https://developer.android.com/`

Constant Value:

"remove_broadcast_info_request"


### SESSION_STATE_ERROR

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

```
public static final int SESSION_STATE_ERROR
```

Error state of AD service session.

<br />

Constant Value:

3
(0x00000003)


### SESSION_STATE_RUNNING

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

```
public static final int SESSION_STATE_RUNNING
```

Running state of AD service session.

<br />

Constant Value:

2
(0x00000002)


### SESSION_STATE_STOPPED

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

```
public static final int SESSION_STATE_STOPPED
```

Stopped (or not started) state of AD service session.

<br />

Constant Value:

1
(0x00000001)


## Public methods

### getTvAdServiceList

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

```
public List<TvAdServiceInfo> getTvAdServiceList ()
```

Returns the complete list of TV AD services on the system.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/media/tv/ad/TvAdServiceInfo>` | List of `https://developer.android.com/reference/android/media/tv/ad/TvAdServiceInfo` for each TV AD service that describes its meta information. This value cannot be `null`. <br /> |

### registerCallback

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

```
public void registerCallback (Executor executor, 
                TvAdManager.TvAdServiceCallback callback)
```

Registers a `https://developer.android.com/reference/android/media/tv/ad/TvAdManager.TvAdServiceCallback`.

<br />

| Parameters ||
|---|---|
| `executor` | `Executor`: A `https://developer.android.com/reference/java/util/concurrent/Executor` that the status change will be delivered to. Callback and listener events are dispatched through this `https://developer.android.com/reference/java/util/concurrent/Executor`, providing an easy way to control which thread is used. To dispatch events through the main thread of your application, you can use `https://developer.android.com/reference/android/content/Context#getMainExecutor()`. Otherwise, provide an `https://developer.android.com/reference/java/util/concurrent/Executor` that dispatches to an appropriate thread. This value cannot be `null`. <br /> |
| `callback` | `TvAdManager.TvAdServiceCallback`: A callback used to monitor status of the TV AD services. This value cannot be `null`. <br /> |

### sendAppLinkCommand

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

```
public void sendAppLinkCommand (String serviceId, 
                Bundle command)
```

Sends app link command.

<br />

| Parameters ||
|---|---|
| `serviceId` | `String`: The ID of TV AD service which the command to be sent to. The ID can be found in `https://developer.android.com/reference/android/media/tv/ad/TvAdServiceInfo#getId()`. This value cannot be `null`. <br /> |
| `command` | `Bundle`: The command to be sent. The command is a bundle with the following keys: - `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#APP_LINK_KEY_PACKAGE_NAME`: The package name of the app to be launched. - `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#APP_LINK_KEY_CLASS_NAME`: The class name of the app to be launched. - `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#APP_LINK_KEY_COMMAND_TYPE`: The command type. - `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#APP_LINK_KEY_SERVICE_ID`: The ID of the TV AD service. - `https://developer.android.com/reference/android/media/tv/ad/TvAdManager#APP_LINK_KEY_BACK_URI`: The URI to be used to return to the previous app. . This value cannot be `null`. <br /> |

### unregisterCallback

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

```
public void unregisterCallback (TvAdManager.TvAdServiceCallback callback)
```

Unregisters the existing `https://developer.android.com/reference/android/media/tv/ad/TvAdManager.TvAdServiceCallback`.

<br />

| Parameters ||
|---|---|
| `callback` | `TvAdManager.TvAdServiceCallback`: The existing callback to remove. This value cannot be `null`. <br /> |