# Interface (AVCastController)
> **说明:**
>
> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
> - 本Interface首批接口从API version 10开始支持。
在投播建立后,调用[avSession.getAVCastController](arkts-apis-avsession-AVSession.md#getavcastcontroller10)后,返回会话控制器实例。控制器可查看会话ID,并可完成对会话发送命令及事件,获取会话元数据,播放状态信息等操作。
## 导入模块
```ts
import { avSession } from '@kit.AVSessionKit';
```
## getAVPlaybackState10+
getAVPlaybackState(callback: AsyncCallback\): void
获取当前的远端播放状态。结果通过callback异步回调方式返回。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ----------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| callback | AsyncCallback<[AVPlaybackState](arkts-apis-avsession-i.md#avplaybackstate10)\> | 是 | 回调函数,返回远端播放状态。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
aVCastController.getAVPlaybackState((err: BusinessError, state: avSession.AVPlaybackState) => {
if (err) {
console.error(`getAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`);
} else {
console.info('getAVPlaybackState : SUCCESS');
}
});
```
## getAVPlaybackState10+
getAVPlaybackState(): Promise\
获取当前的远端播放状态。结果通过Promise异步回调方式返回。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**返回值:**
| 类型 | 说明 |
| --------- | ------------------------------------------------------------ |
| Promise<[AVPlaybackState](arkts-apis-avsession-i.md#avplaybackstate10)\> | Promise对象。返回远端播放状态。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
aVCastController.getAVPlaybackState().then((state: avSession.AVPlaybackState) => {
console.info('getAVPlaybackState : SUCCESS');
}).catch((err: BusinessError) => {
console.error(`getAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`);
});
```
## getSupportedDecoders19+
getSupportedDecoders(): Promise\>
获取当前远端设备的解码方式。使用Promise异步回调。
**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**返回值:**
| 类型 | 说明 |
| --------- | ------------------------------------------------------------ |
| Promise\\> | Promise对象。返回远端设备所支持的解码能力列表。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
aVCastController.getSupportedDecoders().then((decoderTypes: avSession.DecoderType[]) => {
console.info(`getSupportedDecoders : SUCCESS : decoderTypes.length : ${decoderTypes.length}`);
if (decoderTypes.length > 0 ) {
console.info(`getSupportedDecoders : SUCCESS : decoderTypes[0] : ${decoderTypes[0]}`);
}
}).catch((err: BusinessError) => {
console.error(`getSupportedDecoders BusinessError: code: ${err.code}, message: ${err.message}`);
});
```
## getRecommendedResolutionLevel19+
getRecommendedResolutionLevel(decoderType: DecoderType): Promise\
通过传递解码方式,获取推荐的分辨率。使用Promise异步回调。
**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------------- | ---- | -------------------------- |
| decoderType | [DecoderType](arkts-apis-avsession-e.md#decodertype19) | 是 | 设备所支持的解码格式。
设备所支持的解码格式包括:
'OH_AVCODEC_MIMETYPE_VIDEO_AVC':VIDEO AVC,
'OH_AVCODEC_MIMETYPE_VIDEO_HEVC':VIDEO HEVC,
'OH_AVCODEC_MIMETYPE_AUDIO_VIVID':AUDIO AV3A。 |
**返回值:**
| 类型 | 说明 |
| --------- | ------------------------------------------------------------ |
| Promise\<[ResolutionLevel](arkts-apis-avsession-e.md#resolutionlevel19)\> | Promise对象。返回远端设备推荐的分辨率。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let decoderType = avSession.DecoderType.OH_AVCODEC_MIMETYPE_VIDEO_AVC;
aVCastController.getRecommendedResolutionLevel(decoderType).then((resolutionLevel: avSession.ResolutionLevel) => {
console.info('getRecommendedResolutionLevel successfully');
}).catch((err: BusinessError) => {
console.error(`getRecommendedResolutionLevel BusinessError: code: ${err.code}, message: ${err.message}`);
});
```
## getSupportedHdrCapabilities19+
getSupportedHdrCapabilities(): Promise\>
获取当前的远端设备所支持的HDR能力。使用Promise异步回调。
**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**返回值:**
| 类型 | 说明 |
| --------- | ------------------------------------------------------------ |
| Promise\\> | Promise对象。返回远端设备所支持的HDR能力。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
import type hdrCapability from './@ohos.graphics.hdrCapability';
aVCastController.getSupportedHdrCapabilities().then((hdrFormats: hdrCapability.HDRFormat[]) => {
console.info(`getSupportedHdrCapabilities : SUCCESS : hdrFormats.length : ${hdrFormats.length}`);
if (hdrFormats.length > 0 ) {
console.info(`getSupportedHdrCapabilities : SUCCESS : descriptors[0] : ${hdrFormats[0]}`);
}
}).catch((err: BusinessError) => {
console.error(`getSupportedHdrCapabilities BusinessError: code: ${err.code}, message: ${err.message}`);
});
```
## getSupportedPlaySpeeds19+
getSupportedPlaySpeeds(): Promise\>
获取当前的远端设备所支持倍速播放列表。使用Promise异步回调。
**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**返回值:**
| 类型 | 说明 |
| --------- | ------------------------------------------------------------ |
| Promise\\> | Promise对象。返回远端设备所支持的倍速播放列表。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
aVCastController.getSupportedPlaySpeeds().then((nums: number[]) => {
console.info(`getSupportedPlaySpeeds : SUCCESS : hdrFormats.length : ${nums.length}`);
if (nums.length > 0 ) {
console.info(`getSupportedPlaySpeeds : SUCCESS : descriptors[0] : ${nums[0]}`);
}
}).catch((err: BusinessError) => {
console.error(`getSupportedPlaySpeeds BusinessError: code: ${err.code}, message: ${err.message}`);
});
```
## sendControlCommand10+
sendControlCommand(command: AVCastControlCommand): Promise\
通过控制器发送命令到其对应的会话。结果通过Promise异步回调方式返回。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------------------------- | ---- | ------------------------------ |
| command | [AVCastControlCommand](arkts-apis-avsession-i.md#avcastcontrolcommand10) | 是 | 会话的相关命令和命令相关参数。 |
**返回值:**
| 类型 | 说明 |
| -------------- | ----------------------------- |
| Promise\ | Promise对象。当命令发送成功,无返回结果,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Parameter verification failed. |
| 6600101 | Session service exception. |
| 6600105 | Invalid session command. |
| 6600109 | The remote connection is not established. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let avCommand: avSession.AVCastControlCommand = {command:'play'};
aVCastController.sendControlCommand(avCommand).then(() => {
console.info('SendControlCommand successfully');
}).catch((err: BusinessError) => {
console.error(`SendControlCommand BusinessError: code: ${err.code}, message: ${err.message}`);
});
```
## sendControlCommand10+
sendControlCommand(command: AVCastControlCommand, callback: AsyncCallback\): void
通过会话控制器发送命令到其对应的会话。结果通过callback异步回调方式返回。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------- | ---- | ------------------------------ |
| command | [AVCastControlCommand](arkts-apis-avsession-i.md#avcastcontrolcommand10) | 是 | 会话的相关命令和命令相关参数。 |
| callback | AsyncCallback\ | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Parameter verification failed. |
| 6600101 | Session service exception. |
| 6600105 | Invalid session command. |
| 6600109 | The remote connection is not established. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let avCommand: avSession.AVCastControlCommand = {command:'play'};
aVCastController.sendControlCommand(avCommand, (err: BusinessError) => {
if (err) {
console.error(`SendControlCommand BusinessError: code: ${err.code}, message: ${err.message}`);
} else {
console.info('SendControlCommand successfully');
}
});
```
## sendCustomData20+
sendCustomData(data: Record\): Promise\
发送私有数据到远端设备。使用Promise异步回调。
**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---------------------- | ---- | ------------------------------------------------------------ |
| data | Record\ | 是 | 应用程序填充的自定义数据。服务端仅解析key为'customData',且Object为string类型的对象。 |
**返回值:**
| 类型 | 说明 |
| -------------- | ----------------------------- |
| Promise\ | Promise对象,无返回结果。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 6600101 | Session service exception. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
aVCastController.sendCustomData({customData : "This is custom data"});
```
## prepare10+
prepare(item: AVQueueItem, callback: AsyncCallback\): void
准备播放媒体资源,即进行播放资源的加载和缓冲。结果通过callback异步回调方式返回。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------------------------- | ---- | ------------------------------ |
| item | [AVQueueItem](arkts-apis-avsession-i.md#avqueueitem10) | 是 | 播放列表中单项的相关属性。 |
| callback | AsyncCallback\ | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Parameter verification failed. |
| 6600101 | Session service exception. |
| 6600109 | The remote connection is not established. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
// 设置播放参数,开始播放。
let playItem: avSession.AVQueueItem = {
itemId: 0,
description: {
assetId: '12345',
mediaType: 'AUDIO',
mediaUri: 'http://resource1_address',
mediaSize: 12345,
startPosition: 0,
duration: 0,
artist: 'mysong',
albumTitle: 'song1_title',
albumCoverUri: "http://resource1_album_address",
lyricUri: "http://resource1_lyric_address",
appName: 'MyMusic'
}
};
// 准备播放,这个不会触发真正的播放,会进行加载和缓冲。
aVCastController.prepare(playItem, (err: BusinessError) => {
if (err) {
console.error(`prepare BusinessError: code: ${err.code}, message: ${err.message}`);
} else {
console.info('prepare successfully');
}
});
```
## prepare10+
prepare(item: AVQueueItem): Promise\
准备播放媒体资源,即进行播放资源的加载和缓冲。结果通过Promise异步回调方式返回。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------------------------- | ---- | ------------------------------ |
| item | [AVQueueItem](arkts-apis-avsession-i.md#avqueueitem10) | 是 | 播放列表中单项的相关属性。 |
**返回值:**
| 类型 | 说明 |
| -------------- | ----------------------------- |
| Promise\ | Promise对象。当命令发送成功,无返回结果,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Parameter verification failed. |
| 6600101 | Session service exception. |
| 6600109 | The remote connection is not established. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
// 设置播放参数,开始播放。
let playItem: avSession.AVQueueItem = {
itemId: 0,
description: {
assetId: '12345',
mediaType: 'AUDIO',
mediaUri: 'http://resource1_address',
mediaSize: 12345,
startPosition: 0,
duration: 0,
artist: 'mysong',
albumTitle: 'song1_title',
albumCoverUri: "http://resource1_album_address",
lyricUri: "http://resource1_lyric_address",
appName: 'MyMusic'
}
};
// 准备播放,这个不会触发真正的播放,会进行加载和缓冲。
aVCastController.prepare(playItem).then(() => {
console.info('prepare successfully');
}).catch((err: BusinessError) => {
console.error(`prepare BusinessError: code: ${err.code}, message: ${err.message}`);
});
```
## start10+
start(item: AVQueueItem, callback: AsyncCallback\): void
启动播放某个媒体资源。结果通过callback异步回调方式返回。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------------------------- | ---- | ------------------------------ |
| item | [AVQueueItem](arkts-apis-avsession-i.md#avqueueitem10) | 是 | 播放列表中单项的相关属性。 |
| callback | AsyncCallback\ | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Parameter verification failed. |
| 6600101 | Session service exception. |
| 6600109 | The remote connection is not established. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
// 设置播放参数,开始播放。
let playItem: avSession.AVQueueItem = {
itemId: 0,
description: {
assetId: '12345',
mediaType: 'AUDIO',
mediaUri: 'http://resource1_address',
mediaSize: 12345,
startPosition: 0,
duration: 0,
artist: 'mysong',
albumTitle: 'song1_title',
albumCoverUri: "http://resource1_album_address",
lyricUri: "http://resource1_lyric_address",
appName: 'MyMusic'
}
};
// 启动播放。
aVCastController.start(playItem, (err: BusinessError) => {
if (err) {
console.error(`start BusinessError: code: ${err.code}, message: ${err.message}`);
} else {
console.info('start successfully');
}
});
```
## start10+
start(item: AVQueueItem): Promise\
启动播放某个媒体资源。结果通过Promise异步回调方式返回。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------------------------- | ---- | ------------------------------ |
| item | [AVQueueItem](arkts-apis-avsession-i.md#avqueueitem10) | 是 | 播放列表中单项的相关属性。 |
**返回值:**
| 类型 | 说明 |
| -------------- | ----------------------------- |
| Promise\ | Promise对象。当命令发送成功,无返回结果,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Parameter verification failed. |
| 6600101 | Session service exception. |
| 6600109 | The remote connection is not established. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
// 设置播放参数,开始播放。
let playItem: avSession.AVQueueItem = {
itemId: 0,
description: {
assetId: '12345',
mediaType: 'AUDIO',
mediaUri: 'http://resource1_address',
mediaSize: 12345,
startPosition: 0,
duration: 0,
artist: 'mysong',
albumTitle: 'song1_title',
albumCoverUri: "http://resource1_album_address",
lyricUri: "http://resource1_lyric_address",
appName: 'MyMusic'
}
};
// 启动播放。
aVCastController.start(playItem).then(() => {
console.info('start successfully');
}).catch((err: BusinessError) => {
console.error(`start BusinessError: code: ${err.code}, message: ${err.message}`);
});
```
## getCurrentItem10+
getCurrentItem(callback: AsyncCallback\): void
获取当前投播的资源信息。结果通过callback异步回调方式返回。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------- | ---- | ------------------------------------- |
| callback | AsyncCallback\<[AVQueueItem](arkts-apis-avsession-i.md#avqueueitem10)> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
aVCastController.getCurrentItem((err: BusinessError, value: avSession.AVQueueItem) => {
if (err) {
console.error(`getCurrentItem BusinessError: code: ${err.code}, message: ${err.message}`);
} else {
console.info('getCurrentItem successfully');
}
});
```
## getCurrentItem10+
getCurrentItem(): Promise\
获取当前投播的资源信息。结果通过Promise异步回调方式返回。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**返回值:**
| 类型 | 说明 |
| -------------- | ----------------------------- |
| Promise\<[AVQueueItem](arkts-apis-avsession-i.md#avqueueitem10)> | Promise对象,返回当前的播放资源,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
aVCastController.getCurrentItem().then((value: avSession.AVQueueItem) => {
console.info('getCurrentItem successfully');
}).catch((err: BusinessError) => {
console.error(`getCurrentItem BusinessError: code: ${err.code}, message: ${err.message}`);
});
```
## getValidCommands11+
getValidCommands(callback: AsyncCallback>): void
获取当前支持的命令。结果通过callback异步回调方式返回。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------- | ---- | ------------------------------------- |
| callback | AsyncCallback> | 是 | 回调函数。返回当前支持的命令。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
aVCastController.getValidCommands((err: BusinessError, state: avSession.AVCastControlCommandType[]) => {
if (err) {
console.error(`getValidCommands BusinessError: code: ${err.code}, message: ${err.message}`);
} else {
console.info('getValidCommands successfully');
}
});
```
## getValidCommands11+
getValidCommands(): Promise>
获取当前支持的命令。结果通过Promise异步回调方式返回。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**返回值:**
| 类型 | 说明 |
| -------------- | ----------------------------- |
| Promise> | Promise对象,返回当前支持的命令。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
aVCastController.getValidCommands().then((state: avSession.AVCastControlCommandType[]) => {
console.info('getValidCommands successfully');
}).catch((err: BusinessError) => {
console.error(`getValidCommands BusinessError: code: ${err.code}, message: ${err.message}`);
});
```
## processMediaKeyResponse12+
processMediaKeyResponse(assetId: string, response: Uint8Array): Promise\
在线DRM资源投播时,处理许可证响应。结果通过Promise异步回调方式返回。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------- | ---- | ------------------------------------- |
| assetId | string | 是 | 媒体ID。 |
| response | Uint8Array | 是 | 许可证响应。 |
**返回值:**
| 类型 | 说明 |
| -------------- | ----------------------------- |
| Promise\ | Promise对象,当处理许可证响应成功,无返回结果,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Parameter verification failed. |
| 6600101 | Session service exception. |
**示例:**
```ts
let keyRequestCallback: avSession.KeyRequestCallback = async(assetId: string, requestData: Uint8Array) => {
// 根据assetId获取对应的DRM url。
let drmUrl = 'http://license.xxx.xxx.com:8080/drmproxy/getLicense';
// 从服务器获取许可证,需要开发者根据实际情况进行赋值。
let licenseResponseData: Uint8Array = new Uint8Array();
console.info(`Succeeded in get license by ${drmUrl}.`);
aVCastController.processMediaKeyResponse(assetId, licenseResponseData);
}
```
## release11+
release(callback: AsyncCallback\): void
销毁当前controller,结果通过callback异步回调方式返回。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------------------------- | ---- | ------------------------------------------------------------ |
| callback | AsyncCallback\ | 是 | 回调函数。当命令执行成功,err为undefined,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | -------------------------- |
| 6600101 | Session service exception. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
aVCastController.release((err: BusinessError) => {
if (err) {
console.error(`release BusinessError: code: ${err.code}, message: ${err.message}`);
} else {
console.info('release successfully');
}
});
```
## release11+
release(): Promise\
销毁当前controller。结果通过Promise异步回调方式返回。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**返回值:**
| 类型 | 说明 |
| -------------- | ----------------------------- |
| Promise\ | Promise对象,controller销毁成功,无结果返回,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------ |
| 6600101 | Session service exception. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
aVCastController.release().then(() => {
console.info('release successfully');
}).catch((err: BusinessError) => {
console.error(`release BusinessError: code: ${err.code}, message: ${err.message}`);
});
```
## on('playbackStateChange')10+
on(type: 'playbackStateChange', filter: Array\ | 'all', callback: (state: AVPlaybackState) => void): void
设置播放状态变化的监听事件。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 事件回调类型,支持事件`'playbackStateChange'`:当播放状态变化时,触发该事件。 |
| filter | Array\ | 'all' | 是 | 'all' 表示关注播放状态所有字段变化;Array 表示关注Array中的字段变化。 |
| callback | (state: [AVPlaybackState](arkts-apis-avsession-i.md#avplaybackstate10)) => void | 是 | 回调函数,参数state是变化后的播放状态。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------ |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.on('playbackStateChange', 'all', (playbackState: avSession.AVPlaybackState) => {
console.info(`on playbackStateChange state : ${playbackState.state}`);
});
let playbackFilter: Array = ['state', 'speed', 'loopMode'];
aVCastController.on('playbackStateChange', playbackFilter, (playbackState: avSession.AVPlaybackState) => {
console.info(`on playbackStateChange state : ${playbackState.state}`);
});
```
## off('playbackStateChange')10+
off(type: 'playbackStateChange', callback?: (state: AVPlaybackState) => void): void
取消播放状态变化事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- |
| type | string | 是 | 取消对应的监听事件,支持事件`'playbackStateChange'`。 |
| callback | (state: [AVPlaybackState](arkts-apis-avsession-i.md#avplaybackstate10)) => void | 否 | 回调函数,参数state是变化后的播放状态。
该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.off('playbackStateChange');
```
## on('mediaItemChange')10+
on(type: 'mediaItemChange', callback: Callback\): void
设置投播当前播放媒体内容的监听事件。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 事件回调类型,支持事件`'mediaItemChange'`:当播放的媒体内容变化时,触发该事件。 |
| callback | Callback<[AVQueueItem](arkts-apis-avsession-i.md#avqueueitem10)> | 是 | 回调函数,参数AVQueueItem是当前正在播放的媒体内容。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------ |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.on('mediaItemChange', (item: avSession.AVQueueItem) => {
console.info(`on mediaItemChange state : ${item.itemId}`);
});
```
## off('mediaItemChange')10+
off(type: 'mediaItemChange'): void
取消设置投播当前播放媒体内容事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- |
| type | string | 是 | 取消对应的监听事件,支持事件`'mediaItemChange'`。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.off('mediaItemChange');
```
## on('playNext')10+
on(type: 'playNext', callback: Callback\): void
设置播放下一首资源的监听事件。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 事件回调类型,支持事件`'playNext'`:当播放下一首状态变化时,触发该事件。 |
| callback | Callback\ | 是 | 回调函数。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------ |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.on('playNext', () => {
console.info('on playNext');
});
```
## off('playNext')10+
off(type: 'playNext'): void
取消设置播放下一首资源事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- |
| type | string | 是 | 取消对应的监听事件,支持事件`'playNext'`。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.off('playNext');
```
## on('playPrevious')10+
on(type: 'playPrevious', callback: Callback\): void
设置播放上一首资源的监听事件。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 事件回调类型,支持事件`'playPrevious'`:当播放上一首状态变化时,触发该事件。 |
| callback | Callback\ | 是 | 回调函数。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------ |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.on('playPrevious', () => {
console.info('on playPrevious');
});
```
## off('playPrevious')10+
off(type: 'playPrevious'): void
取消设置播放上一首资源事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- |
| type | string | 是 | 取消对应的监听事件,支持事件`'playPrevious'`。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.off('playPrevious');
```
## on('requestPlay')11+
on(type: 'requestPlay', callback: Callback\): void
设置请求播放的监听事件。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 事件回调类型,支持事件`'requestPlay'`:当请求播放状态变化时,触发该事件。 |
| callback | Callback\<[AVQueueItem](arkts-apis-avsession-i.md#avqueueitem10)> | 是 | 回调函数,参数AVQueueItem是当前正在播放的媒体内容。当监听事件注册成功,err为undefined,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------ |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.on('requestPlay', (item: avSession.AVQueueItem) => {
console.info(`on requestPlay state : ${item.itemId}`);
});
```
## off('requestPlay')11+
off(type: 'requestPlay', callback?: Callback\): void
取消设置请求播放事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------| ---- | ----------------------------------------------------- |
| type | string | 是 | 取消对应的监听事件,支持事件`'requestPlay'`。 |
| callback | Callback\<[AVQueueItem](arkts-apis-avsession-i.md#avqueueitem10)> | 否 | 回调函数,参数AVQueueItem是当前正在播放的媒体内容。当监听事件取消成功,err为undefined,否则返回错误对象。该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。|
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.off('requestPlay');
```
## on('endOfStream')11+
on(type: 'endOfStream', callback: Callback\): void
设置播放结束的监听事件。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------| ---- | ------------------------------------------------------------ |
| type | string | 是 | 事件回调类型,支持事件`'endOfStream'`:当资源播放结束时,触发该事件。 |
| callback | Callback\ | 是 | 回调函数。当监听事件注册成功,err为undefined,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------ |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.on('endOfStream', () => {
console.info('on endOfStream');
});
```
## off('endOfStream')11+
off(type: 'endOfStream', callback?: Callback\): void
取消设置播放结束事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------| ---- | ----------------------------------------------------- |
| type | string | 是 | 取消对应的监听事件,支持事件`'endOfStream'`。 |
| callback | Callback\ | 否 | 回调函数。当监听事件取消成功,err为undefined,否则返回错误对象。该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.off('endOfStream');
```
## on('seekDone')10+
on(type: 'seekDone', callback: Callback\): void
设置seek结束的监听事件。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 事件回调类型,支持事件`'seekDone'`:当seek结束时,触发该事件。 |
| callback | Callback\ | 是 | 回调函数,返回seek后播放的位置。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------ |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.on('seekDone', (pos: number) => {
console.info(`on seekDone pos:${pos} `);
});
```
## off('seekDone')10+
off(type: 'seekDone'): void
取消设置seek结束事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- |
| type | string | 是 | 取消对应的监听事件,支持事件`'seekDone'`。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.off('seekDone');
```
## on('validCommandChange')11+
on(type: 'validCommandChange', callback: Callback\>)
会话支持的有效命令变化监听事件。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 事件回调类型,支持事件`'validCommandChange'`:当检测到会话的合法命令发生改变时,触发该事件。 |
| callback | Callback\> | 是 | 回调函数。参数commands是有效命令的集合。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------ |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
| 6600103 | The session controller does not exist. |
**示例:**
```ts
aVCastController.on('validCommandChange', (validCommands: avSession.AVCastControlCommandType[]) => {
console.info(`validCommandChange : SUCCESS : size : ${validCommands.length}`);
console.info(`validCommandChange : SUCCESS : validCommands : ${validCommands.values()}`);
});
```
## off('validCommandChange')11+
off(type: 'validCommandChange', callback?: Callback\>)
取消会话有效命令变化事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- |
| type | string | 是 | 取消对应的监听事件,支持事件`'validCommandChange'`。 |
| callback | Callback\> | 否 | 回调函数。参数commands是有效命令的集合。
该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
| 6600103 | The session controller does not exist. |
**示例:**
```ts
aVCastController.off('validCommandChange');
```
## on('videoSizeChange')12+
on(type: 'videoSizeChange', callback: (width: number, height: number) => void): void
媒体控制器监听视频尺寸变化变化的事件。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
系统能力: SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 事件回调类型,支持事件`'videoSizeChange'`:当检测到会话的合法命令发生改变时,触发该事件。 |
| callback | (width: number, height: number) => void | 是 | 回调函数。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------ |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.on('videoSizeChange', (width: number, height: number) => {
console.info(`videoSizeChange : SUCCESS : size : ${width}, ${height}`);
});
```
## off('videoSizeChange')12+
off(type: 'videoSizeChange'): void
取消视频尺寸事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
系统能力: SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 事件回调类型,支持事件`'videoSizeChange'`:当检测到会话的合法命令发生改变时,触发该事件。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------ |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.off('videoSizeChange');
```
## on('error')10+
on(type: 'error', callback: ErrorCallback): void
监听远端播放器的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 错误事件回调类型,支持的事件:'error',用户操作和系统都会触发此事件。 |
| callback | ErrorCallback | 是 | 错误事件回调方法:远端播放过程中发生的错误,会提供错误码ID和错误信息。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)、[媒体服务错误码](../apis-media-kit/errorcode-media.md)以及[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | --------------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 5400101 | No memory. |
| 5400102 | Operation not allowed. |
| 5400103 | I/O error. |
| 5400104 | Time out. |
| 5400105 | Service died. |
| 5400106 | Unsupport format. |
| 6600101 | Session service exception. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
aVCastController.on('error', (error: BusinessError) => {
console.info(`error happened, error code: ${error.code}, error message : ${error.message}.`)
})
```
## off('error')10+
off(type: 'error'): void
取消播放的错误事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ----------------------------------------- |
| type | string | 是 | 错误事件回调类型,取消注册的事件:'error'。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)、[媒体服务错误码](../apis-media-kit/errorcode-media.md)以及[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | --------------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 5400101 | No memory. |
| 5400102 | Operation not allowed. |
| 5400103 | I/O error. |
| 5400104 | Time out. |
| 5400105 | Service died. |
| 5400106 | Unsupport format. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.off('error')
```
## on('keyRequest')12+
on(type: 'keyRequest', callback: KeyRequestCallback): void
在线DRM资源投播时,设置许可证请求的事件监听。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ----------------------------------------- |
| type | string | 是 | 事件回调类型,支持事件`'keyRequest'`:当DRM资源播放需要许可证时,触发该事件。 |
| callback | [KeyRequestCallback](arkts-apis-avsession-t.md#keyrequestcallback12) | 是 | 回调函数,媒体资源及许可证请求数据。|
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
let keyRequestCallback: avSession.KeyRequestCallback = async(assetId: string, requestData: Uint8Array) => {
console.info(`Succeeded in keyRequestCallback. assetId: ${assetId}, requestData: ${requestData}`);
}
aVCastController.on('keyRequest', keyRequestCallback);
```
## off('keyRequest')12+
off(type: 'keyRequest', callback?: KeyRequestCallback): void
取消许可证请求事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ----------------------------------------- |
| type | string | 是 | 取消对应的监听事件,支持的事件是`'keyRequest'`。 |
| callback | [KeyRequestCallback](arkts-apis-avsession-t.md#keyrequestcallback12) | 否 | 回调函数。当监听事件取消成功,err为undefined,否则返回错误对象。该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ---------------- |
| 401 | parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.off('keyRequest');
```
## on('castControlGenericError')13+
on(type: 'castControlGenericError', callback: ErrorCallback): void
监听投播通用错误事件。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 错误事件回调类型,支持的事件:'castControlGenericError'。 |
| callback | ErrorCallback | 是 | 投播通用错误事件回调方法。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | --------------------- |
| 401 | Parameter check failed. 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 6611000 | The error code for cast control is unspecified. |
| 6611001 | An unspecified error occurs in the remote player. |
| 6611002 | The playback position falls behind the live window. |
| 6611003 | The process of cast control times out. |
| 6611004 | The runtime check failed. |
| 6611100 | Cross-device data transmission is locked. |
| 6611101 | The specified seek mode is not supported. |
| 6611102 | The position to seek to is out of the range of the media asset or the specified seek mode is not supported. |
| 6611103 | The specified playback mode is not supported. |
| 6611104 | The specified playback speed is not supported. |
| 6611105 | The action failed because either the media source device or the media sink device has been revoked. |
| 6611106 | The parameter is invalid, for example, the url is illegal to play. |
| 6611107 | Allocation of memory failed. |
| 6611108 | Operation is not allowed. |
**示例:**
```ts
aVCastController.on('castControlGenericError', (error: BusinessError) => {
console.info(`castControlGenericError happened, error code: ${error.code}, error message : ${error.message}.`)
})
```
## off('castControlGenericError')13+
off(type: 'castControlGenericError', callback?: ErrorCallback): void
取消投播通用的错误事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 取消对应的监听事件,支持的事件是'castControlGenericError'。 |
| callback | ErrorCallback | 否 | 回调函数。当监听事件取消成功,err为undefined,否则返回错误对象。该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | --------------------- |
| 401 | Parameter check failed. 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
**示例:**
```ts
aVCastController.off('castControlGenericError');
```
## on('castControlIoError')13+
on(type: 'castControlIoError', callback: ErrorCallback): void
监听投播输入/输出的错误事件。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 错误事件回调类型,支持的事件:'castControlIoError'。 |
| callback | ErrorCallback | 是 | 投播输入/输出的错误事件回调方法。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | --------------------- |
| 401 | Parameter check failed. 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 6612000 | An unspecified input/output error occurs. |
| 6612001 | Network connection failure. |
| 6612002 | Network timeout. |
| 6612003 | Invalid "Content-Type" HTTP header. |
| 6612004 | The HTTP server returns an unexpected HTTP response status code. |
| 6612005 | The file does not exist. |
| 6612006 | No permission is granted to perform the IO operation. |
| 6612007 | Access to cleartext HTTP traffic is not allowed by the app's network security configuration. |
| 6612008 | Reading data out of the data bound. |
| 6612100 | The media does not contain any contents that can be played. |
| 6612101 | The media cannot be read, for example, because of dust or scratches. |
| 6612102 | This resource is already in use. |
| 6612103 | The content using the validity interval has expired. |
| 6612104 | Using the requested content to play is not allowed. |
| 6612105 | The use of the allowed content cannot be verified. |
| 6612106 | The number of times this content has been used as requested has reached the maximum allowed number of uses. |
| 6612107 | An error occurs when sending packet from source device to sink device. |
**示例:**
```ts
aVCastController.on('castControlIoError', (error: BusinessError) => {
console.info(`castControlIoError happened, error code: ${error.code}, error message : ${error.message}.`)
})
```
## off('castControlIoError')13+
off(type: 'castControlIoError', callback?: ErrorCallback): void
取消投播输入/输出的错误事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 取消对应的监听事件,支持的事件是'castControlIoError'。 |
| callback | ErrorCallback | 否 | 回调函数。当监听事件取消成功,err为undefined,否则返回错误对象。该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | --------------------- |
| 401 | Parameter check failed. 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
**示例:**
```ts
aVCastController.off('castControlIoError');
```
## on('castControlParsingError')13+
on(type: 'castControlParsingError', callback: ErrorCallback): void
监听投播解析的错误事件。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 错误事件回调类型,支持的事件:'castControlParsingError'。 |
| callback | ErrorCallback | 是 | 投播解析的错误事件回调方法。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | --------------------- |
| 401 | Parameter check failed. 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 6613000 | Unspecified error related to content parsing. |
| 6613001 | Parsing error associated with media container format bit streams. |
| 6613002 | Parsing error associated with the media manifest. |
| 6613003 | An error occurs when attempting to extract a file with an unsupported media container format or an unsupported media container feature. |
| 6613004 | Unsupported feature in the media manifest. |
**示例:**
```ts
aVCastController.on('castControlParsingError', (error: BusinessError) => {
console.info(`castControlParsingError happened, error code: ${error.code}, error message : ${error.message}.`)
})
```
## off('castControlParsingError')13+
off(type: 'castControlParsingError', callback?: ErrorCallback): void
取消投播解析的错误事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 取消对应的监听事件,支持的事件是'castControlParsingError'。 |
| callback | ErrorCallback | 否 | 回调函数。当监听事件取消成功,err为undefined,否则返回错误对象。该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | --------------------- |
| 401 | Parameter check failed. 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
**示例:**
```ts
aVCastController.off('castControlParsingError');
```
## on('castControlDecodingError')13+
on(type: 'castControlDecodingError', callback: ErrorCallback): void
监听投播解码的错误事件。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 错误事件回调类型,支持的事件:'castControlDecodingError'。 |
| callback | ErrorCallback | 是 | 投播解码的错误事件回调方法。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | --------------------- |
| 401 | Parameter check failed. 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 6614000 | Unspecified decoding error. |
| 6614001 | Decoder initialization failed. |
| 6614002 | Decoder query failed. |
| 6614003 | Decoding the media samples failed. |
| 6614004 | The format of the content to decode exceeds the capabilities of the device. |
| 6614005 | The format of the content to decode is not supported. |
**示例:**
```ts
aVCastController.on('castControlDecodingError', (error: BusinessError) => {
console.info(`castControlDecodingError happened, error code: ${error.code}, error message : ${error.message}.`)
})
```
## off('castControlDecodingError')13+
off(type: 'castControlDecodingError', callback?: ErrorCallback): void
取消投播解码的错误事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 取消对应的监听事件,支持的事件是'castControlDecodingError'。 |
| callback | ErrorCallback | 否 | 回调函数。当监听事件取消成功,err为undefined,否则返回错误对象。该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | --------------------- |
| 401 | Parameter check failed. 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
**示例:**
```ts
aVCastController.off('castControlDecodingError');
```
## on('castControlAudioRendererError')13+
on(type: 'castControlAudioRendererError', callback: ErrorCallback): void
监听投播音频渲染器的错误事件。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 错误事件回调类型,支持的事件:'castControlAudioRendererError'。 |
| callback | ErrorCallback | 是 | 投播音频渲染器的错误事件回调方法。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)、[媒体服务错误码](../apis-media-kit/errorcode-media.md)以及[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | --------------------- |
| 401 | Parameter check failed. 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 6615000 | Unspecified errors related to the audio renderer. |
| 6615001 | Initializing the audio renderer failed. |
| 6615002 | The audio renderer fails to write data. |
**示例:**
```ts
aVCastController.on('castControlAudioRendererError', (error: BusinessError) => {
console.info(`castControlAudioRendererError happened, error code: ${error.code}, error message : ${error.message}.`)
})
```
## off('castControlAudioRendererError')13+
off(type: 'castControlAudioRendererError', callback?: ErrorCallback): void
取消投播音频渲染器的错误事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 取消对应的监听事件,支持的事件是'castControlAudioRendererError'。 |
| callback | ErrorCallback | 否 | 回调函数。当监听事件取消成功,err为undefined,否则返回错误对象。该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | --------------------- |
| 401 | Parameter check failed. 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.|
**示例:**
```ts
aVCastController.off('castControlAudioRendererError');
```
## on('castControlDrmError')13+
on(type: 'castControlDrmError', callback: ErrorCallback): void
监听投播drm的错误事件。
每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 错误事件回调类型,支持的事件:'castControlDrmError'。 |
| callback | ErrorCallback | 是 | 投播drm的错误事件回调方法。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | --------------------- |
| 401 | Parameter check failed. 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 6616000 | Unspecified error related to DRM. |
| 6616001 | The chosen DRM protection scheme is not supported by the device. |
| 6616002 | Device provisioning failed. |
| 6616003 | The DRM-protected content to play is incompatible. |
| 6616004 | Failed to obtain a license. |
| 6616005 | The operation is disallowed by the license policy. |
| 6616006 | An error occurs in the DRM system. |
| 6616007 | The device has revoked DRM privileges. |
| 6616008 | The DRM license being loaded into the open DRM session has expired. |
| 6616100 | An error occurs when the DRM processes the key response. |
**示例:**
```ts
aVCastController.on('castControlDrmError', (error: BusinessError) => {
console.info(`castControlDrmError happened, error code: ${error.code}, error message : ${error.message}.`)
})
```
## off('castControlDrmError')13+
off(type: 'castControlDrmError', callback?: ErrorCallback): void
取消投播drm的错误事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 取消对应的监听事件,支持的事件是'castControlDrmError'。 |
| callback | ErrorCallback | 否 | 回调函数。当监听事件取消成功,err为undefined,否则返回错误对象。该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | --------------------- |
| 401 | Parameter check failed. 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
**示例:**
```ts
aVCastController.off('castControlDrmError');
```
## on('customDataChange')20+
on(type: 'customDataChange', callback: Callback\>): void
注册从远端设备发送的自定义数据的监听器。
**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------------------------------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 事件回调类型,支持'customDataChange'事件。媒体提供方发送自定义数据时触发。 |
| callback | Callback\> | 是 | 回调函数,用于接收自定义数据。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.on('customDataChange', (callback) => {
console.info(`Caught customDataChange event,the new callback is: ${JSON.stringify(callback)}`);
});
```
## off('customDataChange')20+
off(type: 'customDataChange', callback?: Callback\>): void
取消对自定义数据的监听。
**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------------------------------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 取消对应的监听事件,支持的事件是'customDataChange'。 |
| callback | Callback\> | 否 | 注册监听事件时的回调函数。该参数为可选参数,若不填写该参数,则认为取消会话所有与此事件相关的监听。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 6600101 | Session service exception. |
**示例:**
```ts
aVCastController.off('customDataChange');
```