diff --git a/en/application-dev/reference/apis/js-apis-avsession.md b/en/application-dev/reference/apis/js-apis-avsession.md index b2ad9fb70720b8d56ee05c19a59c12183a3cf199..e03f438f967881b19965c713016e399c1a0eeeb6 100644 --- a/en/application-dev/reference/apis/js-apis-avsession.md +++ b/en/application-dev/reference/apis/js-apis-avsession.md @@ -6,6 +6,7 @@ This module provides the following typical features related to media sessions: - [AVSession](#avsession10): used to set session metadata, playback state information, and more. - [AVSessionController](#avsessioncontroller10): used to obtain session IDs, send commands and events to sessions, and obtain the session metadata and playback state information. +- [AVCastController](#avcastcontroller10): used to control playback, listen for remote playback state changes, and obtain the remote playback state in casting scenarios. > **NOTE** > @@ -52,13 +53,15 @@ For details about the error codes, see [AVSession Management Error Codes](../err ```js import featureAbility from '@ohos.ability.featureAbility'; -let session; +let currentAVSession; let tag = "createNewSession"; let context = featureAbility.getContext(); +let sessionId; // Used as an input parameter of subsequent functions. -await avSession.createAVSession(context, tag, "audio").then((data) => { - session = data; - console.info(`CreateAVSession : SUCCESS : sessionId = ${session.sessionId}`); +avSession.createAVSession(context, tag, "audio").then((data) => { + currentAVSession = data; + sessionId = currentAVSession.sessionId; + console.info(`CreateAVSession : SUCCESS : sessionId = ${sessionId}`); }).catch((err) => { console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); }); @@ -94,16 +97,18 @@ For details about the error codes, see [AVSession Management Error Codes](../err ```js import featureAbility from '@ohos.ability.featureAbility'; -let session; +let currentAVSession; let tag = "createNewSession"; let context = featureAbility.getContext(); +let sessionId; // Used as an input parameter of subsequent functions. avSession.createAVSession(context, tag, "audio", function (err, data) { if (err) { console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); } else { - session = data; - console.info(`CreateAVSession : SUCCESS : sessionId = ${session.sessionId}`); + currentAVSession = data; + sessionId = currentAVSession.sessionId; + console.info(`CreateAVSession : SUCCESS : sessionId = ${sessionId}`); } }); ``` @@ -145,7 +150,7 @@ avSession.getAllSessionDescriptors().then((descriptors) => { console.info(`GetAllSessionDescriptors : SUCCESS : descriptors[0].sessionTag : ${descriptors[0].sessionTag}`); } }).catch((err) => { - console.info(`GetAllSessionDescriptors BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`GetAllSessionDescriptors BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` @@ -180,7 +185,7 @@ For details about the error codes, see [AVSession Management Error Codes](../err ```js avSession.getAllSessionDescriptors(function (err, descriptors) { if (err) { - console.info(`GetAllSessionDescriptors BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`GetAllSessionDescriptors BusinessError: code: ${err.code}, message: ${err.message}`); } else { console.info(`GetAllSessionDescriptors : SUCCESS : descriptors.length : ${descriptors.length}`); if(descriptors.length > 0 ){ @@ -237,7 +242,7 @@ avSession.getHistoricalSessionDescriptors().then((descriptors) => { console.info(`getHistoricalSessionDescriptors : SUCCESS : descriptors[0].elementName.bundleName : ${descriptors[0].elementName.bundleName}`); } }).catch((err) => { - console.info(`getHistoricalSessionDescriptors BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`getHistoricalSessionDescriptors BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` @@ -273,7 +278,7 @@ For details about the error codes, see [AVSession Management Error Codes](../err ```js avSession.getHistoricalSessionDescriptors(1, function (err, descriptors) { if (err) { - console.info(`getHistoricalSessionDescriptors BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`getHistoricalSessionDescriptors BusinessError: code: ${err.code}, message: ${err.message}`); } else { console.info(`getHistoricalSessionDescriptors : SUCCESS : descriptors.length : ${descriptors.length}`); if(descriptors.length > 0 ){ @@ -307,9 +312,9 @@ Creates a session controller based on the session ID. Multiple session controlle **Return value** -| Type | Description | -| ------------------------------------------------------- | ------------------------------------------------------------ | -| Promise<[AVSessionController](#avsessioncontroller10)\> | Promise used to return the session controller created, which can be used to obtain the session ID, send commands and events to sessions, and obtain metadata and playback state information. | +| Type | Description | +| ----------------------------------------------------- | ------------------------------------------------------------ | +| Promise<[AVSessionController](#avsessioncontroller10)\> | Promise used to return the session controller created, which can be used to obtain the session ID, send commands and events to sessions, and obtain metadata and playback state information.| **Error codes** @@ -325,23 +330,27 @@ For details about the error codes, see [AVSession Management Error Codes](../err ```js import featureAbility from '@ohos.ability.featureAbility'; -let session; +let currentAVSession; let tag = "createNewSession"; let context = featureAbility.getContext(); +let sessionId; // Used as an input parameter of subsequent functions. -await avSession.createAVSession(context, tag, "audio").then((data) => { - session = data; - console.info(`CreateAVSession : SUCCESS : sessionId = ${session.sessionId}`); -}).catch((err) => { - console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); +avSession.createAVSession(context, tag, "audio", function (err, data) { + if (err) { + console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + currentAVSession = data; + sessionId = currentAVSession.sessionId; + console.info(`CreateAVSession : SUCCESS : sessionId = ${sessionId}`); + } }); -let controller; -await avSession.createController(session.sessionId).then((avcontroller) => { - controller = avcontroller; - console.info(`CreateController : SUCCESS : ${controller.sessionId}`); +let currentAVcontroller; +avSession.createController(sessionId).then((avcontroller) => { + currentAVcontroller = avcontroller; + console.info('CreateController : SUCCESS '); }).catch((err) => { - console.info(`CreateController BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`CreateController BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` @@ -378,24 +387,28 @@ For details about the error codes, see [AVSession Management Error Codes](../err ```js import featureAbility from '@ohos.ability.featureAbility'; -let session; +let currentAVSession; let tag = "createNewSession"; let context = featureAbility.getContext(); +let sessionId; // Used as an input parameter of subsequent functions. -await avSession.createAVSession(context, tag, "audio").then((data) => { - session = data; - console.info(`CreateAVSession : SUCCESS : sessionId = ${session.sessionId}`); -}).catch((err) => { - console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); +avSession.createAVSession(context, tag, "audio", function (err, data) { + if (err) { + console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + currentAVSession = data; + sessionId = currentAVSession.sessionId; + console.info(`CreateAVSession : SUCCESS : sessionId = ${sessionId}`); + } }); -let controller; -avSession.createController(session.sessionId, function (err, avcontroller) { +let currentAVcontroller; +avSession.createController(sessionId, function (err, avcontroller) { if (err) { - console.info(`CreateController BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`CreateController BusinessError: code: ${err.code}, message: ${err.message}`); } else { - controller = avcontroller; - console.info(`CreateController : SUCCESS : ${controller.sessionId}`); + currentAVcontroller = avcontroller; + console.info('CreateController : SUCCESS '); } }); ``` @@ -416,16 +429,16 @@ Before calling this API, import the **ohos.multimedia.audio** module to obtain t **Parameters** -| Name | Type | Mandatory| Description | -| ------------ |--------------------------------------------------------------------------------------------------------------------------------------------------------------------| ---- | ------------------------------------------------------------ | -| session | [SessionToken](#sessiontoken) | 'all' | Yes | Session token. **SessionToken** indicates a specific token, and **'all'** indicates all tokens.| -| audioDevices | Array\<[audio.AudioDeviceDescriptor](js-apis-audio.md#audiodevicedescriptor)\> | Yes | Audio devices. | +| Name | Type | Mandatory| Description| +| ------------ | -------------- |------|------| +| session | [SessionToken](#sessiontoken) | 'all' | Yes | Session token. **SessionToken** indicates a specific token, and **'all'** indicates all tokens.| +| audioDevices | Array\<[audio.AudioDeviceDescriptor](js-apis-audio.md#audiodevicedescriptor)\> | Yes | Audio devices. | **Return value** | Type | Description | | -------------- | ----------------------------- | -| Promise\ | Promise used to return the result. If the casting is successful, no value is returned; otherwise, an error object is returned.| +| Promise\ | Promise used to return the result. If casting is successful, no value is returned; otherwise, an error object is returned.| **Error codes** @@ -435,7 +448,7 @@ For details about the error codes, see [AVSession Management Error Codes](../err | -------- | ---------------------------------------- | | 6600101 | Session service exception. | | 6600102 | The session does not exist. | -| 6600104 | The remote session connection failed. | +| 6600104 | The remote session connection failed. | **Example** @@ -449,13 +462,13 @@ await audioRoutingManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then( audioDevices = data; console.info(`Promise returned to indicate that the device list is obtained.`); }).catch((err) => { - console.info(`GetDevices BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`GetDevices BusinessError: code: ${err.code}, message: ${err.message}`); }); avSession.castAudio('all', audioDevices).then(() => { console.info(`CreateController : SUCCESS`); }).catch((err) => { - console.info(`CreateController BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`CreateController BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` @@ -478,8 +491,8 @@ Before calling this API, import the **ohos.multimedia.audio** module to obtain t | Name | Type | Mandatory| Description | | ------------ |--------------------------------------------| ---- | ------------------------------------------------------------ | | session | [SessionToken](#sessiontoken) | 'all' | Yes | Session token. **SessionToken** indicates a specific token, and **'all'** indicates all tokens.| -| audioDevices | Array\<[audio.AudioDeviceDescriptor](js-apis-audio.md#audiodevicedescriptor)\> | Yes | Audio devices. | -| callback | AsyncCallback\ | Yes | Callback used to return the result. If the casting is successful, **err** is **undefined**; otherwise, **err** is an error object. | +| audioDevices | Array\<[audio.AudioDeviceDescriptor](js-apis-audio.md#audiodevicedescriptor)\> | Yes | Audio devices.| +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the casting is successful, **err** is **undefined**; otherwise, **err** is an error object. | **Error codes** @@ -489,7 +502,7 @@ For details about the error codes, see [AVSession Management Error Codes](../err | -------- | ---------------------------------------- | | 6600101 | Session service exception. | | 6600102 | The session does not exist. | -| 6600104 | The remote session connection failed. | +| 6600104 | The remote session connection failed. | **Example** @@ -503,23 +516,39 @@ await audioRoutingManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then( audioDevices = data; console.info(`Promise returned to indicate that the device list is obtained.`); }).catch((err) => { - console.info(`GetDevices BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`GetDevices BusinessError: code: ${err.code}, message: ${err.message}`); }); avSession.castAudio('all', audioDevices, function (err) { if (err) { - console.info(`CastAudio BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`CastAudio BusinessError: code: ${err.code}, message: ${err.message}`); } else { console.info(`CastAudio : SUCCESS `); } }); ``` -## avSession.on('sessionCreate' | 'sessionDestroy' | 'topSessionChange') +## SessionToken + +Describes the information about a session token. + +**Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES (available only to system applications) + +**System capability**: SystemCapability.Multimedia.AVSession.Manager + +**System API**: This is a system API. + +| Name | Type | Mandatory| Description | +| :-------- | :----- | :--- | :----------- | +| sessionId | string | Yes | Session ID. | +| pid | number | No | Process ID of the session.| +| uid | number | No | User ID. | + +## avSession.on('sessionCreate') -on(type: 'sessionCreate' | 'sessionDestroy' | 'topSessionChange', callback: (session: AVSessionDescriptor) => void): void +on(type: 'sessionCreate', callback: (session: AVSessionDescriptor) => void): void -Subscribes to session creation, session destruction, and top session change events. +Subscribes to session creation events. **Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES (available only to system applications) @@ -529,10 +558,10 @@ Subscribes to session creation, session destruction, and top session change even **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type.
- **'sessionCreate'**: session creation event, which is reported when a session is created.
- **'sessionDestroy'**: session destruction event, which is reported when a session is destroyed.
- **'topSessionChange'**: top session change event, which is reported when the top session is changed.| -| callback | (session: [AVSessionDescriptor](#avsessiondescriptor)) => void | Yes | Callback used to report the session descriptor. | +| Name | Type | Mandatory| Description | +| -------- | ---------------------- | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'sessionCreate'** is triggered when a session is created.| +| callback | (session: [AVSessionDescriptor](#avsessiondescriptor)) => void | Yes | Callback used to report the session descriptor.| **Error codes** @@ -551,12 +580,75 @@ avSession.on('sessionCreate', (descriptor) => { console.info(`on sessionCreate : sessionTag : ${descriptor.sessionTag}`); }); +``` + +## avSession.on('sessionDestroy') + +on(type: 'sessionDestroy', callback: (session: AVSessionDescriptor) => void): void + +Subscribes to session destruction events. + +**Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES (available only to system applications) + +**System capability**: SystemCapability.Multimedia.AVSession.Manager + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ---------------| ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'sessionDestroy'** is triggered when a session is destroyed.| +| callback | (session: [AVSessionDescriptor](#avsessiondescriptor)) => void | Yes | Callback used to report the session descriptor.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | + +**Example** + +```js avSession.on('sessionDestroy', (descriptor) => { console.info(`on sessionDestroy : isActive : ${descriptor.isActive}`); console.info(`on sessionDestroy : type : ${descriptor.type}`); console.info(`on sessionDestroy : sessionTag : ${descriptor.sessionTag}`); }); +``` + +## avSession.on('topSessionChange') + +on(type: 'topSessionChange', callback: (session: AVSessionDescriptor) => void): void + +Subscribes to top session change events. + +**Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES (available only to system applications) +**System capability**: SystemCapability.Multimedia.AVSession.Manager + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | --------------------| ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'topSessionChange'** is triggered when the top session is changed.| +| callback | (session: [AVSessionDescriptor](#avsessiondescriptor)) => void | Yes | Callback used to report the session descriptor.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | + +**Example** + +```js avSession.on('topSessionChange', (descriptor) => { console.info(`on topSessionChange : isActive : ${descriptor.isActive}`); console.info(`on topSessionChange : type : ${descriptor.type}`); @@ -564,11 +656,11 @@ avSession.on('topSessionChange', (descriptor) => { }); ``` -## avSession.off('sessionCreate' | 'sessionDestroy' | 'topSessionChange') +## avSession.off('sessionCreate') -off(type: 'sessionCreate' | 'sessionDestroy' | 'topSessionChange', callback?: (session: AVSessionDescriptor) => void): void +off(type: 'sessionCreate', callback?: (session: AVSessionDescriptor) => void): void -Unsubscribes from session creation, session destruction, and top session change events. +Unsubscribes from session creation events. **Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES (available only to system applications) @@ -578,9 +670,9 @@ Unsubscribes from session creation, session destruction, and top session change **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type.
- **'sessionCreate'**: session creation event, which is reported when a session is created.
- **'sessionDestroy'**: session destruction event, which is reported when a session is destroyed.
- **'topSessionChange'**: top session change event, which is reported when the top session is changed.| +| Name | Type | Mandatory| Description | +| -------- | ----------| ---- | ----------| +| type | string | Yes | Event type, which is **'sessionCreate'** in this case.| | callback | (session: [AVSessionDescriptor](#avsessiondescriptor)) => void | No | Callback used for unsubscription. If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **session** parameter in the callback describes a media session. The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** @@ -595,7 +687,71 @@ For details about the error codes, see [AVSession Management Error Codes](../err ```js avSession.off('sessionCreate'); +``` + +## avSession.off('sessionDestroy') + +off(type: 'sessionDestroy', callback?: (session: AVSessionDescriptor) => void): void + +Unsubscribes from session destruction events. + +**Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES (available only to system applications) + +**System capability**: SystemCapability.Multimedia.AVSession.Manager + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -----------| ---- | -------------------------| +| type | string | Yes | Event type, which is **'sessionDestroy'** in this case.| +| callback | (session: [AVSessionDescriptor](#avsessiondescriptor)) => void | No | Callback used for unsubscription. If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **session** parameter in the callback describes a media session. The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | + +**Example** + +```js avSession.off('sessionDestroy'); +``` + +## avSession.off('topSessionChange') + +off(type: 'topSessionChange', callback?: (session: AVSessionDescriptor) => void): void + +Unsubscribes from top session change events. + +**Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES (available only to system applications) + +**System capability**: SystemCapability.Multimedia.AVSession.Manager + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -----------------| ---- | ---------------------------- | +| type | string | Yes | Event type, which is **'topSessionChange'** in this case.| +| callback | (session: [AVSessionDescriptor](#avsessiondescriptor)) => void | No | Callback used for unsubscription. If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **session** parameter in the callback describes a media session. The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | + +**Example** + +```js avSession.off('topSessionChange'); ``` @@ -613,7 +769,7 @@ Subscribes to session service death events. | Name | Type | Mandatory| Description | | -------- | -------------------- | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The event **'sessionServiceDie'** is reported when the session service dies.| +| type | string | Yes | Event type. The event **'sessionServiceDie'** is triggered when the session service dies.| | callback | callback: () => void | Yes | Callback used for subscription. If the subscription is successful, **err** is **undefined**; otherwise, **err** is an error object. | **Error codes** @@ -646,7 +802,7 @@ Unsubscribes from session service death events. | Name | Type | Mandatory | Description | | ------ | ---------------------- | ---- | ------------------------------------------------------- | -| type | string | Yes | Event type. The event **'sessionServiceDie'** is reported when the session service dies.| +| type | string | Yes | Event type. The event **'sessionServiceDie'** is triggered when the session service dies.| | callback | callback: () => void | No | Callback used for unsubscription. If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** @@ -665,9 +821,9 @@ avSession.off('sessionServiceDie'); ## avSession.sendSystemAVKeyEvent -sendSystemAVKeyEvent(event: KeyEvent): Promise\ +sendSystemAVKeyEvent(event: KeyEvent, callback: AsyncCallback\): void -Sends a system key event to the top session. This API uses a promise to return the result. +Sends a system key event to the top session. This API uses an asynchronous callback to return the result. **Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES (available only to system applications) @@ -677,15 +833,10 @@ Sends a system key event to the top session. This API uses a promise to return t **Parameters** -| Name| Type | Mandatory| Description | -| ------ | ------------------------------- | ---- | ---------- | -| event | [KeyEvent](js-apis-keyevent.md) | Yes | Key event.| - -**Return value** - -| Type | Description | -| -------------- | ----------------------------- | -| Promise\ | Promise used to return the result. If the event is sent, no value is returned; otherwise, an error object is returned.| +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ------------------------------------- | +| event | [KeyEvent](js-apis-keyevent.md) | Yes | Key event. | +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the event is sent, **err** is **undefined**; otherwise, **err** is an error object.| **Error codes** @@ -699,23 +850,23 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js - let keyItem = {code:0x49, pressedTime:2, deviceId:0}; let event = {id:1, deviceId:0, actionTime:1, screenId:1, windowId:1, action:2, key:keyItem, unicodeChar:0, keys:[keyItem], ctrlKey:false, altKey:false, shiftKey:false, logoKey:false, fnKey:false, capsLock:false, numLock:false, scrollLock:false}; -avSession.sendSystemAVKeyEvent(event).then(() => { - console.info(`SendSystemAVKeyEvent Successfully`); -}).catch((err) => { - console.info(`SendSystemAVKeyEvent BusinessError: code: ${err.code}, message: ${err.message}`); +avSession.sendSystemAVKeyEvent(event, function (err) { + if (err) { + console.error(`SendSystemAVKeyEvent BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`SendSystemAVKeyEvent : SUCCESS `); + } }); - ``` ## avSession.sendSystemAVKeyEvent -sendSystemAVKeyEvent(event: KeyEvent, callback: AsyncCallback\): void +sendSystemAVKeyEvent(event: KeyEvent): Promise\ -Sends a system key event to the top session. This API uses an asynchronous callback to return the result. +Sends a system key event to the top session. This API uses a promise to return the result. **Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES (available only to system applications) @@ -725,10 +876,15 @@ Sends a system key event to the top session. This API uses an asynchronous callb **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------------ | ---- | ------------------------------------- | -| event | [KeyEvent](js-apis-keyevent.md) | Yes | Key event. | -| callback | AsyncCallback\ | Yes | Callback used to return the result. If the event is sent, **err** is **undefined**; otherwise, **err** is an error object.| +| Name| Type | Mandatory| Description | +| ------ | ------------------------------- | ---- | ---------- | +| event | [KeyEvent](js-apis-keyevent.md) | Yes | Key event.| + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the event is sent, no value is returned; otherwise, an error object is returned.| **Error codes** @@ -742,23 +898,22 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js + let keyItem = {code:0x49, pressedTime:2, deviceId:0}; let event = {id:1, deviceId:0, actionTime:1, screenId:1, windowId:1, action:2, key:keyItem, unicodeChar:0, keys:[keyItem], ctrlKey:false, altKey:false, shiftKey:false, logoKey:false, fnKey:false, capsLock:false, numLock:false, scrollLock:false}; -avSession.sendSystemAVKeyEvent(event, function (err) { - if (err) { - console.info(`SendSystemAVKeyEvent BusinessError: code: ${err.code}, message: ${err.message}`); - } else { - console.info(`SendSystemAVKeyEvent : SUCCESS `); - } +avSession.sendSystemAVKeyEvent(event).then(() => { + console.info(`SendSystemAVKeyEvent Successfully`); +}).catch((err) => { + console.error(`SendSystemAVKeyEvent BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` ## avSession.sendSystemControlCommand -sendSystemControlCommand(command: AVControlCommand): Promise\ +sendSystemControlCommand(command: AVControlCommand, callback: AsyncCallback\): void -Sends a system control command to the top session. This API uses a promise to return the result. +Sends a system control command to the top session. This API uses an asynchronous callback to return the result. **Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES (available only to system applications) @@ -768,15 +923,10 @@ Sends a system control command to the top session. This API uses a promise to re **Parameters** -| Name | Type | Mandatory| Description | -| ------- | ------------------------------------- | ---- | ----------------------------------- | -| command | [AVControlCommand](#avcontrolcommand10) | Yes | Command to send.| - -**Return value** - -| Type | Description | -| -------------- | ----------------------------- | -| Promise\ | Promise used to return the result. If the command is sent, no value is returned; otherwise, an error object is returned.| +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ------------------------------------- | +| command | [AVControlCommand](#avcontrolcommand10) | Yes | Command to send. | +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the command is sent, **err** is **undefined**; otherwise, **err** is an error object.| **Error codes** @@ -807,18 +957,20 @@ let avcommand = {command:cmd}; // let avcommand = {command:cmd, parameter:avSession.LoopMode.LOOP_MODE_SINGLE}; // let cmd : avSession.AVControlCommandType = 'toggleFavorite'; // let avcommand = {command:cmd, parameter:"false"}; -avSession.sendSystemControlCommand(avcommand).then(() => { - console.info(`SendSystemControlCommand successfully`); -}).catch((err) => { - console.info(`SendSystemControlCommand BusinessError: code: ${err.code}, message: ${err.message}`); +avSession.sendSystemControlCommand(avcommand, function (err) { + if (err) { + console.error(`SendSystemControlCommand BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`sendSystemControlCommand successfully`); + } }); ``` ## avSession.sendSystemControlCommand -sendSystemControlCommand(command: AVControlCommand, callback: AsyncCallback\): void +sendSystemControlCommand(command: AVControlCommand): Promise\ -Sends a system control command to the top session. This API uses an asynchronous callback to return the result. +Sends a system control command to the top session. This API uses a promise to return the result. **Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES (available only to system applications) @@ -828,10 +980,15 @@ Sends a system control command to the top session. This API uses an asynchronous **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------- | ---- | ------------------------------------- | -| command | [AVControlCommand](#avcontrolcommand10) | Yes | Command to send. | -| callback | AsyncCallback\ | Yes | Callback used to return the result. If the command is sent, **err** is **undefined**; otherwise, **err** is an error object.| +| Name | Type | Mandatory| Description | +| ------- | ------------------------------------- | ---- | ----------------------------------- | +| command | [AVControlCommand](#avcontrolcommand10) | Yes | Command to send.| + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the command is sent, no value is returned; otherwise, an error object is returned.| **Error codes** @@ -862,52 +1019,2433 @@ let avcommand = {command:cmd}; // let avcommand = {command:cmd, parameter:avSession.LoopMode.LOOP_MODE_SINGLE}; // let cmd : avSession.AVControlCommandType = 'toggleFavorite'; // let avcommand = {command:cmd, parameter:"false"}; -avSession.sendSystemControlCommand(avcommand, function (err) { - if (err) { - console.info(`SendSystemControlCommand BusinessError: code: ${err.code}, message: ${err.message}`); - } else { - console.info(`sendSystemControlCommand successfully`); - } +avSession.sendSystemControlCommand(avcommand).then(() => { + console.info(`SendSystemControlCommand successfully`); +}).catch((err) => { + console.error(`SendSystemControlCommand BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` -## AVSession10+ +## ProtocolType10+ -An **AVSession** object is created by calling [avSession.createAVSession](#avsessioncreateavsession10). The object enables you to obtain the session ID and set the metadata and playback state. +Enumerates the protocol types supported by the remote device. -### Attributes +**System capability**: SystemCapability.Multimedia.AVSession.AVCast -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System API**: This is a system API. -| Name | Type | Readable| Writable| Description | -| :-------- | :----- | :--- | :--- | :---------------------------- | -| sessionId | string | Yes | No | Unique session ID of the **AVSession** object.| +| Name | Value | Description | +| --------------------------- | ---- | ----------- | +| TYPE_LOCAL | 0 | Local device. | +| TYPE_CAST_PLUS_MIRROR | 1 | Cast+ mirror mode.| +| TYPE_CAST_PLUS_STREAM | 2 | Cast+ stream mode.| +## avSession.startCastDeviceDiscovery10+ -**Example** -```js -let sessionId = session.sessionId; -``` +startCastDeviceDiscovery(callback: AsyncCallback\): void -### setAVMetadata10+ +Starts cast-enabled device discovery. This API uses an asynchronous callback to return the result. -setAVMetadata(data: AVMetadata): Promise\ +**System capability**: SystemCapability.Multimedia.AVSession.AVCast -Sets session metadata. This API uses a promise to return the result. +**System API**: This is a system API. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ------------------------------------- | +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the command is sent and device discovery starts, **err** is **undefined**; otherwise, **err** is an error object.| + + +**Example** + +```js +avSession.startCastDeviceDiscovery(function (err) { + if (err) { + console.error(`startCastDeviceDiscovery BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`startCastDeviceDiscovery successfully`); + } +}); +``` + +## avSession.startCastDeviceDiscovery10+ + +startCastDeviceDiscovery(filter: number, callback: AsyncCallback\): void + +Starts cast-enabled device discovery with filter criteria specified. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ------------------------------------- | +| filter | number | Yes| Filter criteria for device discovery. The value consists of **ProtocolType**s.| +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the command is sent and device discovery starts, **err** is **undefined**; otherwise, **err** is an error object.| + + +**Example** + +```js +let filter = 2; +avSession.startCastDeviceDiscovery(filter, function (err) { + if (err) { + console.error(`startCastDeviceDiscovery BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`startCastDeviceDiscovery successfully`); + } +}); +``` + +## avSession.startCastDeviceDiscovery10+ + +startCastDeviceDiscovery(filter?: number): Promise\ + +Starts cast-enabled device discovery. This API uses a promise to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ------------------------------------- | +| filter | number | No| Filter criteria for device discovery. The value consists of **ProtocolType**s.| + +**Return value** +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the command is sent and device discovery starts, no value is returned; otherwise, an error object is returned.| + +**Example** + +```js +let filter = 2; +avSession.startCastDeviceDiscovery(filter).then(() => { + console.info(`startCastDeviceDiscovery successfully`); +}).catch((err) => { + console.error(`startCastDeviceDiscovery BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +## avSession.stopCastDeviceDiscovery10+ + +stopCastDeviceDiscovery(callback: AsyncCallback\): void + +Stops cast-enabled device discovery. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ------------------------------------- | +| callback | AsyncCallback\ | Yes | Callback used to return the result. If device discovery stops, **err** is **undefined**; otherwise, **err** is an error object.| + + +**Example** + +```js +avSession.stopCastDeviceDiscovery(function (err) { + if (err) { + console.error(`stopCastDeviceDiscovery BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`stopCastDeviceDiscovery successfully`); + } +}); +``` + +## avSession.stopCastDeviceDiscovery10+ + +stopCastDeviceDiscovery(): Promise\ + +Stops cast-enabled device discovery. This API uses a promise to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**System API**: This is a system API. + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If device discovery stops, no value is returned; otherwise, an error object is returned.| + +**Example** + +```js +avSession.stopCastDeviceDiscovery().then(() => { + console.info(`startCastDeviceDiscovery successfully`); +}).catch((err) => { + console.error(`startCastDeviceDiscovery BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +## avSession.setDiscoverable10+ + +setDiscoverable(enable: boolean, callback: AsyncCallback\): void + +Sets whether to allow the device discoverable. A discoverable device can be used as the cast receiver. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ------------------------------------- | +| enable | boolean | Yes| Whether to allow the device discoverable. The value **true** means to allow the device discoverable, and **false** means the opposite.| +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object.| + + +**Example** + +```js +avSession.setDiscoverable(true, function (err) { + if (err) { + console.error(`setDiscoverable BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`setDiscoverable successfully`); + } +}); +``` + +## avSession.setDiscoverable10+ + +setDiscoverable(enable: boolean): Promise\ + +Sets whether to allow the device discoverable. A discoverable device can be used as the cast receiver. This API uses a promise to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ------------------------------------- | +| enable | boolean | Yes| Whether to allow the device discoverable. The value **true** means to allow the device discoverable, and **false** means the opposite.| + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the setting is successful, no value is returned; otherwise, an error object is returned.| + +**Example** + +```js +avSession.setDiscoverable(true).then(() => { + console.info(`setDiscoverable successfully`); +}).catch((err) => { + console.error(`setDiscoverable BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +## avSession.on('deviceAvailable')10+ + +on(type: 'deviceAvailable', callback: (device: OutputDeviceInfo) => void): void + +Subscribes to device discovery events. + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'deviceAvailable'** is triggered when a device is discovered.| +| callback | (device: OutputDeviceInfo) => void | Yes | Callback used for subscription. If the subscription is successful, **err** is **undefined**; otherwise, **err** is an error object. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | + +**Example** + +```js +let castDevice; +avSession.on('deviceAvailable', (device) => { + castDevice = device; + console.info(`on deviceAvailable : ${device} `); +}); +``` + +## avSession.off('deviceAvailable')10+ + +off(type: 'deviceAvailable', callback?: (device: OutputDeviceInfo) => void): void + +Unsubscribes from device discovery events. + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory | Description | +| ------ | ---------------------- | ---- | ------------------------------------------------------- | +| type | string | Yes | Event type. The event **'deviceAvailable'** is triggered when a device is discovered.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | + +**Example** + +```js +avSession.off('deviceAvailable'); +``` + +## avSession.getAVCastController10+ + +getAVCastController(sessionId: string, callback: AsyncCallback\): void + +Obtains the cast controller when a casting connection is set up. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| --------- | ----------------------------------------------------------- | ---- | ------------------------------------------------------------ | +| sessionId | string | Yes |Session ID.| +| callback | AsyncCallback<[AVCastController](#avcastcontroller10)\> | Yes | Callback used to return the cast controller.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception | +| 6600102 | session does not exist | + +**Example** + +```js +import featureAbility from '@ohos.ability.featureAbility'; + +let currentAVSession; +let tag = "createNewSession"; +let context = featureAbility.getContext(); +let sessionId; // Used as an input parameter of subsequent functions. + +avSession.createAVSession(context, tag, "audio", function (err, data) { + if (err) { + console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + currentAVSession = data; + sessionId = currentAVSession.sessionId; + console.info(`CreateAVSession : SUCCESS : sessionId = ${sessionId}`); + } +}); + +let aVCastController; +avSession.getAVCastController(sessionId ,function (err, avcontroller) { + if (err) { + console.error(`getAVCastController BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + aVCastController = avcontroller; + console.info('getAVCastController : SUCCESS '); + } +}); +``` + +## avSession.getAVCastController10+ + +getAVCastController(sessionId: string): Promise\; + +Obtains the cast controller when a casting connection is set up. This API uses a promise to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| --------- | ------------------------- | ---- | ------------------------------------------------------------ | +| sessionId | string | Yes |Session ID.| + +**Return value** + +| Type | Description | +| --------- | ------------------------------------------------------------ | +| Promise<[AVCastController](#avcastcontroller10)\> | Promise used to return the cast controller.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | server exception | +| 6600102 | The session does not exist | + +**Example** + +```js +import featureAbility from '@ohos.ability.featureAbility'; + +let currentAVSession; +let tag = "createNewSession"; +let context = featureAbility.getContext(); +let sessionId; // Used as an input parameter of subsequent functions. + +avSession.createAVSession(context, tag, "audio", function (err, data) { + if (err) { + console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + currentAVSession = data; + sessionId = currentAVSession.sessionId; + console.info(`CreateAVSession : SUCCESS : sessionId = ${sessionId}`); + } +}); + +let aVCastController; +avSession.getAVCastController(sessionId).then((avcontroller) => { + aVCastController = avcontroller; + console.info('getAVCastController : SUCCESS'); +}).catch((err) => { + console.error(`getAVCastController BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +## avSession.startCasting10+ + +startCasting(session: SessionToken, device: OutputDeviceInfo, callback: AsyncCallback\): void + +Starts casting. This API uses an asynchronous callback to return the result. + +**Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES (available only to system applications) + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ------------------------------------- | +| session | [SessionToken](#sessiontoken) | Yes | Session token. | +| device | [OutputDeviceInfo](#outputdeviceinfo10) | Yes | Device-related information.| +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the command is sent and casting starts, **err** is **undefined**; otherwise, **err** is an error object.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600108 | Device connecting failed. | + +**Example** + +```js +import featureAbility from '@ohos.ability.featureAbility'; + +let currentAVSession; +let tag = "createNewSession"; +let context = featureAbility.getContext(); +let currSessionId; // Used as an input parameter of subsequent functions. + +avSession.createAVSession(context, tag, "audio", function (err, data) { + if (err) { + console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + currentAVSession = data; + currSessionId = currentAVSession.sessionId; + console.info(`CreateAVSession : SUCCESS : sessionId = ${currSessionId}`); + } +}); + +let myToken = { + sessionId: currSessionId, +} +let castDevice; +avSession.on('deviceAvailable', (device) => { + castDevice = device; + console.info(`on deviceAvailable : ${device} `); +}); +avSession.startCasting(myToken, castDevice, function (err) { + if (err) { + console.error(`startCasting BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`startCasting successfully`); + } +}); +``` + +## avSession.startCasting10+ + +startCasting(session: SessionToken, device: OutputDeviceInfo): Promise\ + +Starts casting. This API uses a promise to return the result. + +**Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES (available only to system applications) + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ------------------------------------- | +| session | [SessionToken](#sessiontoken) | Yes | Session token. | +| device | [OutputDeviceInfo](#outputdeviceinfo10) | Yes | Device-related information.| + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the command is sent and casting starts, no value is returned; otherwise, an error object is returned.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600108 | Device connecting failed. | + +**Example** + +```js +import featureAbility from '@ohos.ability.featureAbility'; + +let currentAVSession; +let tag = "createNewSession"; +let context = featureAbility.getContext(); +let currSessionId; // Used as an input parameter of subsequent functions. + +avSession.createAVSession(context, tag, "audio", function (err, data) { + if (err) { + console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + currentAVSession = data; + currSessionId = currentAVSession.sessionId; + console.info(`CreateAVSession : SUCCESS : sessionId = ${currSessionId}`); + } +}); + +let myToken = { + sessionId: currSessionId, +} +let castDevice; +avSession.on('deviceAvailable', (device) => { + castDevice = device; + console.info(`on deviceAvailable : ${device} `); +}); +avSession.startCasting(myToken, castDevice).then(() => { + console.info(`startCasting successfully`); +}).catch((err) => { + console.error(`startCasting BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +## avSession.stopCasting10+ + +stopCasting(session: SessionToken, callback: AsyncCallback\): void + +Stops castings. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ------------------------------------- | +| session | [SessionToken](#sessiontoken) | Yes | Session token. | +| callback | AsyncCallback\ | Yes | Callback used to return the result. If casting stops, **err** is **undefined**; otherwise, **err** is an error object.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600109 | The remote connection is not established. | + +**Example** + +```js +import featureAbility from '@ohos.ability.featureAbility'; + +let currentAVSession; +let tag = "createNewSession"; +let context = featureAbility.getContext(); +let currSessionId; // Used as an input parameter of subsequent functions. + +avSession.createAVSession(context, tag, "audio", function (err, data) { + if (err) { + console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + currentAVSession = data; + currSessionId = currentAVSession.sessionId; + console.info(`CreateAVSession : SUCCESS : sessionId = ${currSessionId}`); + } +}); + +let myToken = { + sessionId: currSessionId, +} +avSession.stopCasting(myToken, function (err) { + if (err) { + console.error(`stopCasting BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`stopCasting successfully`); + } +}); +``` + +## avSession.stopCasting10+ + +stopCasting(session: SessionToken): Promise\ + +Stops castings. This API uses a promise to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**System API**: This is a system API. + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ------------------------------------- | +| session | [SessionToken](#sessiontoken) | Yes | Session token. | + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If casting stops, no value is returned; otherwise, an error object is returned.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600109 | The remote connection is not established. | + +**Example** + +```js +import featureAbility from '@ohos.ability.featureAbility'; + +let currentAVSession; +let tag = "createNewSession"; +let context = featureAbility.getContext(); +let currSessionId; // Used as an input parameter of subsequent functions. + +avSession.createAVSession(context, tag, "audio", function (err, data) { + if (err) { + console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + currentAVSession = data; + currSessionId = currentAVSession.sessionId; + console.info(`CreateAVSession : SUCCESS : sessionId = ${currSessionId}`); + } +}); + +let myToken = { + sessionId: currSessionId, +} +avSession.stopCasting(myToken).then(() => { + console.info(`stopCasting successfully`); +}).catch((err) => { + console.error(`stopCasting BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +## AVSessionType10+ +Enumerates the session types supported by the session. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +| Name | Type | Description| +| ----- | ------ | ---- | +| audio | string | Audio session.| +| video | string | Video session.| + +## AVSession10+ + +An **AVSession** object is created by calling [avSession.createAVSession](#avsessioncreateavsession10). The object enables you to obtain the session ID and set the metadata and playback state. + +### Attributes + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +| Name | Type | Readable| Writable| Description | +| :-------- | :----- | :--- | :--- | :---------------------------- | +| sessionId | string | Yes | No | Unique session ID of the **AVSession** object.| +| sessionType10+ | AVSessionType | Yes | No | AVSession type.| + + +**Example** +```js +let sessionId = currentAVSession.sessionId; +let sessionType = currentAVSession.sessionType; +``` + +### setAVMetadata10+ + +setAVMetadata(data: AVMetadata): Promise\ + +Sets session metadata. This API uses a promise to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------------------------- | ---- | ------------ | +| data | [AVMetadata](#avmetadata10) | Yes | Session metadata.| + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the setting is successful, no value is returned; otherwise, an error object is returned.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +let metadata = { + assetId: "121278", + title: "lose yourself", + artist: "Eminem", + author: "ST", + album: "Slim shady", + writer: "ST", + composer: "ST", + duration: 2222, + mediaImage: "https://www.example.com/example.jpg", + subtitle: "8 Mile", + description: "Rap", + lyric: "https://www.example.com/example.lrc", + previousAssetId: "121277", + nextAssetId: "121279", +}; +currentAVSession.setAVMetadata(metadata).then(() => { + console.info(`SetAVMetadata successfully`); +}).catch((err) => { + console.error(`SetAVMetadata BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +### setAVMetadata10+ + +setAVMetadata(data: AVMetadata, callback: AsyncCallback\): void + +Sets session metadata. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------- | ---- | ------------------------------------- | +| data | [AVMetadata](#avmetadata10) | Yes | Session metadata. | +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +let metadata = { + assetId: "121278", + title: "lose yourself", + artist: "Eminem", + author: "ST", + album: "Slim shady", + writer: "ST", + composer: "ST", + duration: 2222, + mediaImage: "https://www.example.com/example.jpg", + subtitle: "8 Mile", + description: "Rap", + lyric: "https://www.example.com/example.lrc", + previousAssetId: "121277", + nextAssetId: "121279", +}; +currentAVSession.setAVMetadata(metadata, function (err) { + if (err) { + console.error(`SetAVMetadata BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`SetAVMetadata successfully`); + } +}); +``` + +### setAVPlaybackState10+ + +setAVPlaybackState(state: AVPlaybackState): Promise\ + +Sets information related to the session playback state. This API uses a promise to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ----------------------------------- | ---- | ---------------------------------------------- | +| data | [AVPlaybackState](#avplaybackstate10) | Yes | Information related to the session playback state.| + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the setting is successful, no value is returned; otherwise, an error object is returned.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +let playbackState = { + state:avSession.PlaybackState.PLAYBACK_STATE_PLAY, + speed: 1.0, + position:{elapsedTime:10, updateTime:(new Date()).getTime()}, + bufferedTime:1000, + loopMode:avSession.LoopMode.LOOP_MODE_SINGLE, + isFavorite:true, +}; +currentAVSession.setAVPlaybackState(playbackState).then(() => { + console.info(`SetAVPlaybackState successfully`); +}).catch((err) => { + console.info(`SetAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +### setAVPlaybackState10+ + +setAVPlaybackState(state: AVPlaybackState, callback: AsyncCallback\): void + +Sets information related to the session playback state. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ----------------------------------- | ---- | ---------------------------------------------- | +| data | [AVPlaybackState](#avplaybackstate10) | Yes | Information related to the session playback state.| +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +let PlaybackState = { + state:avSession.PlaybackState.PLAYBACK_STATE_PLAY, + speed: 1.0, + position:{elapsedTime:10, updateTime:(new Date()).getTime()}, + bufferedTime:1000, + loopMode:avSession.LoopMode.LOOP_MODE_SINGLE, + isFavorite:true, +}; +currentAVSession.setAVPlaybackState(PlaybackState, function (err) { + if (err) { + console.info(`SetAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`SetAVPlaybackState successfully`); + } +}); +``` + +### setLaunchAbility10+ + +setLaunchAbility(ability: WantAgent): Promise\ + +Sets a launcher ability. This API uses a promise to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| ------- | --------------------------------------------- | ---- | ----------------------------------------------------------- | +| ability | [WantAgent](js-apis-app-ability-wantAgent.md) | Yes | Application attributes, such as the bundle name, ability name, and deviceID.| + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the setting is successful, no value is returned; otherwise, an error object is returned.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +import wantAgent from '@ohos.app.ability.wantAgent'; + +// WantAgentInfo object +let wantAgentInfo = { + wants: [ + { + deviceId: "deviceId", + bundleName: "com.example.myapplication", + abilityName: "EntryAbility", + action: "action1", + entities: ["entity1"], + type: "MIMETYPE", + uri: "key={true,true,false}", + parameters: + { + mykey0: 2222, + mykey1: [1, 2, 3], + mykey2: "[1, 2, 3]", + mykey3: "ssssssssssssssssssssssssss", + mykey4: [false, true, false], + mykey5: ["qqqqq", "wwwwww", "aaaaaaaaaaaaaaaaa"], + mykey6: true, + } + } + ], + operationType: wantAgent.OperationType.START_ABILITIES, + requestCode: 0, + wantAgentFlags:[wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] +} + +wantAgent.getWantAgent(wantAgentInfo).then((agent) => { + currentAVSession.setLaunchAbility(agent).then(() => { + console.info(`SetLaunchAbility successfully`); + }).catch((err) => { + console.error(`SetLaunchAbility BusinessError: code: ${err.code}, message: ${err.message}`); + }); +}); +``` + +### setLaunchAbility10+ + +setLaunchAbility(ability: WantAgent, callback: AsyncCallback\): void + +Sets a launcher ability. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | --------------------------------------------- | ---- | ------------------------------------------------------------ | +| ability | [WantAgent](js-apis-app-ability-wantAgent.md) | Yes | Application attributes, such as the bundle name, ability name, and deviceID. | +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +import wantAgent from '@ohos.app.ability.wantAgent'; + +// WantAgentInfo object +let wantAgentInfo = { + wants: [ + { + deviceId: "deviceId", + bundleName: "com.example.myapplication", + abilityName: "EntryAbility", + action: "action1", + entities: ["entity1"], + type: "MIMETYPE", + uri: "key={true,true,false}", + parameters: + { + mykey0: 2222, + mykey1: [1, 2, 3], + mykey2: "[1, 2, 3]", + mykey3: "ssssssssssssssssssssssssss", + mykey4: [false, true, false], + mykey5: ["qqqqq", "wwwwww", "aaaaaaaaaaaaaaaaa"], + mykey6: true, + } + } + ], + operationType: wantAgent.OperationType.START_ABILITIES, + requestCode: 0, + wantAgentFlags:[wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] +} + +wantAgent.getWantAgent(wantAgentInfo).then((agent) => { + currentAVSession.setLaunchAbility(agent, function (err) { + if (err) { + console.error(`SetLaunchAbility BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`SetLaunchAbility successfully`); + } + }); +}); +``` + +### dispatchSessionEvent10+ + +dispatchSessionEvent(event: string, args: {[key: string]: Object}): Promise\ + +Dispatches a custom event in the session, including the event name and event content in key-value pair format. This API uses a promise to return the result. It is called by the provider. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| ------- | --------------------------------------------- | ---- | ----------------------------------------------------------- | +| event | string | Yes | Name of the session event.| +| args | {[key: string]: any} | Yes | Event content in key-value pair format.| + +> **NOTE** +> +> The **args** parameter supports the following data types: string, number, Boolean, object, array, and file descriptor. For details, see [@ohos.app.ability.Want (Want)](./js-apis-app-ability-want.md). + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the setting is successful, no value is returned; otherwise, an error object is returned.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +let eventName = "dynamic_lyric"; +let args = { + lyric : "This is lyric" +} +currentAVSession.dispatchSessionEvent(eventName, args).catch((err) => { + console.info(`dispatchSessionEvent BusinessError: code: ${err.code}, message: ${err.message}`); +}) +``` + +### dispatchSessionEvent10+ + +dispatchSessionEvent(event: string, args: {[key: string]: Object}, callback: AsyncCallback\): void + +Dispatches a custom event in the session, including the event name and event content in key-value pair format. This API uses an asynchronous callback to return the result. It is called by the provider. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| ------- | --------------------------------------------- | ---- | ----------------------------------------------------------- | +| event | string | Yes | Name of the session event.| +| args | {[key: string]: any} | Yes | Event content in key-value pair format.| +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object.| + +> **NOTE** +> +> The **args** parameter supports the following data types: string, number, Boolean, object, array, and file descriptor. For details, see [@ohos.app.ability.Want (Want)](./js-apis-app-ability-want.md). + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +let eventName = "dynamic_lyric"; +let args = { + lyric : "This is lyric" +} +currentAVSession.dispatchSessionEvent(eventName, args, (err) => { + if(err) { + console.error(`dispatchSessionEvent BusinessError: code: ${err.code}, message: ${err.message}`); + } +}) +``` + +### setAVQueueItems10+ + +setAVQueueItems(items: Array\): Promise\ + +Sets a playlist. This API uses a promise to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| ------ | ------------------------------------ | ---- | ---------------------------------- | +| items | Array<[AVQueueItem](#avqueueitem10)\> | Yes | Playlist to set.| + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the setting is successful, no value is returned; otherwise, an error object is returned.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +import image from '@ohos.multimedia.image'; +import resourceManager from '@ohos.resourceManager'; + +let value : Uint8Array = await resourceManager.getRawFileContent('IMAGE_URI'); +let imageSource : imageImageSource = image.createImageSource(value.buffer); +let imagePixel : image.PixelMap = await imageSource.createPixelMap({desiredSize:{width: 150, height: 150}}); +let queueItemDescription_1 = { + mediaId: '001', + title: 'music_name', + subtitle: 'music_sub_name', + description: 'music_description', + icon : imagePixel, + iconUri: 'http://www.icon.uri.com', + extras: {'extras':'any'} +}; +let queueItem_1 = { + itemId: 1, + description: queueItemDescription_1 +}; +let queueItemDescription_2 = { + mediaId: '002', + title: 'music_name', + subtitle: 'music_sub_name', + description: 'music_description', + icon: imagePixel, + iconUri: 'http://www.xxx.com', + extras: {'extras':'any'} +}; +let queueItem_2 = { + itemId: 2, + description: queueItemDescription_2 +}; +let queueItemsArray = [queueItem_1, queueItem_2]; +currentAVSession.setAVQueueItems(queueItemsArray).then(() => { + console.info(`SetAVQueueItems successfully`); +}).catch((err) => { + console.error(`SetAVQueueItems BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +### setAVQueueItems10+ + +setAVQueueItems(items: Array\, callback: AsyncCallback\): void + +Sets a playlist. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------ | ---- | ----------------------------------------------------------- | +| items | Array<[AVQueueItem](#avqueueitem10)\> | Yes | Playlist to set. | +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +import image from '@ohos.multimedia.image'; +import resourceManager from '@ohos.resourceManager'; + +let value : Uint8Array = await resourceManager.getRawFileContent('IMAGE_URI'); +let imageSource : imageImageSource = image.createImageSource(value.buffer); +let imagePixel : image.PixelMap = await imageSource.createPixelMap({desiredSize:{width: 150, height: 150}}); +let queueItemDescription_1 = { + mediaId: '001', + title: 'music_name', + subtitle: 'music_sub_name', + description: 'music_description', + icon: imagePixel, + iconUri: 'http://www.icon.uri.com', + extras: {'extras':'any'} +}; +let queueItem_1 = { + itemId: 1, + description: queueItemDescription_1 +}; +let queueItemDescription_2 = { + mediaId: '002', + title: 'music_name', + subtitle: 'music_sub_name', + description: 'music_description', + icon: imagePixel, + iconUri: 'http://www.icon.uri.com', + extras: {'extras':'any'} +}; +let queueItem_2 = { + itemId: 2, + description: queueItemDescription_2 +}; +let queueItemsArray = [queueItem_1, queueItem_2]; +currentAVSession.setAVQueueItems(queueItemsArray, function (err) { + if (err) { + console.error(`SetAVQueueItems BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`SetAVQueueItems successfully`); + } +}); +``` + +### setAVQueueTitle10+ + +setAVQueueTitle(title: string): Promise\ + +Sets a name for the playlist. This API uses a promise to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| ------ | ------ | ---- | -------------- | +| title | string | Yes | Name of the playlist.| + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the setting is successful, no value is returned; otherwise, an error object is returned.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +let queueTitle = 'QUEUE_TITLE'; +currentAVSession.setAVQueueTitle(queueTitle).then(() => { + console.info(`SetAVQueueTitle successfully`); +}).catch((err) => { + console.error(`SetAVQueueTitle BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +### setAVQueueTitle10+ + +setAVQueueTitle(title: string, callback: AsyncCallback\): void + +Sets a name for the playlist. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | --------------------- | ---- | ----------------------------------------------------------- | +| title | string | Yes | Name of the playlist. | +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +let queueTitle = 'QUEUE_TITLE'; +currentAVSession.setAVQueueTitle(queueTitle, function (err) { + if (err) { + console.info(`SetAVQueueTitle BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.error(`SetAVQueueTitle successfully`); + } +}); +``` + +### setExtras10+ + +setExtras(extras: {[key: string]: Object}): Promise\ + +Sets a custom media packet in the form of key-value pairs. This API uses a promise to return the result. It is called by the provider. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| ------- | --------------------------------------------- | ---- | ----------------------------------------------------------- | +| extras | {[key: string]: Object} | Yes | Key-value pairs of the custom media packet.| + +> **NOTE** +> +> The **extras** parameter supports the following data types: string, number, Boolean, object, array, and file descriptor. For details, see [@ohos.app.ability.Want (Want)](./js-apis-app-ability-want.md). + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the setting is successful, no value is returned; otherwise, an error object is returned.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +let extras = { + extras : "This is custom media packet" +} +currentAVSession.setExtras(extras).catch((err) => { + console.info(`setExtras BusinessError: code: ${err.code}, message: ${err.message}`); +}) +``` + +### setExtras10+ + +setExtras(extras: {[key: string]: Object}, callback: AsyncCallback\): void + +Sets a custom media packet in the form of key-value pairs. This API uses an asynchronous callback to return the result. It is called by the provider. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| ------- | --------------------------------------------- | ---- | ----------------------------------------------------------- | +| extras | {[key: string]: any} | Yes | Key-value pairs of the custom media packet.| +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object.| + +> **NOTE** +> +> The **extras** parameter supports the following data types: string, number, Boolean, object, array, and file descriptor. For details, see [@ohos.app.ability.Want (Want)](./js-apis-app-ability-want.md). + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +let extras = { + extras : "This is custom media packet" +} +currentAVSession.setExtras(extras, (err) => { + if(err) { + console.error(`setExtras BusinessError: code: ${err.code}, message: ${err.message}`); + } +}) +``` + +### getController10+ + +getController(): Promise\ + +Obtains the controller corresponding to this session. This API uses a promise to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Return value** + +| Type | Description | +| ---------------------------------------------------- | ----------------------------- | +| Promise<[AVSessionController](#avsessioncontroller10)> | Promise used to return the session controller.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +let avsessionController; +currentAVSession.getController().then((avcontroller) => { + avsessionController = avcontroller; + console.info(`GetController : SUCCESS : sessionid : ${avsessionController.sessionId}`); +}).catch((err) => { + console.error(`GetController BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +### getController10+ + +getController(callback: AsyncCallback\): void + +Obtains the controller corresponding to this session. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ----------------------------------------------------------- | ---- | -------------------------- | +| callback | AsyncCallback<[AVSessionController](#avsessioncontroller10)\> | Yes | Callback used to return the session controller.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +let avsessionController; +currentAVSession.getController(function (err, avcontroller) { + if (err) { + console.error(`GetController BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + avsessionController = avcontroller; + console.info(`GetController : SUCCESS : sessionid : ${avsessionController.sessionId}`); + } +}); +``` + +### getAVCastController10+ + +getAVCastController(callback: AsyncCallback\): void + +Obtains the cast controller when a casting connection is set up. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**Parameters** + +| Name | Type | Mandatory| Description | +| --------- | ----------------------------------------------------------- | ---- | ------------------------------------------------------------ | +| callback | AsyncCallback<[AVCastController](#avcastcontroller10)\> | Yes | Callback used to return the cast controller.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600102 | The session does not exist. | +| 6600110 | The remote connection is not established. | + +**Example** + +```js +let aVCastController; +currentAVSession.getAVCastController().then((avcontroller) => { + aVCastController = avcontroller; + console.info(`getAVCastController : SUCCESS : sessionid : ${aVCastController.sessionId}`); +}).catch((err) => { + console.error(`getAVCastController BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +### getAVCastController10+ + +getAVCastController(): Promise\; + +Obtains the cast controller when a casting connection is set up. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**Return value** + +| Type | Description | +| --------- | ------------------------------------------------------------ | +| Promise<[AVCastController](#avcastcontroller10)\> | Promise used to return the cast controller.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600102 | The session does not exist. | +| 6600110 | The remote connection is not established. | + +**Example** + +```js +let aVCastController; +currentAVSession.getAVCastController(function (err, avcontroller) { + if (err) { + console.error(`getAVCastController BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + aVCastController = avcontroller; + console.info(`getAVCastController : SUCCESS : sessionid : ${aVCastController.sessionId}`); + } +}); +``` + +### getOutputDevice10+ + +getOutputDevice(): Promise\ + +Obtains information about the output device for this session. This API uses a promise to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Return value** + +| Type | Description | +| ---------------------------------------------- | --------------------------------- | +| Promise<[OutputDeviceInfo](#outputdeviceinfo10)> | Promise used to return the output device information.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.getOutputDevice().then((outputDeviceInfo) => { + console.info(`GetOutputDevice : SUCCESS : isRemote : ${outputDeviceInfo.isRemote}`); +}).catch((err) => { + console.error(`GetOutputDevice BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +### getOutputDevice10+ + +getOutputDevice(callback: AsyncCallback\): void + +Obtains information about the output device for this session. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ----------------------------------------------------- | ---- | ------------------------------ | +| callback | AsyncCallback<[OutputDeviceInfo](#outputdeviceinfo10)\> | Yes | Callback used to return the information obtained.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.getOutputDevice(function (err, outputDeviceInfo) { + if (err) { + console.error(`GetOutputDevice BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`GetOutputDevice : SUCCESS : isRemote : ${outputDeviceInfo.isRemote}`); + } +}); +``` + +### activate10+ + +activate(): Promise\ + +Activates this session. A session can be used only after being activated. This API uses a promise to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the session is activated, no value is returned; otherwise, an error object is returned.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.activate().then(() => { + console.info(`Activate : SUCCESS `); +}).catch((err) => { + console.error(`Activate BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +### activate10+ + +activate(callback: AsyncCallback\): void + +Activates this session. A session can be used only after being activated. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ---------- | +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the session is activated, **err** is **undefined**; otherwise, **err** is an error object.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.activate(function (err) { + if (err) { + console.error(`Activate BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`Activate : SUCCESS `); + } +}); +``` + +### deactivate10+ + +deactivate(): Promise\ + +Deactivates this session. You can use [activate](#activate10) to activate the session again. This API uses a promise to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the session is deactivated, no value is returned; otherwise, an error object is returned.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.deactivate().then(() => { + console.info(`Deactivate : SUCCESS `); +}).catch((err) => { + console.error(`Deactivate BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +### deactivate10+ + +deactivate(callback: AsyncCallback\): void + +Deactivates this session. This API uses an asynchronous callback to return the result. + +Deactivates this session. You can use [activate](#activate10) to activate the session again. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ---------- | +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the session is deactivated, **err** is **undefined**; otherwise, **err** is an error object.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.deactivate(function (err) { + if (err) { + console.error(`Deactivate BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`Deactivate : SUCCESS `); + } +}); +``` + +### destroy10+ + +destroy(): Promise\ + +Destroys this session. This API uses a promise to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the session is destroyed, no value is returned; otherwise, an error object is returned.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.destroy().then(() => { + console.info(`Destroy : SUCCESS `); +}).catch((err) => { + console.error(`Destroy BusinessError: code: ${err.code}, message: ${err.message}`); +}); +``` + +### destroy10+ + +destroy(callback: AsyncCallback\): void + +Destroys this session. This API uses an asynchronous callback to return the result. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ---------- | +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the session is destroyed, **err** is **undefined**; otherwise, **err** is an error object.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.destroy(function (err) { + if (err) { + console.error(`Destroy BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`Destroy : SUCCESS `); + } +}); +``` + +### on('play')10+ + +on(type: 'play', callback: () => void): void + +Subscribes to playback started events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'play'** is triggered when the command for starting playback is sent to the session.| +| callback | callback: () => void | Yes | Callback used for subscription. If the subscription is successful, **err** is **undefined**; otherwise, **err** is an error object. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.on('play', () => { + console.info(`on play entry`); +}); +``` + +### on('pause')10+ + +on(type: 'pause', callback: () => void): void + +Subscribes to playback paused events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'pause'** is triggered when the command for pausing the playback is sent to the session.| +| callback | callback: () => void | Yes | Callback used for subscription. If the subscription is successful, **err** is **undefined**; otherwise, **err** is an error object. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.on('pause', () => { + console.info(`on pause entry`); +}); +``` + +### on('stop')10+ + +on(type:'stop', callback: () => void): void + +Subscribes to playback stopped events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'stop'** is triggered when the command for stopping the playback is sent to the session.| +| callback | callback: () => void | Yes | Callback used for subscription. If the subscription is successful, **err** is **undefined**; otherwise, **err** is an error object. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.on('stop', () => { + console.info(`on stop entry`); +}); +``` + +### on('playNext')10+ + +on(type:'playNext', callback: () => void): void + +Subscribes to playNext command events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'playNext'** is triggered when the command for playing the next item is sent to the session.| +| callback | callback: () => void | Yes | Callback used for subscription. If the subscription is successful, **err** is **undefined**; otherwise, **err** is an error object. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.on('playNext', () => { + console.info(`on playNext entry`); +}); +``` + +### on('playPrevious')10+ + +on(type:'playPrevious', callback: () => void): void + +Subscribes to playPrevious command events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'playPrevious'** is triggered when the command for playing the previous item sent to the session.| +| callback | callback: () => void | Yes | Callback used for subscription. If the subscription is successful, **err** is **undefined**; otherwise, **err** is an error object. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.on('playPrevious', () => { + console.info(`on playPrevious entry`); +}); +``` + +### on('fastForward')10+ + +on(type: 'fastForward', callback: () => void): void + +Subscribes to fastForward command events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'fastForward'** is triggered when the command for fast forwarding is sent to the session.| +| callback | callback: () => void | Yes | Callback used for subscription. If the subscription is successful, **err** is **undefined**; otherwise, **err** is an error object. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.on('fastForward', () => { + console.info(`on fastForward entry`); +}); +``` + +### on('rewind')10+ + +on(type:'rewind', callback: () => void): void + +Subscribes to rewind command events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'rewind'** is triggered when the command for rewinding is sent to the session.| +| callback | callback: () => void | Yes | Callback used for subscription. If the subscription is successful, **err** is **undefined**; otherwise, **err** is an error object. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.on('rewind', () => { + console.info(`on rewind entry`); +}); +``` + +### on('seek')10+ + +on(type: 'seek', callback: (time: number) => void): void + +Subscribes to seek command events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ---------------------- | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'seek'** is triggered when the seek command is sent to the session.| +| callback | (time: number) => void | Yes | Callback used for subscription. The **time** parameter in the callback indicates the time to seek to, in milliseconds. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.on('seek', (time) => { + console.info(`on seek entry time : ${time}`); +}); +``` + +### on('setSpeed')10+ + +on(type: 'setSpeed', callback: (speed: number) => void): void + +Subscribes to setSpeed command events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ----------------------- | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'setSpeed'** is triggered when the command for setting the playback speed is sent to the session.| +| callback | (speed: number) => void | Yes | Callback used for subscription. The **speed** parameter in the callback indicates the playback speed. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.on('setSpeed', (speed) => { + console.info(`on setSpeed speed : ${speed}`); +}); +``` + +### on('setLoopMode')10+ + +on(type: 'setLoopMode', callback: (mode: LoopMode) => void): void + +Subscribes to setLoopMode command events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ---- | +| type | string | Yes | Event type. The event **'setLoopMode'** is triggered when the command for setting the loop mode is sent to the session.| +| callback | (mode: [LoopMode](#loopmode10)) => void | Yes | Callback used for subscription. The **mode** parameter in the callback indicates the loop mode. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.on('setLoopMode', (mode) => { + console.info(`on setLoopMode mode : ${mode}`); +}); +``` + +### on('toggleFavorite')10+ + +on(type: 'toggleFavorite', callback: (assetId: string) => void): void + +Subscribes to toggleFavorite command events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------- | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'toggleFavorite'** is triggered when the command for favoriting the media asset is sent to the session.| +| callback | (assetId: string) => void | Yes | Callback used for subscription. The **assetId** parameter in the callback indicates the media asset ID. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.on('toggleFavorite', (assetId) => { + console.info(`on toggleFavorite mode : ${assetId}`); +}); +``` + +### on('skipToQueueItem')10+ + +on(type: 'skipToQueueItem', callback: (itemId: number) => void): void + +Subscribes to the event that indicates an item in the playlist is selected. The session can play the selected item. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------ | ---- | ---------------------------------------------------------------------------------------- | +| type | string | Yes | Event type. The event **'skipToQueueItem'** is triggered when an item in the playlist is selected.| +| callback | (itemId: number) => void | Yes | Callback used for subscription. The **itemId** parameter in the callback indicates the ID of the selected item. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.on('skipToQueueItem', (itemId) => { + console.info(`on skipToQueueItem id : ${itemId}`); +}); +``` + +### on('handleKeyEvent')10+ + +on(type: 'handleKeyEvent', callback: (event: KeyEvent) => void): void + +Subscribes to key events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'handleKeyEvent'** is triggered when a key event is sent to the session.| +| callback | (event: [KeyEvent](js-apis-keyevent.md)) => void | Yes | Callback used for subscription. The **event** parameter in the callback indicates the key event. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.on('handleKeyEvent', (event) => { + console.info(`on handleKeyEvent event : ${event}`); +}); +``` + +### on('outputDeviceChange')10+ + +on(type: 'outputDeviceChange', callback: (state: ConnectionState, device: OutputDeviceInfo) => void): void + +Subscribes to output device change events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'outputDeviceChange'** is triggered when the output device changes.| +| callback | (state: [ConnectionState](#connectionstate10), device: [OutputDeviceInfo](#outputdeviceinfo10)) => void | Yes | Callback used for subscription. The **device** parameter in the callback indicates the output device information.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | + +**Error codes** +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.on('outputDeviceChange', (state, device) => { + console.info(`on outputDeviceChange device : ${device}`); +}); +``` + +### on('commonCommand')10+ + +on(type: 'commonCommand', callback: (command: string, args: {[key: string]: Object}) => void): void + +Subscribes to custom control command change events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'commonCommand'** is triggered when a custom control command changes.| +| callback | (commonCommand: string, args: {[key:string]: Object}) => void | Yes | Callback used for subscription. The **commonCommand** parameter in the callback indicates the name of the changed custom control command, and **args** indicates the parameters carried in the command. The parameters must be the same as those set in **sendCommand**. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ------------------------------ | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.on('commonCommand', (commonCommand, args) => { + console.info(`OnCommonCommand, the command is ${commonCommand}, args: ${JSON.stringify(args)}`); +}); +``` + +### off('play')10+ + +off(type: 'play', callback?: () => void): void + +Unsubscribes from playback started events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ---------------------------------------------------------------------------------------------------------------------------- | +| type | string | Yes | Event type, which is **'play'** in this case.| +| callback | callback: () => void | No | Callback used for unsubscription. If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | + +**Error codes** +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.off('play'); +``` + +### off('pause')10+ + +off(type: 'pause', callback?: () => void): void + +Unsubscribes from playback paused events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ---------------------------------------------------------------------------------------------------------------------------- | +| type | string | Yes | Event type, which is **'pause'** in this case.| +| callback | callback: () => void | No | Callback used for unsubscription. If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session.| + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.off('pause'); +``` + +### off('stop')10+ + +off(type: 'stop', callback?: () => void): void + +Unsubscribes from playback stopped events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ---------------------------------------------------------------------------------------------------------------------------- | +| type | string | Yes | Event type, which is **'stop'** in this case.| +| callback | callback: () => void | No | Callback used for unsubscription. If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). -**Parameters** +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | -| Name| Type | Mandatory| Description | -| ------ | ------------------------- | ---- | ------------ | -| data | [AVMetadata](#avmetadata10) | Yes | Session metadata.| +**Example** -**Return value** +```js +currentAVSession.off('stop'); +``` -| Type | Description | -| -------------- | ----------------------------- | -| Promise\ | Promise used to return the result. If the setting is successful, no value is returned; otherwise, an error object is returned.| +### off('playNext')10+ + +off(type: 'playNext', callback?: () => void): void + +Unsubscribes from playNext command events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ---------------------------------------------------------------------------------------------------------------------------- | +| type | string | Yes | Event type, which is **'playNext'** in this case.| +| callback | callback: () => void | No | Callback used for unsubscription. If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** @@ -921,43 +3459,23 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -let metadata = { - assetId: "121278", - title: "lose yourself", - artist: "Eminem", - author: "ST", - album: "Slim shady", - writer: "ST", - composer: "ST", - duration: 2222, - mediaImage: "https://www.example.com/example.jpg", - subtitle: "8 Mile", - description: "Rap", - lyric: "https://www.example.com/example.lrc", - previousAssetId: "121277", - nextAssetId: "121279", -}; -session.setAVMetadata(metadata).then(() => { - console.info(`SetAVMetadata successfully`); -}).catch((err) => { - console.info(`SetAVMetadata BusinessError: code: ${err.code}, message: ${err.message}`); -}); +currentAVSession.off('playNext'); ``` -### setAVMetadata10+ +### off('playPrevious')10+ -setAVMetadata(data: AVMetadata, callback: AsyncCallback\): void +off(type: 'playPrevious', callback?: () => void): void -Sets session metadata. This API uses an asynchronous callback to return the result. +Unsubscribes from playPrevious command events. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------- | ---- | ------------------------------------- | -| data | [AVMetadata](#avmetadata10) | Yes | Session metadata. | -| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object.| +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ---------------------------------------------------------------------------------------------------------------------------- | +| type | string | Yes | Event type, which is **'playPrevious'** in this case.| +| callback | callback: () => void | No | Callback used for unsubscription. If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** @@ -971,50 +3489,53 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -let metadata = { - assetId: "121278", - title: "lose yourself", - artist: "Eminem", - author: "ST", - album: "Slim shady", - writer: "ST", - composer: "ST", - duration: 2222, - mediaImage: "https://www.example.com/example.jpg", - subtitle: "8 Mile", - description: "Rap", - lyric: "https://www.example.com/example.lrc", - previousAssetId: "121277", - nextAssetId: "121279", -}; -session.setAVMetadata(metadata, function (err) { - if (err) { - console.info(`SetAVMetadata BusinessError: code: ${err.code}, message: ${err.message}`); - } else { - console.info(`SetAVMetadata successfully`); - } -}); +currentAVSession.off('playPrevious'); ``` -### setAVPlaybackState10+ +### off('fastForward')10+ -setAVPlaybackState(state: AVPlaybackState): Promise\ +off(type: 'fastForward', callback?: () => void): void -Sets information related to the session playback state. This API uses a promise to return the result. +Unsubscribes from fastForward command events. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name| Type | Mandatory| Description | -| ------ | ----------------------------------- | ---- | ---------------------------------------------- | -| data | [AVPlaybackState](#avplaybackstate10) | Yes | Information related to the session playback state.| +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ---------------------------------------------------------------------------------------------------------------------------- | +| type | string | Yes | Event type, which is **'fastForward'** in this case.| +| callback | callback: () => void | No | Callback used for unsubscription. If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | -**Return value** +**Error codes** -| Type | Description | -| -------------- | ----------------------------- | -| Promise\ | Promise used to return the result. If the setting is successful, no value is returned; otherwise, an error object is returned.| +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.off('fastForward'); +``` + +### off('rewind')10+ + +off(type: 'rewind', callback?: () => void): void + +Unsubscribes from rewind command events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------- | ---- | ---------------------------------------------------------------------------------------------------------------------------- | +| type | string | Yes | Event type, which is **'rewind'** in this case.| +| callback | callback: () => void | No | Callback used for unsubscription. If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** @@ -1028,35 +3549,23 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -let playbackState = { - state:avSession.PlaybackState.PLAYBACK_STATE_PLAY, - speed: 1.0, - position:{elapsedTime:10, updateTime:(new Date()).getTime()}, - bufferedTime:1000, - loopMode:avSession.LoopMode.LOOP_MODE_SINGLE, - isFavorite:true, -}; -session.setAVPlaybackState(playbackState).then(() => { - console.info(`SetAVPlaybackState successfully`); -}).catch((err) => { - console.info(`SetAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`); -}); +currentAVSession.off('rewind'); ``` -### setAVPlaybackState10+ +### off('seek')10+ -setAVPlaybackState(state: AVPlaybackState, callback: AsyncCallback\): void +off(type: 'seek', callback?: (time: number) => void): void -Sets information related to the session playback state. This API uses an asynchronous callback to return the result. +Unsubscribes from seek command events. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ----------------------------------- | ---- | ---------------------------------------------- | -| data | [AVPlaybackState](#avplaybackstate10) | Yes | Information related to the session playback state.| -| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object. | +| Name | Type | Mandatory| Description | +| -------- | ---------------------- | ---- | ----------------------------------------- | +| type | string | Yes | Event type, which is **'seek'** in this case. | +| callback | (time: number) => void | No | Callback used for unsubscription. The **time** parameter in the callback indicates the time to seek to, in milliseconds.
If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** @@ -1070,42 +3579,53 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -let PlaybackState = { - state:avSession.PlaybackState.PLAYBACK_STATE_PLAY, - speed: 1.0, - position:{elapsedTime:10, updateTime:(new Date()).getTime()}, - bufferedTime:1000, - loopMode:avSession.LoopMode.LOOP_MODE_SINGLE, - isFavorite:true, -}; -session.setAVPlaybackState(PlaybackState, function (err) { - if (err) { - console.info(`SetAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`); - } else { - console.info(`SetAVPlaybackState successfully`); - } -}); +currentAVSession.off('seek'); ``` -### setAVQueueItems10+ +### off('setSpeed')10+ -setAVQueueItems(items: Array\): Promise\ +off(type: 'setSpeed', callback?: (speed: number) => void): void -Sets a playlist. This API uses a promise to return the result. +Unsubscribes from setSpeed command events. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| ------ | ------------------------------------ | ---- | ---------------------------------- | -| items | Array<[AVQueueItem](#avqueueitem10)\> | Yes | Playlist to set.| +| Name | Type | Mandatory| Description | +| -------- | ----------------------- | ---- | -------------------------------------------| +| type | string | Yes | Event type, which is **'setSpeed'** in this case. | +| callback | (speed: number) => void | No | Callback used for unsubscription. The **speed** parameter in the callback indicates the playback speed.
If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | -**Return value** +**Error codes** -| Type | Description | -| -------------- | ----------------------------- | -| Promise\ | Promise used to return the result. If the setting is successful, no value is returned; otherwise, an error object is returned.| +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.off('setSpeed'); +``` + +### off('setLoopMode')10+ + +off(type: 'setLoopMode', callback?: (mode: LoopMode) => void): void + +Unsubscribes from setSpeed command events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ----- | +| type | string | Yes | Event type, which is **'setLoopMode'** in this case.| +| callback | (mode: [LoopMode](#loopmode10)) => void | No | Callback used for unsubscription. The **mode** parameter in the callback indicates the loop mode.
If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session.| **Error codes** @@ -1119,60 +3639,53 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -import image from '@ohos.multimedia.image'; -import resourceManager from '@ohos.resourceManager'; +currentAVSession.off('setLoopMode'); +``` -let value : Uint8Array = await resourceManager.getRawFile('IMAGE_URI'); -let imageSource : imageImageSource = image.createImageSource(value.buffer); -let imagePixel : image.PixelMap = await imageSource.createPixelMap({desiredSize:{width: 150, height: 150}}); -let queueItemDescription_1 = { - mediaId: '001', - title: 'music_name', - subtitle: 'music_sub_name', - description: 'music_description', - icon : imagePixel, - iconUri: 'http://www.icon.uri.com', - extras: {'extras':'any'} -}; -let queueItem_1 = { - itemId: 1, - description: queueItemDescription_1 -}; -let queueItemDescription_2 = { - mediaId: '002', - title: 'music_name', - subtitle: 'music_sub_name', - description: 'music_description', - icon: imagePixel, - iconUri: 'http://www.xxx.com', - extras: {'extras':'any'} -}; -let queueItem_2 = { - itemId: 2, - description: queueItemDescription_2 -}; -let queueItemsArray = [queueItem_1, queueItem_2]; -session.setAVQueueItems(queueItemsArray).then(() => { - console.info(`SetAVQueueItems successfully`); -}).catch((err) => { - console.info(`SetAVQueueItems BusinessError: code: ${err.code}, message: ${err.message}`); -}); +### off('toggleFavorite')10+ + +off(type: 'toggleFavorite', callback?: (assetId: string) => void): void + +Unsubscribes from toggleFavorite command events. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------- | ---- | -------------------------------------------------------- | +| type | string | Yes | Event type, which is **'toggleFavorite'** in this case. | +| callback | (assetId: string) => void | No | Callback used for unsubscription. The **assetId** parameter in the callback indicates the media asset ID.
If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------------------------------- | +| 6600101 | Session service exception. | +| 6600102 | The session does not exist. | + +**Example** + +```js +currentAVSession.off('toggleFavorite'); ``` -### setAVQueueItems10+ +### off('skipToQueueItem')10+ -setAVQueueItems(items: Array\, callback: AsyncCallback\): void +off(type: 'skipToQueueItem', callback?: (itemId: number) => void): void -Sets a playlist. This API uses an asynchronous callback to return the result. +Unsubscribes from the event that indicates an item in the playlist is selected. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------ | ---- | ----------------------------------------------------------- | -| items | Array<[AVQueueItem](#avqueueitem10)\> | Yes | Playlist to set. | -| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object.| +| Name | Type | Mandatory| Description | +| -------- | ------------------------ | ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| type | string | Yes | Event type, which is **'skipToQueueItem'** in this case. | +| callback | (itemId: number) => void | No | Callback used for unsubscription. The **itemId** parameter in the callback indicates the ID of the item.
If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session.| **Error codes** @@ -1186,67 +3699,23 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -import image from '@ohos.multimedia.image'; -import resourceManager from '@ohos.resourceManager'; - -let value : Uint8Array = await resourceManager.getRawFile('IMAGE_URI'); -let imageSource : imageImageSource = image.createImageSource(value.buffer); -let imagePixel : image.PixelMap = await imageSource.createPixelMap({desiredSize:{width: 150, height: 150}}); -let queueItemDescription_1 = { - mediaId: '001', - title: 'music_name', - subtitle: 'music_sub_name', - description: 'music_description', - icon: imagePixel, - iconUri: 'http://www.icon.uri.com', - extras: {'extras':'any'} -}; -let queueItem_1 = { - itemId: 1, - description: queueItemDescription_1 -}; -let queueItemDescription_2 = { - mediaId: '002', - title: 'music_name', - subtitle: 'music_sub_name', - description: 'music_description', - icon: imagePixel, - iconUri: 'http://www.icon.uri.com', - extras: {'extras':'any'} -}; -let queueItem_2 = { - itemId: 2, - description: queueItemDescription_2 -}; -let queueItemsArray = [queueItem_1, queueItem_2]; -session.setAVQueueItems(queueItemsArray, function (err) { - if (err) { - console.info(`SetAVQueueItems BusinessError: code: ${err.code}, message: ${err.message}`); - } else { - console.info(`SetAVQueueItems successfully`); - } -}); +currentAVSession.off('skipToQueueItem'); ``` -### setAVQueueTitle10+ +### off('handleKeyEvent')10+ -setAVQueueTitle(title: string): Promise\ +off(type: 'handleKeyEvent', callback?: (event: KeyEvent) => void): void -Sets a name for the playlist. This API uses a promise to return the result. +Unsubscribes from key events. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| ------ | ------ | ---- | -------------- | -| title | string | Yes | Name of the playlist.| - -**Return value** - -| Type | Description | -| -------------- | ----------------------------- | -| Promise\ | Promise used to return the result. If the setting is successful, no value is returned; otherwise, an error object is returned.| +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type, which is **'handleKeyEvent'** in this case. | +| callback | (event: [KeyEvent](js-apis-keyevent.md)) => void | No | Callback used for unsubscription. The **event** parameter in the callback indicates the key event.
If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** @@ -1260,28 +3729,23 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -let queueTitle = 'QUEUE_TITLE'; -session.setAVQueueTitle(queueTitle).then(() => { - console.info(`SetAVQueueTitle successfully`); -}).catch((err) => { - console.info(`SetAVQueueTitle BusinessError: code: ${err.code}, message: ${err.message}`); -}); +currentAVSession.off('handleKeyEvent'); ``` -### setAVQueueTitle10+ +### off('outputDeviceChange')10+ -setAVQueueTitle(title: string, callback: AsyncCallback\): void +off(type: 'outputDeviceChange', callback?: (state: ConnectionState, device: OutputDeviceInfo) => void): void -Sets a name for the playlist. This API uses an asynchronous callback to return the result. +Unsubscribes from playback device change events. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | --------------------- | ---- | ----------------------------------------------------------- | -| title | string | Yes | Name of the playlist. | -| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object.| +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------- | ---- | ------------------------------------------------------ | +| type | string | Yes | Event type, which is **'outputDeviceChange'** in this case. | +| callback | (state: [ConnectionState](#connectionstate10), device: [OutputDeviceInfo](#outputdeviceinfo10)) => void | No | Callback used for unsubscription. The **device** parameter in the callback indicates the output device information.
If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** @@ -1295,101 +3759,53 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -let queueTitle = 'QUEUE_TITLE'; -session.setAVQueueTitle(queueTitle, function (err) { - if (err) { - console.info(`SetAVQueueTitle BusinessError: code: ${err.code}, message: ${err.message}`); - } else { - console.info(`SetAVQueueTitle successfully`); - } -}); +currentAVSession.off('outputDeviceChange'); ``` -### setLaunchAbility10+ -setLaunchAbility(ability: WantAgent): Promise\ +### off('commonCommand')10+ -Sets a launcher ability. This API uses a promise to return the result. +off(type: 'commonCommand', callback?: (command: string, args: {[key:string]: Object}) => void): void + +Unsubscribes from custom control command change events. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| ------- | --------------------------------------------- | ---- | ----------------------------------------------------------- | -| ability | [WantAgent](js-apis-app-ability-wantAgent.md) | Yes | Application attributes, such as the bundle name, ability name, and deviceID.| - -**Return value** - -| Type | Description | -| -------------- | ----------------------------- | -| Promise\ | Promise used to return the result. If the setting is successful, no value is returned; otherwise, an error object is returned.| +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- | +| type | string | Yes | Event type, which is **'commonCommand'** in this case. | +| callback | (command: string, args: {[key:string]: Object}) => void | No | Callback used for unsubscription. The **command** parameter in the callback indicates the name of the changed custom control command, and **args** indicates the parameters carried in the command.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ---------------------------------------- | +| -------- | ---------------- | | 6600101 | Session service exception. | | 6600102 | The session does not exist. | **Example** ```js -import wantAgent from '@ohos.app.ability.wantAgent'; - -// WantAgentInfo object -let wantAgentInfo = { - wants: [ - { - deviceId: "deviceId", - bundleName: "com.example.myapplication", - abilityName: "EntryAbility", - action: "action1", - entities: ["entity1"], - type: "MIMETYPE", - uri: "key={true,true,false}", - parameters: - { - mykey0: 2222, - mykey1: [1, 2, 3], - mykey2: "[1, 2, 3]", - mykey3: "ssssssssssssssssssssssssss", - mykey4: [false, true, false], - mykey5: ["qqqqq", "wwwwww", "aaaaaaaaaaaaaaaaa"], - mykey6: true, - } - } - ], - operationType: wantAgent.OperationType.START_ABILITIES, - requestCode: 0, - wantAgentFlags:[wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] -} - -wantAgent.getWantAgent(wantAgentInfo).then((agent) => { - session.setLaunchAbility(agent).then(() => { - console.info(`SetLaunchAbility successfully`); - }).catch((err) => { - console.info(`SetLaunchAbility BusinessError: code: ${err.code}, message: ${err.message}`); - }); -}); +currentAVSession.off('commonCommand'); ``` -### setLaunchAbility10+ +### stopCasting10+ -setLaunchAbility(ability: WantAgent, callback: AsyncCallback\): void +stopCasting(callback: AsyncCallback\): void -Sets a launcher ability. This API uses an asynchronous callback to return the result. +Stops castings. This API uses an asynchronous callback to return the result. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** -| Name | Type | Mandatory| Description | -| -------- | --------------------------------------------- | ---- | ------------------------------------------------------------ | -| ability | [WantAgent](js-apis-app-ability-wantAgent.md) | Yes | Application attributes, such as the bundle name, ability name, and deviceID. | -| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object.| +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ------------------------------------- | +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the command is sent, **err** is **undefined**; otherwise, **err** is an error object.| **Error codes** @@ -1397,77 +3813,33 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +| 6600109 | The remote connection is not established. | **Example** ```js -import wantAgent from '@ohos.app.ability.wantAgent'; - -// WantAgentInfo object -let wantAgentInfo = { - wants: [ - { - deviceId: "deviceId", - bundleName: "com.example.myapplication", - abilityName: "EntryAbility", - action: "action1", - entities: ["entity1"], - type: "MIMETYPE", - uri: "key={true,true,false}", - parameters: - { - mykey0: 2222, - mykey1: [1, 2, 3], - mykey2: "[1, 2, 3]", - mykey3: "ssssssssssssssssssssssssss", - mykey4: [false, true, false], - mykey5: ["qqqqq", "wwwwww", "aaaaaaaaaaaaaaaaa"], - mykey6: true, - } - } - ], - operationType: wantAgent.OperationType.START_ABILITIES, - requestCode: 0, - wantAgentFlags:[wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] -} - -wantAgent.getWantAgent(wantAgentInfo).then((agent) => { - session.setLaunchAbility(agent, function (err) { - if (err) { - console.info(`SetLaunchAbility BusinessError: code: ${err.code}, message: ${err.message}`); - } else { - console.info(`SetLaunchAbility successfully`); - } - }); +currentAVSession.stopCasting(function (err) { + if (err) { + console.info(`stopCasting BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`stopCasting successfully`); + } }); ``` -### dispatchSessionEvent10+ - -dispatchSessionEvent(event: string, args: {[key: string]: Object}): Promise\ - -Dispatches a custom event in the session, including the event name and event content in key-value pair format. This API uses a promise to return the result. It is called by the provider. - -**System capability**: SystemCapability.Multimedia.AVSession.Core +### stopCasting10+ -**Parameters** +stopCasting(): Promise\ -| Name | Type | Mandatory| Description | -| ------- | --------------------------------------------- | ---- | ----------------------------------------------------------- | -| event | string | Yes | Name of the session event.| -| args | {[key: string]: any} | Yes | Event content in key-value pair format.| +Stops castings. This API uses a promise to return the result. -> **NOTE** -> -> The **args** parameter supports the following data types: string, number, Boolean, object, array, and file descriptor. For details, see [@ohos.app.ability.Want(Want)](./js-apis-app-ability-want.md). +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Return value** | Type | Description | | -------------- | ----------------------------- | -| Promise\ | Promise used to return the result. If the setting is successful, no value is returned; otherwise, an error object is returned.| +| Promise\ | Promise used to return the result. If casting stops, no value is returned; otherwise, an error object is returned.| **Error codes** @@ -1475,87 +3847,69 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +| 6600109 | The remote connection is not established. | **Example** ```js -let eventName = "dynamic_lyric"; -let args = { - lyric : "This is lyric" -} -await session.dispatchSessionEvent(eventName, args).catch((err) => { - console.info(`dispatchSessionEvent BusinessError: code: ${err.code}, message: ${err.message}`); -}) +currentAVSession.stopCasting().then(() => { + console.info(`stopCasting successfully`); +}).catch((err) => { + console.info(`stopCasting BusinessError: code: ${err.code}, message: ${err.message}`); +}); ``` -### dispatchSessionEvent10+ - -dispatchSessionEvent(event: string, args: {[key: string]: Object}, callback: AsyncCallback\): void - -Dispatches a custom event in the session, including the event name and event content in key-value pair format. This API uses an asynchronous callback to return the result. It is called by the provider. - -**System capability**: SystemCapability.Multimedia.AVSession.Core - -**Parameters** +## AVCastControlCommandType10+ -| Name | Type | Mandatory| Description | -| ------- | --------------------------------------------- | ---- | ----------------------------------------------------------- | -| event | string | Yes | Name of the session event.| -| args | {[key: string]: any} | Yes | Event content in key-value pair format.| -| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object.| +Enumerates the commands that can be sent by a cast controller. -> **NOTE** -> -> The **args** parameter supports the following data types: string, number, Boolean, object, array, and file descriptor. For details, see [@ohos.app.ability.Want(Want)](./js-apis-app-ability-want.md). +**System capability**: SystemCapability.Multimedia.AVSession.AVCast -**Error codes** +| Name | Type | Description | +| -------------- | ------ | ------------ | +| play | string | Play the media. | +| pause | string | Pause the playback. | +| stop | string | Stop the playback. | +| playNext | string | Play the next media asset. | +| playPrevious | string | Play the previous media asset. | +| fastForward | string | Fast-forward. | +| rewind | string | Rewind. | +| seek | numbder | Seek to a playback position.| +| setSpeed | number | Set the playback speed.| +| setLoopMode | string | Set the loop mode.| +| toggleFavorite | string | Favorite the media asset. | +| setVolume | number | Set the volume. | -For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). +## AVCastControlCommand10+ -| ID| Error Message| -| -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +Defines the command that can be sent by a cast controller. -**Example** +**System capability**: SystemCapability.Multimedia.AVSession.AVCast -```js -let eventName = "dynamic_lyric"; -let args = { - lyric : "This is lyric" -} -await session.dispatchSessionEvent(eventName, args, (err) => { - if(err) { - console.info(`dispatchSessionEvent BusinessError: code: ${err.code}, message: ${err.message}`); - } -}) -``` +| Name | Type | Mandatory| Description | +| --------- | ------------------------------------------------- | ---- | -------------- | +| command | [AVCastControlCommandType](#avcastcontrolcommandtype10) | Yes | Command. | +| parameter | [LoopMode](#loopmode10) | string | number | No | Parameters carried in the command.| -### setExtras10+ +## AVCastController10+ -setExtras(extras: {[key: string]: Object}): Promise\ +After a casting connection is set up, you can call [avSession.getAVCastController](#getavcastcontroller10) to obtain the cast controller. Through the controller, you can query the session ID, send commands and events to a session, and obtain session metadata and playback state information. -Sets a custom media packet in the form of key-value pairs. This API uses a promise to return the result. It is called by the provider. +### setDisplaySurface10+ -**System capability**: SystemCapability.Multimedia.AVSession.Core +setDisplaySurface(surfaceId: string): Promise\ -**Parameters** +Sets the surface ID for playback, which is used at the cast receiver (sink). This API uses a promise to return the result. -| Name | Type | Mandatory| Description | -| ------- | --------------------------------------------- | ---- | ----------------------------------------------------------- | -| extras | {[key: string]: Object} | Yes | Key-value pairs of the custom media packet.| +**System capability**: SystemCapability.Multimedia.AVSession.AVCast -> **NOTE** -> -> The **extras** parameter supports the following data types: string, number, Boolean, object, array, and file descriptor. For details, see [@ohos.app.ability.Want(Want)](./js-apis-app-ability-want.md). +**System API**: This is a system API. **Return value** -| Type | Description | -| -------------- | ----------------------------- | -| Promise\ | Promise used to return the result. If the setting is successful, no value is returned; otherwise, an error object is returned.| +| Type | Description | +| --------------------------------------------- | --------------------------- | +| Promise\ | Promise used to return the result.| **Error codes** @@ -1563,38 +3917,30 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +| 6600109 | The remote connection is not established. | **Example** - ```js -let extras = { - extras : "This is custom media packet" -} -await session.setExtras(extras).catch((err) => { - console.info(`setExtras BusinessError: code: ${err.code}, message: ${err.message}`); -}) +aVCastController.setDisplaySurface().then(() => { + console.info(`setDisplaySurface : SUCCESS :`); +}); ``` -### setExtras10+ +### setDisplaySurface10+ -setExtras(extras: {[key: string]: Object}, callback: AsyncCallback\): void +setDisplaySurface(surfaceId: string, callback: AsyncCallback\): void -Sets a custom media packet in the form of key-value pairs. This API uses an asynchronous callback to return the result. It is called by the provider. +Sets the surface ID for playback, which is used at the cast receiver (sink). This API uses an asynchronous callback to return the result. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast -**Parameters** +**System API**: This is a system API. -| Name | Type | Mandatory| Description | -| ------- | --------------------------------------------- | ---- | ----------------------------------------------------------- | -| extras | {[key: string]: any} | Yes | Key-value pairs of the custom media packet.| -| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object.| +**Parameters** -> **NOTE** -> -> The **extras** parameter supports the following data types: string, number, Boolean, object, array, and file descriptor. For details, see [@ohos.app.ability.Want(Want)](./js-apis-app-ability-want.md). +| Name | Type | Mandatory| Description | +| -------- | --------------------------------------------------- | ---- | ---------------------------- | +| callback | AsyncCallback\ | Yes | Callback used to return the result.| **Error codes** @@ -1602,35 +3948,32 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +| 6600109 | The remote connection is not established. | **Example** - ```js -let extras = { - extras : "This is custom media packet" -} -await session.setExtras(extras, (err) => { - if(err) { - console.info(`setExtras BusinessError: code: ${err.code}, message: ${err.message}`); +aVCastController.setDisplaySurface(function (err, value) { + if (err) { + console.info(`setDisplaySurface BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`setDisplaySurface : SUCCESS : state : ${value}`); } -}) +}); ``` -### getController10+ +### getAVPlaybackState10+ -getController(): Promise\ +getAVPlaybackState(callback: AsyncCallback\): void -Obtains the controller corresponding to this session. This API uses a promise to return the result. +Obtains the remote playback state. This API uses an asynchronous callback to return the result. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast -**Return value** +**Parameters** -| Type | Description | -| ---------------------------------------------------- | ----------------------------- | -| Promise<[AVSessionController](#avsessioncontroller10)> | Promise used to return the session controller.| +| Name | Type | Mandatory| Description | +| --------- | ----------------------------------------------------------- | ---- | ------------------------------------------------------------ | +| callback | AsyncCallback<[[AVPlaybackState](#avplaybackstate10)\> | Yes | Callback used to return the remote playback state.| **Error codes** @@ -1638,34 +3981,33 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +| 6600101 | Session service exception | **Example** ```js -let controller; -session.getController().then((avcontroller) => { - controller = avcontroller; - console.info(`GetController : SUCCESS : sessionid : ${controller.sessionId}`); -}).catch((err) => { - console.info(`GetController BusinessError: code: ${err.code}, message: ${err.message}`); +aVCastController.getAVPlaybackState(function (err, state) { + if (err) { + console.error(`getAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`getAVPlaybackState : SUCCESS`); + } }); ``` -### getController10+ +### getAVPlaybackState10+ -getController(callback: AsyncCallback\): void +getAVPlaybackState(): Promise\; -Obtains the controller corresponding to this session. This API uses an asynchronous callback to return the result. +Obtains the remote playback state. This API uses a promise to return the result. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast -**Parameters** +**Return value** -| Name | Type | Mandatory| Description | -| -------- | ----------------------------------------------------------- | ---- | -------------------------- | -| callback | AsyncCallback<[AVSessionController](#avsessioncontroller10)\> | Yes | Callback used to return the session controller.| +| Type | Description | +| --------- | ------------------------------------------------------------ | +| Promise<[AVPlaybackState](#avplaybackstate10)\> | Promise used to return the remote playback state.| **Error codes** @@ -1673,36 +4015,38 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +| 6600101 | Session service exception | **Example** ```js -let controller; -session.getController(function (err, avcontroller) { - if (err) { - console.info(`GetController BusinessError: code: ${err.code}, message: ${err.message}`); - } else { - controller = avcontroller; - console.info(`GetController : SUCCESS : sessionid : ${controller.sessionId}`); - } +aVCastController.getAVPlaybackState().then((state) => { + console.info(`getAVPlaybackState : SUCCESS :`); +}).catch((err) => { + console.error(`getAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` -### getOutputDevice10+ +### sendControlCommand10+ -getOutputDevice(): Promise\ +sendControlCommand(command: AVCastControlCommand): Promise\ -Obtains information about the output device for this session. This API uses a promise to return the result. +Sends a control command to the session through the controller. This API uses a promise to return the result. -**System capability**: SystemCapability.Multimedia.AVSession.Core + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast + +**Parameters** + +| Name | Type | Mandatory| Description | +| ------- | ------------------------------------- | ---- | ------------------------------ | +| command | [AVCastControlCommand](#avcastcontrolcommand10) | Yes | Command to send.| **Return value** -| Type | Description | -| ---------------------------------------------- | --------------------------------- | -| Promise<[OutputDeviceInfo](#outputdeviceinfo10)> | Promise used to return the output device information.| +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the command is sent, no value is returned; otherwise, an error object is returned.| **Error codes** @@ -1711,66 +4055,87 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +| 6600105 | Invalid session command. | +| 6600109 | The remote connection is not established. | **Example** ```js -session.getOutputDevice().then((outputDeviceInfo) => { - console.info(`GetOutputDevice : SUCCESS : isRemote : ${outputDeviceInfo.isRemote}`); +let avCommand = {command:'play'}; +// let avCommand = {command:'pause'}; +// let avCommand = {command:'stop'}; +// let avCommand = {command:'playNext'}; +// let avCommand = {command:'playPrevious'}; +// let avCommand = {command:'fastForward'}; +// let avCommand = {command:'rewind'}; +// let avCommand = {command:'seek', parameter:10}; +aVCastController.sendControlCommand(avCommand).then(() => { + console.info(`SendControlCommand successfully`); }).catch((err) => { - console.info(`GetOutputDevice BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`SendControlCommand BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` -### getOutputDevice10+ +### sendControlCommand10+ -getOutputDevice(callback: AsyncCallback\): void +sendControlCommand(command: AVCastControlCommand, callback: AsyncCallback\): void -Obtains information about the output device for this session. This API uses an asynchronous callback to return the result. +Sends a control command to the session through the controller. This API uses an asynchronous callback to return the result. -**System capability**: SystemCapability.Multimedia.AVSession.Core + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ----------------------------------------------------- | ---- | ------------------------------ | -| callback | AsyncCallback<[OutputDeviceInfo](#outputdeviceinfo10)\> | Yes | Callback used to return the information obtained.| +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ------------------------------ | +| command | [AVCastControlCommand](#avcastcontrolcommand10) | Yes | Command to send.| +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the command is sent, **err** is **undefined**; otherwise, **err** is an error object. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ---------------------------------------- | +| -------- | ------------------------------- | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +| 6600105 | Invalid session command. | +| 6600109 | The remote connection is not established. | **Example** ```js -session.getOutputDevice(function (err, outputDeviceInfo) { +let avCommand = {command:'play'}; +// let avCommand = {command:'pause'}; +// let avCommand = {command:'stop'}; +// let avCommand = {command:'playNext'}; +// let avCommand = {command:'playPrevious'}; +// let avCommand = {command:'fastForward'}; +// let avCommand = {command:'rewind'}; +// let avCommand = {command:'seek', parameter:10}; +aVCastController.sendControlCommand(avCommand, function (err) { if (err) { - console.info(`GetOutputDevice BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`SendControlCommand BusinessError: code: ${err.code}, message: ${err.message}`); } else { - console.info(`GetOutputDevice : SUCCESS : isRemote : ${outputDeviceInfo.isRemote}`); + console.info(`SendControlCommand successfully`); } }); ``` -### activate10+ +### prepare10+ -activate(): Promise\ +prepare(item: AVQueueItem, callback: AsyncCallback\): void -Activates this session. A session can be used only after being activated. This API uses a promise to return the result. +Prepares for the playback of a media asset. This API uses an asynchronous callback to return the result. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast -**Return value** +**Parameters** -| Type | Description | -| -------------- | ----------------------------- | -| Promise\ | Promise used to return the result. If the session is activated, no value is returned; otherwise, an error object is returned.| +| Name | Type | Mandatory| Description | +| ------- | ------------------------------------- | ---- | ------------------------------ | +| item | [AVQueueItem](#avqueueitem10) | Yes | Attributes of an item in the playlist.| +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the command is sent, **err** is **undefined**; otherwise, **err** is an error object. **Error codes** @@ -1779,31 +4144,56 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | **Example** ```js -session.activate().then(() => { - console.info(`Activate : SUCCESS `); -}).catch((err) => { - console.info(`Activate BusinessError: code: ${err.code}, message: ${err.message}`); +// Set playback parameters. +var playItem = { + itemId: 0, + description: { + mediaId: '12345', + mediaName: 'song1', + 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", + iconUri: "http://resource1_icon_address", + appName: 'MyMusic' + } +}; +// Prepare for playback. This operation triggers loading and buffering, but not the actual playback. +aVCastController.prepare(playItem, () => { + console.info('prepare done'); }); ``` -### activate10+ -activate(callback: AsyncCallback\): void +### prepare10+ -Activates this session. A session can be used only after being activated. This API uses an asynchronous callback to return the result. +prepare(item: AVQueueItem): Promise\ -**System capability**: SystemCapability.Multimedia.AVSession.Core +Prepares for the playback of a media asset. This API uses a promise to return the result. + + +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** -| Name | Type | Mandatory| Description | -| -------- | -------------------- | ---- | ---------- | -| callback | AsyncCallback\ | Yes | Callback used to return the result. If the session is activated, **err** is **undefined**; otherwise, **err** is an error object.| +| Name | Type | Mandatory| Description | +| ------- | ------------------------------------- | ---- | ------------------------------ | +| item | [AVQueueItem](#avqueueitem10) | Yes | Attributes of an item in the playlist.| + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the command is sent, no value is returned; otherwise, an error object is returned.| **Error codes** @@ -1812,33 +4202,50 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | + **Example** ```js -session.activate(function (err) { - if (err) { - console.info(`Activate BusinessError: code: ${err.code}, message: ${err.message}`); - } else { - console.info(`Activate : SUCCESS `); +// Set playback parameters. +var playItem = { + itemId: 0, + description: { + mediaId: '12345', + mediaName: 'song1', + 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", + iconUri: "http://resource1_icon_address", + appName: 'MyMusic' } +}; +// Prepare for playback. This operation triggers loading and buffering, but not the actual playback. +aVCastController.prepare(playItem, () => { + console.info('prepare done'); }); ``` -### deactivate10+ +### start10+ -deactivate(): Promise\ +start(item: AVQueueItem, callback: AsyncCallback\): void -Deactivates this session. You can use [activate](#activate10) to activate the session again. This API uses a promise to return the result. +Prepares for the playback of a media asset. This API uses an asynchronous callback to return the result. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast -**Return value** +**Parameters** -| Type | Description | -| -------------- | ----------------------------- | -| Promise\ | Promise used to return the result. If the session is deactivated, no value is returned; otherwise, an error object is returned.| +| Name | Type | Mandatory| Description | +| ------- | ------------------------------------- | ---- | ------------------------------ | +| item | [AVQueueItem](#avqueueitem10) | Yes | Attributes of an item in the playlist.| +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the command is sent, **err** is **undefined**; otherwise, **err** is an error object. **Error codes** @@ -1847,33 +4254,56 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | **Example** ```js -session.deactivate().then(() => { - console.info(`Deactivate : SUCCESS `); -}).catch((err) => { - console.info(`Deactivate BusinessError: code: ${err.code}, message: ${err.message}`); +// Set playback parameters. +var playItem = { +itemId: 0, +description: { + mediaId: '12345', + mediaName: 'song1', + 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", + iconUri: "http://resource1_icon_address", + appName: 'MyMusic' +} +}; + +// Start playback. +aVCastController.start(playItem, () => { + console.info('play done'); }); ``` -### deactivate10+ +### start10+ -deactivate(callback: AsyncCallback\): void +start(item: AVQueueItem): Promise\ -Deactivates this session. This API uses an asynchronous callback to return the result. +Prepares for the playback of a media asset. This API uses a promise to return the result. -Deactivates this session. You can use [activate](#activate10) to activate the session again. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** -| Name | Type | Mandatory| Description | -| -------- | -------------------- | ---- | ---------- | -| callback | AsyncCallback\ | Yes | Callback used to return the result. If the session is deactivated, **err** is **undefined**; otherwise, **err** is an error object.| +| Name | Type | Mandatory| Description | +| ------- | ------------------------------------- | ---- | ------------------------------ | +| item | [AVQueueItem](#avqueueitem10) | Yes | Attributes of an item in the playlist.| + +**Return value** + +| Type | Description | +| -------------- | ----------------------------- | +| Promise\ | Promise used to return the result. If the command is sent, no value is returned; otherwise, an error object is returned.| **Error codes** @@ -1882,33 +4312,51 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | + **Example** ```js -session.deactivate(function (err) { - if (err) { - console.info(`Deactivate BusinessError: code: ${err.code}, message: ${err.message}`); - } else { - console.info(`Deactivate : SUCCESS `); - } +// Set playback parameters. +var playItem = { +itemId: 0, +description: { + mediaId: '12345', + mediaName: 'song1', + 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", + iconUri: "http://resource1_icon_address", + appName: 'MyMusic' +} +}; +// Start playback. +aVCastController.start(playItem).then(() => { + console.info(`start successfully`); +}).catch((err) => { + console.info(`start BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` -### destroy10+ +### getCurrentItem10+ -destroy(): Promise\ +getCurrentItem(callback: AsyncCallback\): void -Destroys this session. This API uses a promise to return the result. +Obtains the information about the media asset that is being played. This API uses an asynchronous callback to return the result. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast -**Return value** +**Parameters** -| Type | Description | -| -------------- | ----------------------------- | -| Promise\ | Promise used to return the result. If the session is destroyed, no value is returned; otherwise, an error object is returned.| +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------- | ---- | ------------------------------------- | +| callback | AsyncCallback\<[AVQueueItem](#avqueueitem10)> | Yes | Callback used to return the result. If the command is sent, **err** is **undefined**; otherwise, **err** is an error object.| **Error codes** @@ -1917,31 +4365,32 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | **Example** ```js -session.destroy().then(() => { - console.info(`Destroy : SUCCESS `); -}).catch((err) => { - console.info(`Destroy BusinessError: code: ${err.code}, message: ${err.message}`); +aVCastController.getCurrentItem(function (err, value) { + if (err) { + console.error(`getCurrentItem BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`getCurrentItem successfully`); + } }); ``` -### destroy10+ +### getCurrentItem10+ -destroy(callback: AsyncCallback\): void +getCurrentItem(): Promise\ -Destroys this session. This API uses an asynchronous callback to return the result. +Obtains the information about the media asset that is being played. This API uses a promise to return the result. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast -**Parameters** +**Return value** -| Name | Type | Mandatory| Description | -| -------- | -------------------- | ---- | ---------- | -| callback | AsyncCallback\ | Yes | Callback used to return the result. If the session is destroyed, **err** is **undefined**; otherwise, **err** is an error object.| +| Type | Description | +| -------------- | ----------------------------- | +| Promise\<[AVQueueItem](#avqueueitem10)> | Promise used to return the media asset obtained. If the operation fails, an error object is returned.| **Error codes** @@ -1950,308 +4399,274 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | **Example** ```js -session.destroy(function (err) { - if (err) { - console.info(`Destroy BusinessError: code: ${err.code}, message: ${err.message}`); - } else { - console.info(`Destroy : SUCCESS `); - } +aVCastController.getCurrentItem().then((AVQueueItem) => { + console.info(`getCurrentItem successfully`); +}).catch((err) => { + console.error(`getCurrentItem BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` -### on('play'|'pause'|'stop'|'playNext'|'playPrevious'|'fastForward'|'rewind')10+ +### on('playbackStateChange')10+ -on(type: 'play'|'pause'|'stop'|'playNext'|'playPrevious'|'fastForward'|'rewind', callback: () => void): void +on(type: 'playbackStateChange', filter: Array\ | 'all', callback: (state: AVPlaybackState) => void): void -Subscribes to playback command events. +Subscribes to playback state change events. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** -| Name | Type | Mandatory| Description | -| -------- | -------------------- | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The following events are supported: **'play'**, **'pause'**, **'stop'**, **'playNext'**, **'playPrevious'**, **'fastForward'**, and **'rewind'**.
The event is reported when the corresponding playback command is sent to the session.| -| callback | callback: () => void | Yes | Callback used for subscription. If the subscription is successful, **err** is **undefined**; otherwise, **err** is an error object. | +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'playbackStateChange'** is triggered when the playback state changes.| +| filter | Array\ | 'all' | Yes | The value **'all'** indicates that any playback state field change will trigger the event, and **Array** indicates that only changes to the listed playback state field will trigger the event.| +| callback | (state: [AVPlaybackState](#avplaybackstate10)) => void | Yes | Callback used for subscription. The **state** parameter in the callback indicates the changed playback state. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ---------------------------------------- | +| -------- | ------------------------------ | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | **Example** ```js -session.on('play', () => { - console.info(`on play entry`); -}); -session.on('pause', () => { - console.info(`on pause entry`); -}); -session.on('stop', () => { - console.info(`on stop entry`); -}); -session.on('playNext', () => { - console.info(`on playNext entry`); -}); -session.on('playPrevious', () => { - console.info(`on playPrevious entry`); -}); -session.on('fastForward', () => { - console.info(`on fastForward entry`); +aVCastController.on('playbackStateChange', 'all', (playbackState) => { + console.info(`on playbackStateChange state : ${playbackState.state}`); }); -session.on('rewind', () => { - console.info(`on rewind entry`); + +let playbackFilter = ['state', 'speed', 'loopMode']; +aVCastController.on('playbackStateChange', playbackFilter, (playbackState) => { + console.info(`on playbackStateChange state : ${playbackState.state}`); }); ``` -### on('seek')10+ +### off('playbackStateChange')10+ -on(type: 'seek', callback: (time: number) => void): void +off(type: 'playbackStateChange', callback?: (state: AVPlaybackState) => void): void -Subscribes to the seek event. +Unsubscribes from playback state change events. This API is called by the controller. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ---------------------- | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The event **'seek'** is reported when the seek command is sent to the session.| -| callback | (time: number) => void | Yes | Callback used for subscription. The **time** parameter in the callback indicates the time to seek to, in milliseconds. | +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- | +| type | string | Yes | Event type, which is **'playbackStateChange'** in this case. | +| callback | (state: [AVPlaybackState](#avplaybackstate10)) => void | No | Callback used for unsubscription. The **state** parameter in the callback indicates the changed playback state.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ---------------------------------------- | +| -------- | ---------------- | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | **Example** -The session does not exist + ```js -session.on('seek', (time) => { - console.info(`on seek entry time : ${time}`); -}); +aVCastController.off('playbackStateChange'); ``` -### on('setSpeed')10+ +### on('mediaItemChange')10+ -on(type: 'setSpeed', callback: (speed: number) => void): void +on(type: 'mediaItemChange', callback: Callback\): void -Subscribes to the event for setting the playback speed. +Subscribes to media asset change events. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ----------------------- | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The event **'setSpeed'** is reported when the command for setting the playback speed is sent to the session.| -| callback | (speed: number) => void | Yes | Callback used for subscription. The **speed** parameter in the callback indicates the playback speed. | +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'mediaItemChange'** is triggered when the media content being played changes.| +| callback | (state: [AVQueueItem](#avqueueitem10)) => void | Yes | Callback used for subscription. **AVQueueItem** is the media asset that is being played. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ---------------------------------------- | +| -------- | ------------------------------ | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | **Example** ```js -session.on('setSpeed', (speed) => { - console.info(`on setSpeed speed : ${speed}`); +aVCastController.on('mediaItemChange', (item) => { + console.info(`on mediaItemChange state : ${item.itemId}`); }); ``` -### on('setLoopMode')10+ +### off('mediaItemChange')10+ -on(type: 'setLoopMode', callback: (mode: LoopMode) => void): void +off(type: 'mediaItemChange'): void -Subscribes to the event for setting the loop mode. +Unsubscribes from media asset change events. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------- | ---- | ---- | -| type | string | Yes | Event type. The event **'setLoopMode'** is reported when the command for setting the loop mode is sent to the session.| -| callback | (mode: [LoopMode](#loopmode10)) => void | Yes | Callback used for subscription. The **mode** parameter in the callback indicates the loop mode. | +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- | +| type | string | Yes | Event type, which is **'mediaItemChange'** in this case. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ---------------------------------------- | +| -------- | ---------------- | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | **Example** ```js -session.on('setLoopMode', (mode) => { - console.info(`on setLoopMode mode : ${mode}`); -}); +aVCastController.off('mediaItemChange'); ``` -### on('toggleFavorite')10+ +### on('playNext')10+ -on(type: 'toggleFavorite', callback: (assetId: string) => void): void +on(type: 'playNext', callback: Callback\): void -Subscribes to the event for favoriting a media asset. +Subscribes to playNext command events. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------- | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The event **'toggleFavorite'** is reported when the command for favoriting the media asset is sent to the session.| -| callback | (assetId: string) => void | Yes | Callback used for subscription. The **assetId** parameter in the callback indicates the media asset ID. | +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'playNext'** is triggered when the command for playing the next item is received.| +| callback | Callback\ | Yes | Callback used to return the result. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ---------------------------------------- | +| -------- | ------------------------------ | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | **Example** ```js -session.on('toggleFavorite', (assetId) => { - console.info(`on toggleFavorite mode : ${assetId}`); +aVCastController.on('playNext', () => { + console.info(`on playNext`); }); ``` -### on('skipToQueueItem')10+ +### off('playNext')10+ -on(type: 'skipToQueueItem', callback: (itemId: number) => void): void +off(type: 'playNext'): void -Subscribes to the event that indicates an item in the playlist is selected. The session can play the selected item. +Unsubscribes from playNext command events. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------ | ---- | ---------------------------------------------------------------------------------------- | -| type | string | Yes | Event type. The event **'skipToQueueItem'** is reported when the command for selecting an item in the playlist is sent to the session.| -| callback | (itemId: number) => void | Yes | Callback used for subscription. The **itemId** parameter in the callback indicates the ID of the selected item. | +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- | +| type | string | Yes | Event type, which is **'playNext'** in this case. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ---------------------------------------- | +| -------- | ---------------- | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | **Example** ```js -session.on('skipToQueueItem', (itemId) => { - console.info(`on skipToQueueItem id : ${itemId}`); -}); +aVCastController.off('playNext'); ``` -### on('handleKeyEvent')10+ +### on('playPrevious')10+ -on(type: 'handleKeyEvent', callback: (event: KeyEvent) => void): void +on(type: 'playPrevious', callback: Callback\): void -Subscribes to the key event. +Subscribes to playPrevious command events. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** | Name | Type | Mandatory| Description | | -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The event **'handleKeyEvent'** is reported when a key event is sent to the session.| -| callback | (event: [KeyEvent](js-apis-keyevent.md)) => void | Yes | Callback used for subscription. The **event** parameter in the callback indicates the key event. | +| type | string | Yes | Event type. The event **'playPrevious'** is triggered when the command for playing the previous event is received.| +| callback | Callback\ | Yes | Callback used to return the result. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ---------------------------------------- | +| -------- | ------------------------------ | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | **Example** ```js -session.on('handleKeyEvent', (event) => { - console.info(`on handleKeyEvent event : ${event}`); +aVCastController.on('playPrevious', () => { + console.info(`on playPrevious`); }); ``` -### on('outputDeviceChange')10+ +### off('playPrevious')10+ -on(type: 'outputDeviceChange', callback: (device: OutputDeviceInfo) => void): void +off(type: 'playPrevious'): void -Subscribes to output device changes. +Unsubscribes from the playPrevious command event. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The event **'outputDeviceChange'** is reported when the output device changes.| -| callback | (device: [OutputDeviceInfo](#outputdeviceinfo10)) => void | Yes | Callback used for subscription. The **device** parameter in the callback indicates the output device information. | +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- | +| type | string | Yes | Event type, which is **'playPrevious'** in this case. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ---------------------------------------- | +| -------- | ---------------- | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | **Example** ```js -session.on('outputDeviceChange', (device) => { - console.info(`on outputDeviceChange device isRemote : ${device.isRemote}`); -}); +aVCastController.off('playPrevious'); ``` -### on('commonCommand')10+ +### on('seekDone')10+ -on(type: 'commonCommand', callback: (command: string, args: {[key: string]: Object}) => void): void +on(type: 'seekDone', callback: Callback\): void -Subscribes to custom control command changes. +Subscribes to seek done events. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** | Name | Type | Mandatory| Description | | -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The event **'commonCommand'** is reported when a custom control command changes.| -| callback | (commonCommand: string, args: {[key:string]: Object}) => void | Yes | Callback used for subscription. The **commonCommand** parameter in the callback indicates the name of the changed custom control command, and **args** indicates the parameters carried in the command. The parameters must be the same as those set in **sendCommand**. | +| type | string | Yes | Event type. The event **'seekDone'** is triggered when the seek operation is complete.| +| callback | Callback\ | Yes | Callback used to return the position after the seek operation. | **Error codes** @@ -2260,298 +4675,366 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ------------------------------ | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | **Example** ```js -session.on('commonCommand', (commonCommand, args) => { - console.info(`OnCommonCommand, the command is ${commonCommand}, args: ${JSON.stringify(args)}`); +aVCastController.on('seekDone', (pos) => { + console.info(`on seekDone pos: ${pos} `); }); ``` -### off('play'|'pause'|'stop'|'playNext'|'playPrevious'|'fastForward'|'rewind')10+ +### off('seekDone')10+ -off(type: 'play' | 'pause' | 'stop' | 'playNext' | 'playPrevious' | 'fastForward' | 'rewind', callback?: () => void): void +off(type: 'seekDone'): void -Unsubscribes from playback command events. +Unsubscribes from the seek done events. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** -| Name | Type | Mandatory| Description | -| -------- | -------------------- | ---- | ---------------------------------------------------------------------------------------------------------------------------- | -| type | string | Yes | Event type. The following events are supported: **'play'**, **'pause'**, **'stop'**, **'playNext'**, **'playPrevious'**, **'fastForward'**, and **'rewind'**.| -| callback | callback: () => void | No | Callback used for unsubscription. If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- | +| type | string | Yes | Event type, which is **'seekDone'** in this case. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ---------------------------------------- | +| -------- | ---------------- | | 6600101 | Session service exception. | -| 6600102 | The session does not exist. | **Example** ```js -session.off('play'); -session.off('pause'); -session.off('stop'); -session.off('playNext'); -session.off('playPrevious'); -session.off('fastForward'); -session.off('rewind'); +aVCastController.off('seekDone'); ``` -### off('seek')10+ - -off(type: 'seek', callback?: (time: number) => void): void - -Unsubscribes from the seek event. +### on('videoSizeChange')10+ -**System capability**: SystemCapability.Multimedia.AVSession.Core +on(type: 'videoSizeChange', callback: (width:number, height:number) => void): void -**Parameters** +Subscribes to video size change events. -| Name | Type | Mandatory| Description | -| -------- | ---------------------- | ---- | ----------------------------------------- | -| type | string | Yes | Event type. The value is fixed at **'seek'**. | -| callback | (time: number) => void | No | Callback used for unsubscription. The **time** parameter in the callback indicates the time to seek to, in milliseconds.
If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | +**System capability**: SystemCapability.Multimedia.AVSession.AVCast -**Error codes** +**System API**: This is a system API. -For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). +**Parameters** -| ID| Error Message| -| -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +| Parameter | Type | Mandatory | Description | +| type | string | Yes | Event type. The event **'videoSizeChange'** is triggered when the video size changes. | +| callback | (width:number, height:number) => void | Yes | Callback used to return the video width and height. | **Example** ```js -session.off('seek'); +aVCastController.on('videoSizeChange', (width, height) => { + console.info(`width : ${width} `); + console.info(`height: ${height} `); +}); ``` -### off('setSpeed')10+ - -off(type: 'setSpeed', callback?: (speed: number) => void): void - -Unsubscribes from the event for setting the playback speed. +### off('videoSizeChange')10+ -**System capability**: SystemCapability.Multimedia.AVSession.Core +off(type: 'videoSizeChange'): void -**Parameters** +Unsubscribes from video size changes. -| Name | Type | Mandatory| Description | -| -------- | ----------------------- | ---- | -------------------------------------------| -| type | string | Yes | Event type. The value is fixed at **'setSpeed'**. | -| callback | (speed: number) => void | No | Callback used for unsubscription. The **speed** parameter in the callback indicates the playback speed.
If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | +**System capability**: SystemCapability.Multimedia.AVSession.AVCast -**Error codes** +**System API**: This is a system API. -For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). +**Parameters** -| ID| Error Message| -| -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +| Name | Type | Mandatory | Description | +| type | string | Yes | Event type, which is **'videoSizeChange'** in this case. | **Example** ```js -session.off('setSpeed'); +aVCastController.off('videoSizeChange'); ``` -### off('setLoopMode')10+ +### on('error')10+ -off(type: 'setLoopMode', callback?: (mode: LoopMode) => void): void +on(type: 'error', callback: ErrorCallback): void -Unsubscribes from the event for setting loop mode. +Subscribes to remote AVPlayer errors. This event is used only for error prompt and does not require the user to stop playback control. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------- | ---- | ----- | -| type | string | Yes | Event type. The value is fixed at **'setLoopMode'**.| -| callback | (mode: [LoopMode](#loopmode10)) => void | No | Callback used for unsubscription. The **mode** parameter in the callback indicates the loop mode.
If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session.| +| Name | Type | Mandatory| Description | +| -------- | -------- | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type, which is **'error'** in this case. This event can be triggered by both user operations and the system.| +| callback | function | Yes | Callback used to return the error code ID and error message.| **Error codes** -For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). +For details about the error codes, see [Media Error Codes](../errorcodes/errorcode-media.md). -| ID| Error Message| -| -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +| ID| Error Message | +| -------- | --------------------- | +| 5400101 | No memory. | +| 5400102 | Operation not allowed. | +| 5400103 | I/O error. | +| 5400104 | Time out. | +| 5400105 | Service died. | +| 5400106 | Unsupport format. | **Example** ```js -session.off('setLoopMode'); +aVCastController.on('error', (error) => { + console.error('error happened,and error message is :' + error.message) + console.error('error happened,and error code is :' + error.code) +}) ``` -### off('toggleFavorite')10+ +### off('error')10+ -off(type: 'toggleFavorite', callback?: (assetId: string) => void): void +off(type: 'error'): void -Unsubscribes from the event for favoriting a media asset. +Unsubscribes from remote AVPlayer errors. -**System capability**: SystemCapability.Multimedia.AVSession.Core +**System capability**: SystemCapability.Multimedia.AVSession.AVCast **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------- | ---- | -------------------------------------------------------- | -| type | string | Yes | Event type. The value is fixed at **'toggleFavorite'**. | -| callback | (assetId: string) => void | No | Callback used for unsubscription. The **assetId** parameter in the callback indicates the media asset ID.
If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | ----------------------------------------- | +| type | string | Yes | Event type, which is **'error'** in this case.| **Error codes** -For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). +For details about the error codes, see [Media Error Codes](../errorcodes/errorcode-media.md). -| ID| Error Message| -| -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +| ID| Error Message | +| -------- | --------------------- | +| 5400101 | No memory. | +| 5400102 | Operation not allowed. | +| 5400103 | I/O error. | +| 5400104 | Time out. | +| 5400105 | Service died. | +| 5400106 | Unsupport format. | **Example** ```js -session.off('toggleFavorite'); +aVCastController.off('error') ``` -### off('skipToQueueItem')10+ +## ConnectionState10+ -off(type: 'skipToQueueItem', callback?: (itemId: number) => void): void +Enumerates the connection states. -Unsubscribes from the event that indicates an item in the playlist is selected. +**System capability**: SystemCapability.Multimedia.AVSession.Core + +| Name | Value | Description | +| --------------------------- | ---- | ----------- | +| STATE_CONNECTING | 0 | The device is connecting. | +| STATE_CONNECTED | 1 | The device is connected.| +| STATE_DISCONNECTED | 6 | The device is disconnected.| + +## AVMetadata10+ + +Describes the media metadata. **System capability**: SystemCapability.Multimedia.AVSession.Core -**Parameters** +| Name | Type | Mandatory| Description | +| --------------- |-------------------------| ---- |---------------------------------------------------------------------| +| assetId | string | Yes | Media ID. | +| title | string | No | Title. | +| artist | string | No | Artist. | +| author | string | No | Author. | +| album | string | No | Album name. | +| writer | string | No | Writer. | +| composer | string | No | composer. | +| duration | number | No | Media duration, in ms. | +| mediaImage | image.PixelMap | string | No | Pixel map or image path (local path or network path) of the image. | +| publishDate | Date | No | Release date. | +| subtitle | string | No | Subtitle. | +| description | string | No | Media description. | +| lyric | string | No | Lyric file path (local path or network path).| +| previousAssetId | string | No | ID of the previous media asset. | +| nextAssetId | string | No | ID of the next media asset. | -| Name | Type | Mandatory| Description | -| -------- | ------------------------ | ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -| type | string | Yes | Event type. The value is fixed at **'skipToQueueItem'**. | -| callback | (itemId: number) => void | No | Callback used for unsubscription. The **itemId** parameter in the callback indicates the ID of the item.
If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session.| +## AVMediaDescription10+ -**Error codes** +Describes the attributes related to the media metadata in the playlist. -For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). +**System capability**: SystemCapability.Multimedia.AVSession.Core -| ID| Error Message| -| -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +| Name | Type | Mandatory | Description | +| ------------ | ----------------------- | ---- | ----------------------- | +| mediaId | string | Yes | Media ID in the playlist. | +| title | string | No | Name of the media asset in the playlist. | +| subtitle | string | No | Subname of the media asset in the playlist. | +| description | string | No | Description of the media asset in the playlist. | +| icon | image.PixelMap | No | Pixel map of the image of the media asset in the playlist.| +| iconUri | string | No | Path of the image of the media asset in the playlist.| +| extras | {[key: string]: any} | No | Additional fields of the media asset in the playlist. | +| mediaUri | string | No | URI of the media asset in the playlist. | +| mediaType | string | No | Type of the media asset in the playlist. | +| mediaSize | number | No | Size of the media asset in the playlist. | +| albumTitle | string | No | Album name of the media asset in the playlist. | +| albumCoverUri | string | No | URI of the album title of the media asset in the playlist. | +| lyricContent | string | No | Lyric content of the media asset in the playlist. | +| lyricUri | string | No | Lyric URI of the media asset in the playlist. | +| artist | string | No | Author of the lyric of the media asset in the playlist. | +| fdSrc | media.AVFileDescriptor | No | Handle to the local media file in the playlist. | +| duration | number | No | Playback duration of the media asset in the playlist. | +| startPosition | number | No | Start position for playing the media asset in the playlist. | +| creditsPosition | number | No | Position for playing the closing credits of the media asset in the playlist. | +| appName | string | No | Name of the application provided by the playlist. | -**Example** +## AVQueueItem10+ -```js -session.off('skipToQueueItem'); -``` +Describes the attributes of an item in the playlist. -### off('handleKeyEvent')10+ +**System capability**: SystemCapability.Multimedia.AVSession.Core -off(type: 'handleKeyEvent', callback?: (event: KeyEvent) => void): void +| Name | Type | Mandatory| Description | +| ------------ | ------------------------------------------ | ---- | --------------------------- | +| itemId | number | Yes | ID of an item in the playlist. | +| description | [AVMediaDescription](#avmediadescription10) | Yes | Media metadata of the item in the playlist. | -Unsubscribes from the key event. +## AVPlaybackState10+ + +Describes the information related to the media playback state. **System capability**: SystemCapability.Multimedia.AVSession.Core -**Parameters** +| Name | Type | Mandatory| Description | +| ------------ | ------------------------------------- | ---- | ------- | +| state | [PlaybackState](#playbackstate) | No | Playback state.| +| speed | number | No | Playback speed.| +| position | [PlaybackPosition](#playbackposition) | No | Playback position.| +| bufferedTime | number | No | Buffered time.| +| loopMode | [LoopMode](#loopmode10) | No | Loop mode.| +| isFavorite | boolean | No | Whether the media asset is favorited.| +| activeItemId10+ | number | No | ID of the item that is being played.| +| volume10+ | number | No | Media volume.| +| extras10+ | {[key: string]: Object} | No | Custom media data.| + +## PlaybackPosition10+ -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The value is fixed at **'handleKeyEvent'**. | -| callback | (event: [KeyEvent](js-apis-keyevent.md)) => void | No | Callback used for unsubscription. The **event** parameter in the callback indicates the key event.
If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | +Describes the information related to the playback position. -**Error codes** +**System capability**: SystemCapability.Multimedia.AVSession.Core -For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). +| Name | Type | Mandatory| Description | +| ----------- | ------ | ---- | ------------------ | +| elapsedTime | number | Yes | Elapsed time, in ms.| +| updateTime | number | Yes | Updated time, in ms.| -| ID| Error Message| -| -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +## AVCastCategory10+ -**Example** +Enumerates the cast categories. -```js -session.off('handleKeyEvent'); -``` +**System capability**: SystemCapability.Multimedia.AVSession.AVCast -### off('outputDeviceChange')10+ +| Name | Value | Description | +| --------------------------- | ---- | ----------- | +| CATEGORY_LOCAL | 0 | Local playback. The sound is played from the local device or a connected Bluetooth headset by default. | +| CATEGORY_REMOTE | 1 | Remote playback. The sound or images are played from a remote device. | -off(type: 'outputDeviceChange', callback?: (device: OutputDeviceInfo) => void): void +## DeviceType10+ -Unsubscribes from playback device changes. +Enumerates the output device types. **System capability**: SystemCapability.Multimedia.AVSession.Core -**Parameters** +| Name | Value | Description | +| --------------------------- | ---- | ----------- | +| DEVICE_TYPE_LOCAL | 0 | Local device. | +| DEVICE_TYPE_BLUETOOTH | 10 | Bluetooth device. | +| DEVICE_TYPE_TV | 2 | TV.
**System capability**: SystemCapability.Multimedia.AVSession.AVCast| +| DEVICE_TYPE_SMART_SPEAKER | 3 | Speaker.
**System capability**: SystemCapability.Multimedia.AVSession.AVCast| -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------- | ---- | ------------------------------------------------------ | -| type | string | Yes | Event type. The value is fixed at **'outputDeviceChange'**. | -| callback | (device: [OutputDeviceInfo](#outputdeviceinfo10)) => void | No | Callback used for unsubscription. The **device** parameter in the callback indicates the output device information.
If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | +## DeviceInfo10+ -**Error codes** +Describes the information related to the output device. -For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). +**System capability**: SystemCapability.Multimedia.AVSession.Core -| ID| Error Message| -| -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +| Name | Type | Mandatory| Description | +| ---------- | -------------- | ---- | ---------------------- | +| castCategory | AVCastCategory | Yes | Cast category. | +| deviceId | string | Yes | ID of the output device. | +| deviceName | string | Yes | Name of the output device. | +| deviceType | DeviceType | Yes | Type of the output device. | +| ipAddress | string | No | IP address of the output device.
This is a system API.
**System capability**: SystemCapability.Multimedia.AVSession.AVCast | +| providerId | number | No | Vendor of the output device.
This is a system API.
**System capability**: SystemCapability.Multimedia.AVSession.AVCast | -**Example** +## OutputDeviceInfo10+ -```js -session.off('outputDeviceChange'); -``` +Describes the information related to the output device. +**System capability**: SystemCapability.Multimedia.AVSession.Core -### off('commonCommand')10+ +| Name | Type | Mandatory| Description | +| ---------- | -------------- | ---- | ---------------------- | +| devices | Array\ | Yes | Output devices. | -off(type: 'commonCommand', callback?: (command: string, args: {[key:string]: Object}) => void): void +## LoopMode10+ -Unsubscribes from custom control command changes. +Enumerates the loop modes of media playback. **System capability**: SystemCapability.Multimedia.AVSession.Core -**Parameters** +| Name | Value | Description | +| ------------------ | ---- | -------- | +| LOOP_MODE_SEQUENCE | 0 | Sequential playback.| +| LOOP_MODE_SINGLE | 1 | Single loop.| +| LOOP_MODE_LIST | 2 | Playlist loop.| +| LOOP_MODE_SHUFFLE | 3 | Shuffle.| -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- | -| type | string | Yes | Event type. The value is fixed at **'commonCommand'**. | -| callback | (command: string, args: {[key:string]: Object}) => void | No | Callback used for unsubscription. The **command** parameter in the callback indicates the name of the changed custom control command, and **args** indicates the parameters carried in the command.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | +## PlaybackState10+ -**Error codes** +Enumerates the media playback states. -For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). +**System capability**: SystemCapability.Multimedia.AVSession.Core -| ID| Error Message| -| -------- | ---------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | +| Name | Value | Description | +| --------------------------- | ---- | ----------- | +| PLAYBACK_STATE_INITIAL | 0 | Initial. | +| PLAYBACK_STATE_PREPARE | 1 | Preparing. | +| PLAYBACK_STATE_PLAY | 2 | Playing. | +| PLAYBACK_STATE_PAUSE | 3 | Paused. | +| PLAYBACK_STATE_FAST_FORWARD | 4 | Fast-forwarding. | +| PLAYBACK_STATE_REWIND | 5 | Rewinding. | +| PLAYBACK_STATE_STOP | 6 | Stop the playback. | +| PLAYBACK_STATE_COMPLETED | 7 | Playback complete. | +| PLAYBACK_STATE_RELEASED | 8 | Released. | +| PLAYBACK_STATE_ERROR | 9 | Error. | -**Example** +## AVSessionDescriptor -```js -session.off('commonCommand'); -``` +Declares the session descriptor. +**System capability**: SystemCapability.Multimedia.AVSession.Manager + +**System API**: This is a system API. +| Name | Type | Readable| Writable| Description | +| --------------| ---------------- |-----|-----|------| +| sessionId | string | Yes | No| Session ID. | +| type | [AVSessionType](#avsessiontype10) | Yes | No | Session type. | +| sessionTag | string | Yes | No | Custom session name. | +| elementName | [ElementName](js-apis-bundle-ElementName.md) | Yes | No | Information about the application to which the session belongs, including the bundle name and ability name.| +| isActive | boolean | Yes | No | Whether the session is activated. | +| isTopSession | boolean | Yes | No | Whether the session is the top session. | +| outputDevice | [OutputDeviceInfo](#outputdeviceinfo10) | Yes | No | Information about the output device. | ## AVSessionController10+ -An AV session controller is created by calling [avSession.createController](#avsessioncreatecontroller). Through the AV session controller, you can query the session ID, send commands and events to a session, and obtain session metadata and playback state information. +An AV session controller is created by calling [avSession.createController](#avsessioncreatecontroller). Through the controller, you can query the session ID, send commands and events to a session, and obtain session metadata and playback state information. ### Attributes @@ -2564,27 +5047,27 @@ An AV session controller is created by calling [avSession.createController](#avs **Example** ```js -let sessionId; -await avSession.createController(session.sessionId).then((controller) => { - sessionId = controller.sessionId; +let AVSessionController; +avSession.createController(currentAVSession.sessionId).then((controller) => { + AVSessionController = controller; }).catch((err) => { - console.info(`CreateController BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`CreateController BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` ### getAVPlaybackState10+ -getAVPlaybackState(): Promise\ +getAVPlaybackState(callback: AsyncCallback\): void -Obtains the information related to the playback state. This API uses a promise to return the result. +Obtains the remote playback state. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.Multimedia.AVSession.Core -**Return value** +**Parameters** -| Type | Description | -| --------------------------------------------- | --------------------------- | -| Promise<[AVPlaybackState](#avplaybackstate10)\> | Promise used to return the **AVPlaybackState** object.| +| Name | Type | Mandatory| Description | +| --------- | ----------------------------------------------------------- | ---- | ------------------------------------------------------------ | +| callback | AsyncCallback<[[AVPlaybackState](#avplaybackstate10)\> | Yes | Callback used to return the remote playback state.| **Error codes** @@ -2597,27 +5080,30 @@ For details about the error codes, see [AVSession Management Error Codes](../err | 6600103 | The session controller does not exist. | **Example** + ```js -controller.getAVPlaybackState().then((playbackState) => { - console.info(`GetAVPlaybackState : SUCCESS : state : ${playbackState.state}`); -}).catch((err) => { - console.info(`GetAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`); +avsessionController.getAVPlaybackState(function (err, state) { + if (err) { + console.error(`getAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`getAVPlaybackState : SUCCESS`); + } }); ``` ### getAVPlaybackState10+ -getAVPlaybackState(callback: AsyncCallback\): void +getAVPlaybackState(): Promise\; -Obtains the information related to the playback state. This API uses an asynchronous callback to return the result. +Obtains the remote playback state. This API uses a promise to return the result. **System capability**: SystemCapability.Multimedia.AVSession.Core -**Parameters** +**Return value** -| Name | Type | Mandatory| Description | -| -------- | --------------------------------------------------- | ---- | ---------------------------- | -| callback | AsyncCallback<[AVPlaybackState](#avplaybackstate10)\> | Yes | Callback used to return the **AVPlaybackState** object.| +| Type | Description | +| --------- | ------------------------------------------------------------ | +| Promise<[AVPlaybackState](#avplaybackstate10)\> | Promise used to return the remote playback state. | **Error codes** @@ -2630,29 +5116,28 @@ For details about the error codes, see [AVSession Management Error Codes](../err | 6600103 | The session controller does not exist. | **Example** + ```js -controller.getAVPlaybackState(function (err, playbackState) { - if (err) { - console.info(`GetAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`); - } else { - console.info(`GetAVPlaybackState : SUCCESS : state : ${playbackState.state}`); - } +avsessionController.getAVPlaybackState().then((state) => { + console.info(`getAVPlaybackState : SUCCESS :`); +}).catch((err) => { + console.error(`getAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` -### getAVQueueItems10+ +### getAVMetadata10+ -getAVQueueItems(): Promise\> +getAVMetadata(): Promise\ -Obtains the information related to the items in the queue. This API uses a promise to return the result. +Obtains the session metadata. This API uses a promise to return the result. **System capability**: SystemCapability.Multimedia.AVSession.Core **Return value** -| Type | Description | -| --------------------------------------------- | ----------------------------- | -| Promise\> | Promise used to return the items in the queue.| +| Type | Description | +| ----------------------------------- | ----------------------------- | +| Promise<[AVMetadata](#avmetadata10)\> | Promise used to return the metadata obtained.| **Error codes** @@ -2666,26 +5151,26 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.getAVQueueItems().then((items) => { - console.info(`GetAVQueueItems : SUCCESS : length : ${items.length}`); +avsessionController.getAVMetadata().then((metadata) => { + console.info(`GetAVMetadata : SUCCESS : assetId : ${metadata.assetId}`); }).catch((err) => { - console.info(`GetAVQueueItems BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`GetAVMetadata BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` -### getAVQueueItems10+ +### getAVMetadata10+ -getAVQueueItems(callback: AsyncCallback\>): void +getAVMetadata(callback: AsyncCallback\): void -Obtains the information related to the items in the playlist. This API uses an asynchronous callback to return the result. +Obtains the session metadata. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | --------------------------------------------------- | ---- | ------------------------- | -| callback | AsyncCallback\> | Yes | Callback used to return the items in the playlist.| +| Name | Type | Mandatory| Description | +| -------- | ----------------------------------------- | ---- | -------------------------- | +| callback | AsyncCallback<[AVMetadata](#avmetadata10)\> | Yes | Callback used to return the metadata obtained.| **Error codes** @@ -2699,11 +5184,11 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.getAVQueueItems(function (err, items) { +avsessionController.getAVMetadata(function (err, metadata) { if (err) { - console.info(`GetAVQueueItems BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`GetAVMetadata BusinessError: code: ${err.code}, message: ${err.message}`); } else { - console.info(`GetAVQueueItems : SUCCESS : length : ${items.length}`); + console.info(`GetAVMetadata : SUCCESS : assetId : ${metadata.assetId}`); } }); ``` @@ -2733,11 +5218,12 @@ For details about the error codes, see [AVSession Management Error Codes](../err | 6600103 | The session controller does not exist. | **Example** + ```js -controller.getAVQueueTitle().then((title) => { +avsessionController.getAVQueueTitle().then((title) => { console.info(`GetAVQueueTitle : SUCCESS : title : ${title}`); }).catch((err) => { - console.info(`GetAVQueueTitle BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`GetAVQueueTitle BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` @@ -2767,34 +5253,28 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.getAVQueueTitle(function (err, title) { +avsessionController.getAVQueueTitle(function (err, title) { if (err) { - console.info(`GetAVQueueTitle BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`GetAVQueueTitle BusinessError: code: ${err.code}, message: ${err.message}`); } else { console.info(`GetAVQueueTitle : SUCCESS : title : ${title}`); } }); ``` -### skipToQueueItem10+ +### getAVQueueItems10+ -skipToQueueItem(itemId: number): Promise\ +getAVQueueItems(): Promise\> -Sends the ID of an item in the playlist to the session for processing. The session can play the song. This API uses a promise to return the result. +Obtains the information related to the items in the queue. This API uses a promise to return the result. **System capability**: SystemCapability.Multimedia.AVSession.Core -**Parameters** - -| Name | Type | Mandatory| Description | -| ------ | ------- | ---- | ------------------------------------------- | -| itemId | number | Yes | ID of an item in the playlist.| - **Return value** -| Type | Description | -| -------------- | --------------------------------------------------------------- | -| Promise\ | Promise used to return the result. If the item ID is sent, no value is returned; otherwise, an error object is returned.| +| Type | Description | +| --------------------------------------------- | ----------------------------- | +| Promise\> | Promise used to return the items in the queue.| **Error codes** @@ -2809,28 +5289,26 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -let queueItemId = 0; -controller.skipToQueueItem(queueItemId).then(() => { - console.info(`SkipToQueueItem successfully`); +avsessionController.getAVQueueItems().then((items) => { + console.info(`GetAVQueueItems : SUCCESS : length : ${items.length}`); }).catch((err) => { - console.info(`SkipToQueueItem BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`GetAVQueueItems BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` -### skipToQueueItem10+ +### getAVQueueItems10+ -skipToQueueItem(itemId: number, callback: AsyncCallback\): void +getAVQueueItems(callback: AsyncCallback\>): void -Sends the ID of an item in the playlist to the session for processing. The session can play the song. This API uses an asynchronous callback to return the result. +Obtains the information related to the items in the playlist. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | --------------------- | ---- | ----------------------------------------------------------- | -| itemId | number | Yes | ID of an item in the playlist. | -| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object.| +| Name | Type | Mandatory| Description | +| -------- | --------------------------------------------------- | ---- | ------------------------- | +| callback | AsyncCallback\> | Yes | Callback used to return the items in the playlist.| **Error codes** @@ -2845,97 +5323,34 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -let queueItemId = 0; -controller.skipToQueueItem(queueItemId, function (err) { +avsessionController.getAVQueueItems(function (err, items) { if (err) { - console.info(`SkipToQueueItem BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`GetAVQueueItems BusinessError: code: ${err.code}, message: ${err.message}`); } else { - console.info(`SkipToQueueItem successfully`); + console.info(`GetAVQueueItems : SUCCESS : length : ${items.length}`); } }); ``` -### getAVMetadata10+ - -getAVMetadata(): Promise\ - -Obtains the session metadata. This API uses a promise to return the result. - -**System capability**: SystemCapability.Multimedia.AVSession.Core - -**Return value** - -| Type | Description | -| ----------------------------------- | ----------------------------- | -| Promise<[AVMetadata](#avmetadata10)\> | Promise used to return the metadata obtained.| - -**Error codes** - -For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). - -| ID| Error Message| -| -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | -| 6600103 | The session controller does not exist. | - -**Example** -```js -controller.getAVMetadata().then((metadata) => { - console.info(`GetAVMetadata : SUCCESS : assetId : ${metadata.assetId}`); -}).catch((err) => { - console.info(`GetAVMetadata BusinessError: code: ${err.code}, message: ${err.message}`); -}); -``` - -### getAVMetadata10+ +### skipToQueueItem10+ -getAVMetadata(callback: AsyncCallback\): void +skipToQueueItem(itemId: number): Promise\ -Obtains the session metadata. This API uses an asynchronous callback to return the result. +Sends the ID of an item in the playlist to the session for processing. The session can play the song. This API uses a promise to return the result. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ----------------------------------------- | ---- | -------------------------- | -| callback | AsyncCallback<[AVMetadata](#avmetadata10)\> | Yes | Callback used to return the metadata obtained.| - -**Error codes** - -For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). - -| ID| Error Message| -| -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | -| 6600103 | The session controller does not exist. | - -**Example** -```js -controller.getAVMetadata(function (err, metadata) { - if (err) { - console.info(`GetAVMetadata BusinessError: code: ${err.code}, message: ${err.message}`); - } else { - console.info(`GetAVMetadata : SUCCESS : assetId : ${metadata.assetId}`); - } -}); -``` - -### getOutputDevice10+ - -getOutputDevice(): Promise\ - -Obtains the output device information. This API uses a promise to return the result. - -**System capability**: SystemCapability.Multimedia.AVSession.Core +| Name | Type | Mandatory| Description | +| ------ | ------- | ---- | ------------------------------------------- | +| itemId | number | Yes | ID of an item in the playlist.| **Return value** -| Type | Description | -| ----------------------------------------------- | --------------------------------- | -| Promise<[OutputDeviceInfo](#outputdeviceinfo10)\> | Promise used to return the information obtained.| +| Type | Description | +| -------------- | --------------------------------------------------------------- | +| Promise\ | Promise used to return the result. If the item ID is sent, no value is returned; otherwise, an error object is returned.| **Error codes** @@ -2944,30 +5359,34 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | | 6600101 | Session service exception. | +| 6600102 | The session does not exist. | | 6600103 | The session controller does not exist. | **Example** + ```js -controller.getOutputDevice().then((deviceInfo) => { - console.info(`GetOutputDevice : SUCCESS : isRemote : ${deviceInfo.isRemote}`); +let queueItemId = 0; +avsessionController.skipToQueueItem(queueItemId).then(() => { + console.info(`SkipToQueueItem successfully`); }).catch((err) => { - console.info(`GetOutputDevice BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`SkipToQueueItem BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` -### getOutputDevice10+ +### skipToQueueItem10+ -getOutputDevice(callback: AsyncCallback\): void +skipToQueueItem(itemId: number, callback: AsyncCallback\): void -Obtains the output device information. This API uses an asynchronous callback to return the result. +Sends the ID of an item in the playlist to the session for processing. The session can play the song. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ----------------------------------------------------- | ---- | ------------------------------ | -| callback | AsyncCallback<[OutputDeviceInfo](#outputdeviceinfo10)\> | Yes | Callback used to return the information obtained.| +| Name | Type | Mandatory| Description | +| -------- | --------------------- | ---- | ----------------------------------------------------------- | +| itemId | number | Yes | ID of an item in the playlist. | +| callback | AsyncCallback\ | Yes | Callback used to return the result. If the setting is successful, **err** is **undefined**; otherwise, **err** is an error object.| **Error codes** @@ -2976,33 +5395,35 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | | 6600101 | Session service exception. | +| 6600102 | The session does not exist. | | 6600103 | The session controller does not exist. | **Example** ```js -controller.getOutputDevice(function (err, deviceInfo) { +let queueItemId = 0; +avsessionController.skipToQueueItem(queueItemId, function (err) { if (err) { - console.info(`GetOutputDevice BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`SkipToQueueItem BusinessError: code: ${err.code}, message: ${err.message}`); } else { - console.info(`GetOutputDevice : SUCCESS : isRemote : ${deviceInfo.isRemote}`); + console.info(`SkipToQueueItem successfully`); } }); ``` -### getExtras10+ +### getOutputDevice10+ -getExtras(): Promise\<{[key: string]: Object}> +getOutputDevice(): Promise\ -Obtains the custom media packet set by the provider. This API uses a promise to return the result. +Obtains the output device information. This API uses a promise to return the result. **System capability**: SystemCapability.Multimedia.AVSession.Core **Return value** -| Type | Description | -| ----------------------------------- | ----------------------------- | -| Promise<{[key: string]: Object}\> | Promise used to return the custom media packet. The content of the packet is the same as that set in **setExtras**.| +| Type | Description | +| ----------------------------------------------- | --------------------------------- | +| Promise<[OutputDeviceInfo](#outputdeviceinfo10)\> | Promise used to return the information obtained.| **Error codes** @@ -3010,32 +5431,31 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | -| 6600103 | The session controller does not exist. | -| 6600105 | Invalid session command. | -| 6600107 | Too many commands or events. | +| 600101 | Session service exception. | +| 600103 | The session controller does not exist. | **Example** ```js -let extras = await controller.getExtras().catch((err) => { - console.info(`getExtras BusinessError: code: ${err.code}, message: ${err.message}`); +avsessionController.getOutputDevice().then((deviceInfo) => { + console.info(`GetOutputDevice : SUCCESS : isRemote : ${deviceInfo.isRemote}`); +}).catch((err) => { + console.error(`GetOutputDevice BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` -### getExtras10+ +### getOutputDevice10+ -getExtras(callback: AsyncCallback\<{[key: string]: Object}>): void +getOutputDevice(callback: AsyncCallback\): void -Obtains the custom media packet set by the provider. This API uses an asynchronous callback to return the result. +Obtains the output device information. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ----------------------------------------- | ---- | -------------------------- | -| callback | AsyncCallback<{[key: string]: Object}\> | Yes | Callback used to return the custom media packet. The content of the packet is the same as that set in **setExtras**.| +| Name | Type | Mandatory| Description | +| -------- | ----------------------------------------------------- | ---- | ------------------------------ | +| callback | AsyncCallback<[OutputDeviceInfo](#outputdeviceinfo10)\> | Yes | Callback used to return the information obtained.| **Error codes** @@ -3043,35 +5463,17 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | -| 6600103 | The session controller does not exist. | -| 6600105 | Invalid session command. | -| 6600107 | Too many commands or events. | +| 600101 | Session service exception. | +| 600103 | The session controller does not exist. | **Example** + ```js -let metadata = { - assetId: "121278", - title: "lose yourself", - artist: "Eminem", - author: "ST", - album: "Slim shady", - writer: "ST", - composer: "ST", - duration: 2222, - mediaImage: "https://www.example.com/example.jpg", - subtitle: "8 Mile", - description: "Rap", - lyric: "https://www.example.com/example.lrc", - previousAssetId: "121277", - nextAssetId: "121279", -}; -controller.getExtras(function (err, extras) { +avsessionController.getOutputDevice(function (err, deviceInfo) { if (err) { - console.info(`getExtras BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`GetOutputDevice BusinessError: code: ${err.code}, message: ${err.message}`); } else { - console.info(`getExtras : SUCCESS : assetId : ${metadata.assetId}`); + console.info(`GetOutputDevice : SUCCESS : isRemote : ${deviceInfo.isRemote}`); } }); ``` @@ -3096,11 +5498,11 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | -| 6600103 | The session controller does not exist. | -| 6600105 | Invalid session command. | -| 6600106 | The session is not activated. | +| 600101 | Session service exception. | +| 600102 | The session does not exist. | +| 600103 | The session controller does not exist. | +| 600105 | Invalid session command. | +| 600106 | The session is not activated. | **Return value** @@ -3114,10 +5516,10 @@ For details about the error codes, see [AVSession Management Error Codes](../err let keyItem = {code:0x49, pressedTime:2, deviceId:0}; let event = {action:2, key:keyItem, keys:[keyItem]}; -controller.sendAVKeyEvent(event).then(() => { +avsessionController.sendAVKeyEvent(event).then(() => { console.info(`SendAVKeyEvent Successfully`); }).catch((err) => { - console.info(`SendAVKeyEvent BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`SendAVKeyEvent BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` @@ -3142,11 +5544,11 @@ For details about the error codes, see [AVSession Management Error Codes](../err | ID| Error Message| | -------- | ---------------------------------------- | -| 6600101 | Session service exception. | -| 6600102 | The session does not exist. | -| 6600103 | The session controller does not exist. | -| 6600105 | Invalid session command. | -| 6600106 | The session is not activated. | +| 600101 | Session service exception. | +| 600102 | The session does not exist. | +| 600103 | The session controller does not exist. | +| 600105 | Invalid session command. | +| 600106 | The session is not activated. | **Example** @@ -3154,9 +5556,9 @@ For details about the error codes, see [AVSession Management Error Codes](../err let keyItem = {code:0x49, pressedTime:2, deviceId:0}; let event = {action:2, key:keyItem, keys:[keyItem]}; -controller.sendAVKeyEvent(event, function (err) { +avsessionController.sendAVKeyEvent(event, function (err) { if (err) { - console.info(`SendAVKeyEvent BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`SendAVKeyEvent BusinessError: code: ${err.code}, message: ${err.message}`); } else { console.info(`SendAVKeyEvent Successfully`); } @@ -3190,12 +5592,10 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -import wantAgent from '@ohos.app.ability.wantAgent'; - -controller.getLaunchAbility().then((agent) => { +avsessionController.getLaunchAbility().then((agent) => { console.info(`GetLaunchAbility : SUCCESS : wantAgent : ${agent}`); }).catch((err) => { - console.info(`GetLaunchAbility BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`GetLaunchAbility BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` @@ -3226,11 +5626,9 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -import wantAgent from '@ohos.app.ability.wantAgent'; - -controller.getLaunchAbility(function (err, agent) { +avsessionController.getLaunchAbility(function (err, agent) { if (err) { - console.info(`GetLaunchAbility BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`GetLaunchAbility BusinessError: code: ${err.code}, message: ${err.message}`); } else { console.info(`GetLaunchAbility : SUCCESS : wantAgent : ${agent}`); } @@ -3263,7 +5661,7 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -let time = controller.getRealPlaybackPositionSync(); +let time = avsessionController.getRealPlaybackPositionSync(); ``` ### isActive10+ @@ -3293,10 +5691,10 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.isActive().then((isActive) => { +avsessionController.isActive().then((isActive) => { console.info(`IsActive : SUCCESS : isactive : ${isActive}`); }).catch((err) => { - console.info(`IsActive BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`IsActive BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` @@ -3327,9 +5725,9 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.isActive(function (err, isActive) { +avsessionController.isActive(function (err, isActive) { if (err) { - console.info(`IsActive BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`IsActive BusinessError: code: ${err.code}, message: ${err.message}`); } else { console.info(`IsActive : SUCCESS : isactive : ${isActive}`); } @@ -3362,10 +5760,10 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.destroy().then(() => { +avsessionController.destroy().then(() => { console.info(`Destroy : SUCCESS `); }).catch((err) => { - console.info(`Destroy BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`Destroy BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` @@ -3395,9 +5793,9 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.destroy(function (err) { +avsessionController.destroy(function (err) { if (err) { - console.info(`Destroy BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`Destroy BusinessError: code: ${err.code}, message: ${err.message}`); } else { console.info(`Destroy : SUCCESS `); } @@ -3431,10 +5829,10 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.getValidCommands.then((validCommands) => { +avsessionController.getValidCommands.then((validCommands) => { console.info(`GetValidCommands : SUCCESS : size : ${validCommands.length}`); }).catch((err) => { - console.info(`GetValidCommands BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`GetValidCommands BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` @@ -3465,9 +5863,9 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.getValidCommands(function (err, validCommands) { +avsessionController.getValidCommands(function (err, validCommands) { if (err) { - console.info(`GetValidCommands BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`GetValidCommands BusinessError: code: ${err.code}, message: ${err.message}`); } else { console.info(`GetValidCommands : SUCCESS : size : ${validCommands.length}`); } @@ -3482,7 +5880,7 @@ Sends a control command to the session through the controller. This API uses a p > **NOTE** > -> Before using **sendControlCommand**, the controller must ensure that the AVSession has registered with the corresponding listener. For details about how to register the listener, see [Registering AVSession Listeners](#onplaypausestopplaynextplaypreviousfastforwardrewind10). +> Before using **sendControlCommand**, the controller must ensure that the corresponding listeners are registered for the media session. For details about how to register the listeners, see [on'play'](#onplay10), [on'pause'](#onpause10), and the like. **System capability**: SystemCapability.Multimedia.AVSession.Core @@ -3525,10 +5923,10 @@ let avCommand = {command:'play'}; // let avCommand = {command:'setSpeed', parameter:2.6}; // let avCommand = {command:'setLoopMode', parameter:avSession.LoopMode.LOOP_MODE_SINGLE}; // let avCommand = {command:'toggleFavorite', parameter:"false"}; -controller.sendControlCommand(avCommand).then(() => { +avsessionController.sendControlCommand(avCommand).then(() => { console.info(`SendControlCommand successfully`); }).catch((err) => { - console.info(`SendControlCommand BusinessError: code: ${err.code}, message: ${err.message}`); + console.error(`SendControlCommand BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` @@ -3540,7 +5938,7 @@ Sends a control command to the session through the controller. This API uses an > **NOTE** > -> Before using **sendControlCommand**, the controller must ensure that the AVSession has registered with the corresponding listener. For details about how to register the listener, see [Registering AVSession Listeners](#onplaypausestopplaynextplaypreviousfastforwardrewind10). +> Before using **sendControlCommand**, the controller must ensure that the corresponding listeners are registered for the media session. For details about how to register the listeners, see [on'play'](#onplay10), [on'pause'](#onpause10), and the like. **System capability**: SystemCapability.Multimedia.AVSession.Core @@ -3578,11 +5976,11 @@ let avCommand = {command:'play'}; // let avCommand = {command:'setSpeed', parameter:2.6}; // let avCommand = {command:'setLoopMode', parameter:avSession.LoopMode.LOOP_MODE_SINGLE}; // let avCommand = {command:'toggleFavorite', parameter:"false"}; -controller.sendControlCommand(avCommand, function (err) { +avsessionController.sendControlCommand(avCommand, function (err) { if (err) { console.info(`SendControlCommand BusinessError: code: ${err.code}, message: ${err.message}`); } else { - console.info(`SendControlCommand successfully`); + console.error(`SendControlCommand successfully`); } }); ``` @@ -3603,8 +6001,7 @@ Sends a custom control command to the session through the controller. This API u | args | {[key: string]: any} | Yes | Parameters in key-value pair format carried in the custom control command.| > **NOTE** -> -> The **args** parameter supports the following data types: string, number, Boolean, object, array, and file descriptor. For details, see [@ohos.app.ability.Want(Want)](./js-apis-app-ability-want.md). +> The **args** parameter supports the following data types: string, number, Boolean, object, array, and file descriptor. For details, see [@ohos.app.ability.Want (Want)](./js-apis-app-ability-want.md). **Return value** @@ -3632,7 +6029,7 @@ let commandName = "my_command"; let args = { command : "This is my command" } -await controller.sendCommonCommand(commandName, args).catch((err) => { +avsessionController.sendCommonCommand(commandName, args).catch((err) => { console.info(`SendCommonCommand BusinessError: code: ${err.code}, message: ${err.message}`); }) ``` @@ -3654,8 +6051,7 @@ Sends a custom control command to the session through the controller. This API u | callback | AsyncCallback\ | Yes | Callback used to return the result. If the command is sent, **err** is **undefined**; otherwise, **err** is an error object. | > **NOTE** -> -> The **args** parameter supports the following data types: string, number, Boolean, object, array, and file descriptor. For details, see [@ohos.app.ability.Want(Want)](./js-apis-app-ability-want.md). +> The **args** parameter supports the following data types: string, number, Boolean, object, array, and file descriptor. For details, see [@ohos.app.ability.Want (Want)](./js-apis-app-ability-want.md). **Error codes** @@ -3677,94 +6073,88 @@ let commandName = "my_command"; let args = { command : "This is my command" } -controller.sendCommonCommand(commandName, args, (err) => { +avsessionController.sendCommonCommand(commandName, args, (err) => { if(err) { console.info(`SendCommonCommand BusinessError: code: ${err.code}, message: ${err.message}`); } }) ``` -### on('metadataChange')10+ +### getExtras10+ -on(type: 'metadataChange', filter: Array\ | 'all', callback: (data: AVMetadata) => void) +getExtras(): Promise\<{[key: string]: Object}> -Subscribes to the metadata change event. +Obtains the custom media packet set by the provider. This API uses a promise to return the result. **System capability**: SystemCapability.Multimedia.AVSession.Core -**Parameters** +**Return value** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The event **'metadataChange'** is reported when the session metadata changes.| -| filter | Array\ | 'all' | Yes | The value **'all'** indicates that any metadata field change will trigger the event, and **Array** indicates that only changes to the listed metadata field will trigger the event.| -| callback | (data: [AVMetadata](#avmetadata10)) => void | Yes | Callback used for subscription. The **data** parameter in the callback indicates the changed metadata. | +| Type | Description | +| ----------------------------------- | ----------------------------- | +| Promise<{[key: string]: Object}\> | Promise used to return the custom media packet. The content of the packet is the same as that set in **setExtras**.| **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ------------------------------ | +| -------- | ---------------------------------------- | | 6600101 | Session service exception. | +| 6600102 | The session does not exist. | | 6600103 | The session controller does not exist. | +| 6600105 | Invalid session command. | +| 6600107 | Too many commands or events. | **Example** - ```js -controller.on('metadataChange', 'all', (metadata) => { - console.info(`on metadataChange assetId : ${metadata.assetId}`); -}); - -let metaFilter = ['assetId', 'title', 'description']; -controller.on('metadataChange', metaFilter, (metadata) => { - console.info(`on metadataChange assetId : ${metadata.assetId}`); +let extras = await avsessionController.getExtras().catch((err) => { + console.info(`getExtras BusinessError: code: ${err.code}, message: ${err.message}`); }); ``` -### on('playbackStateChange')10+ +### getExtras10+ -on(type: 'playbackStateChange', filter: Array\ | 'all', callback: (state: AVPlaybackState) => void) +getExtras(callback: AsyncCallback\<{[key: string]: Object}>): void -Subscribes to the playback state change event. +Obtains the custom media packet set by the provider. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The event **'playbackStateChange'** is reported when the playback state changes.| -| filter | Array\ | 'all' | Yes | The value **'all'** indicates that any playback state field change will trigger the event, and **Array** indicates that only changes to the listed playback state field will trigger the event.| -| callback | (state: [AVPlaybackState](#avplaybackstate10)) => void | Yes | Callback used for subscription. The **state** parameter in the callback indicates the changed playback state. | +| Name | Type | Mandatory| Description | +| -------- | ----------------------------------------- | ---- | -------------------------- | +| callback | AsyncCallback<{[key: string]: Object}\> | Yes | Callback used to return the custom media packet. The content of the packet is the same as that set in **setExtras**.| **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ------------------------------ | +| -------- | ---------------------------------------- | | 6600101 | Session service exception. | +| 6600102 | The session does not exist. | | 6600103 | The session controller does not exist. | +| 6600105 | Invalid session command. | +| 6600107 | Too many commands or events. | **Example** - ```js -controller.on('playbackStateChange', 'all', (playbackState) => { - console.info(`on playbackStateChange state : ${playbackState.state}`); -}); - -let playbackFilter = ['state', 'speed', 'loopMode']; -controller.on('playbackStateChange', playbackFilter, (playbackState) => { - console.info(`on playbackStateChange state : ${playbackState.state}`); +avsessionController.getExtras(function (err, extras) { + if (err) { + console.error(`getExtras BusinessError: code: ${err.code}, message: ${err.message}`); + } else { + console.info(`getExtras : SUCCESS : assetId : ${extras}`); + } }); ``` -### on('sessionEvent')10+ +### on('metadataChange')10+ -on(type: 'sessionEvent', callback: (sessionEvent: string, args: {[key:string]: Object}) => void): void +on(type: 'metadataChange', filter: Array\ | 'all', callback: (data: AVMetadata) => void) -Subscribes to session event changes. This API is called by the controller. +Subscribes to metadata change events. **System capability**: SystemCapability.Multimedia.AVSession.Core @@ -3772,8 +6162,9 @@ Subscribes to session event changes. This API is called by the controller. | Name | Type | Mandatory| Description | | -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The event **'sessionEvent'** is reported when the session event changes.| -| callback | (sessionEvent: string, args: {[key:string]: object}) => void | Yes | Callback used for subscription. **sessionEvent** in the callback indicates the name of the session event that changes, and **args** indicates the parameters carried in the event. | +| type | string | Yes | Event type. The event **'metadataChange'** is triggered when the session metadata changes.| +| filter | Array\ | 'all' | Yes | The value **'all'** indicates that any metadata field change will trigger the event, and **Array** indicates that only changes to the listed metadata field will trigger the event.| +| callback | (data: [AVMetadata](#avmetadata10)) => void | Yes | Callback used for subscription. The **data** parameter in the callback indicates the changed metadata. | **Error codes** @@ -3787,57 +6178,61 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.on('sessionEvent', (sessionEvent, args) => { - console.info(`OnSessionEvent, sessionEvent is ${sessionEvent}, args: ${JSON.stringify(args)}`); +avsessionController.on('metadataChange', 'all', (metadata) => { + console.info(`on metadataChange assetId : ${metadata.assetId}`); +}); + +let metaFilter = ['assetId', 'title', 'description']; +avsessionController.on('metadataChange', metaFilter, (metadata) => { + console.info(`on metadataChange assetId : ${metadata.assetId}`); }); ``` -### on('queueItemsChange')10+ +### off('metadataChange')10+ -on(type: 'queueItemsChange', callback: (items: Array<[AVQueueItem](#avqueueitem10)\>) => void): void +off(type: 'metadataChange', callback?: (data: AVMetadata) => void) -Subscribes to playlist item changes. This API is called by the controller. +Unsubscribes from metadata change events. This API is called by the controller. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ----------------------------------------------------- | ---- | ---------------------------------------------------------------------------- | -| type | string | Yes | Event type. The event **'queueItemsChange'** is reported when one or more items in the playlist changes.| -| callback | (items: Array<[AVQueueItem](#avqueueitem10)\>) => void | Yes | Callback used for subscription. The **items** parameter in the callback indicates the changed items in the playlist. | +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------ | ---- | ------------------------------------------------------ | +| type | string | Yes | Event type, which is **'metadataChange'** in this case. | +| callback | (data: [AVMetadata](#avmetadata10)) => void | No | Callback used for subscription. The **data** parameter in the callback indicates the changed metadata.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ------------------------------ | +| -------- | ---------------- | | 6600101 | Session service exception. | | 6600103 | The session controller does not exist. | **Example** ```js -controller.on('queueItemsChange', (items) => { - console.info(`OnQueueItemsChange, items length is ${items.length}`); -}); +avsessionController.off('metadataChange'); ``` -### on('queueTitleChange')10+ +### on('playbackStateChange')10+ -on(type: 'queueTitleChange', callback: (title: string) => void): void +on(type: 'playbackStateChange', filter: Array\ | 'all', callback: (state: AVPlaybackState) => void) -Subscribes to playlist name changes. This API is called by the controller. +Subscribes to playback state change events. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ----------------------- | ---- | ------------------------------------------------------------------------------- | -| type | string | Yes | Event type. The event **'queueTitleChange'** is reported when the playlist name changes.| -| callback | (title: string) => void | Yes | Callback used for subscription. The **title** parameter in the callback indicates the changed playlist name. | +| Name | Type | Mandatory| Description | +| --------| -----------|-----|------------| +| type | string | Yes | Event type. The event **'playbackStateChange'** is triggered when the playback state changes.| +| filter | Array\ | 'all' | Yes | The value **'all'** indicates that any playback state field change will trigger the event, and **Array** indicates that only changes to the listed playback state field will trigger the event.| +| callback | (state: [AVPlaybackState](#avplaybackstate10)) => void | Yes | Callback used for subscription. The **state** parameter in the callback indicates the changed playback state.| **Error codes** @@ -3851,49 +6246,51 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.on('queueTitleChange', (title) => { - console.info(`queueTitleChange, title is ${title}`); +avsessionController.on('playbackStateChange', 'all', (playbackState) => { + console.info(`on playbackStateChange state : ${playbackState.state}`); +}); + +let playbackFilter = ['state', 'speed', 'loopMode']; +avsessionController.on('playbackStateChange', playbackFilter, (playbackState) => { + console.info(`on playbackStateChange state : ${playbackState.state}`); }); ``` -### on('extrasChange')10+ +### off('playbackStateChange')10+ -on(type: 'extrasChange', callback: (extras: {[key:string]: Object}) => void): void +off(type: 'playbackStateChange', callback?: (state: AVPlaybackState) => void) -Subscribes to custom media packet changes. This API is called by the controller. +Unsubscribes from playback state change events. This API is called by the controller. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The event **'extrasChange'** is reported when the provider sets a custom media packet.| -| callback | (extras: {[key:string]: object}) => void | Yes | Callback used for subscription. The **extras** parameter in the callback indicates the custom media packet set by the provider. This packet is the same as that set in **dispatchSessionEvent**. | +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- | +| type | string | Yes | Event type, which is **'playbackStateChange'** in this case. | +| callback | (state: [AVPlaybackState](#avplaybackstate10)) => void | No | Callback used for unsubscription. The **state** parameter in the callback indicates the changed playback state.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ------------------------------ | +| -------- | ---------------- | | 6600101 | Session service exception. | | 6600103 | The session controller does not exist. | -| 401 | Parameter check failed | **Example** ```js -controller.on('extrasChange', (extras) => { - console.info(`Caught extrasChange event,the new extra is: ${JSON.stringify(extras)}`); -}); +avsessionController.off('playbackStateChange'); ``` ### on('sessionDestroy')10+ on(type: 'sessionDestroy', callback: () => void) -Subscribes to the session destruction event. +Subscribes to session destruction events. **System capability**: SystemCapability.Multimedia.AVSession.Core @@ -3901,7 +6298,7 @@ Subscribes to the session destruction event. | Name | Type | Mandatory| Description | | -------- | ---------- | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The event **'sessionDestroy'** is reported when the session is destroyed.| +| type | string | Yes | Event type. The event **'sessionDestroy'** is triggered when a session is destroyed.| | callback | () => void | Yes | Callback used for subscription. If the subscription is successful, **err** is **undefined**; otherwise, **err** is an error object. | **Error codes** @@ -3916,16 +6313,46 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.on('sessionDestroy', () => { +avsessionController.on('sessionDestroy', () => { console.info(`on sessionDestroy : SUCCESS `); }); ``` +### off('sessionDestroy')10+ + +off(type: 'sessionDestroy', callback?: () => void) + +Unsubscribes from session destruction events. This API is called by the controller. + +**System capability**: SystemCapability.Multimedia.AVSession.Core + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ---------- | ---- | ----------------------------------------------------- | +| type | string | Yes | Event type, which is **'sessionDestroy'** in this case. | +| callback | () => void | No | Callback used for unsubscription. If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | + +**Error codes** + +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). + +| ID| Error Message| +| -------- | ---------------- | +| 6600101 | Session service exception. | +| 6600103 | The session controller does not exist. | + +**Example** + +```js +avsessionController.off('sessionDestroy'); +``` + ### on('activeStateChange')10+ on(type: 'activeStateChange', callback: (isActive: boolean) => void) -Subscribes to the session activation state change event. +Subscribes to session activation state change events. **System capability**: SystemCapability.Multimedia.AVSession.Core @@ -3933,7 +6360,7 @@ Subscribes to the session activation state change event. | Name | Type | Mandatory| Description | | -------- | --------------------------- | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The event **'activeStateChange'** is reported when the activation state of the session changes.| +| type | string | Yes | Event type. The event **'activeStateChange'** is triggered when the activation state of the session changes.| | callback | (isActive: boolean) => void | Yes | Callback used for subscription. The **isActive** parameter in the callback specifies whether the session is activated. The value **true** means that the service is activated, and **false** means the opposite. | **Error codes** @@ -3948,96 +6375,94 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.on('activeStateChange', (isActive) => { +avsessionController.on('activeStateChange', (isActive) => { console.info(`on activeStateChange : SUCCESS : isActive ${isActive}`); }); ``` -### on('validCommandChange')10+ +### off('activeStateChange')10+ -on(type: 'validCommandChange', callback: (commands: Array\) => void) +off(type: 'activeStateChange', callback?: (isActive: boolean) => void) -Subscribes to valid command changes. +Unsubscribes from session activation state change events. This API is called by the controller. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The event **'validCommandChange'** is reported when the valid commands supported by the session changes.| -| callback | (commands: Array<[AVControlCommandType](#avcontrolcommandtype10)\>) => void | Yes | Callback used for subscription. The **commands** parameter in the callback is a set of valid commands. | +| Name | Type | Mandatory| Description | +| -------- | --------------------------- | ---- | ----------------------------------------------------- | +| type | string | Yes | Event type, which is **'activeStateChange'** in this case. | +| callback | (isActive: boolean) => void | No | Callback used for unsubscription. The **isActive** parameter in the callback specifies whether the session is activated. The value **true** means that the session is activated, and **false** means the opposite.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ------------------------------ | +| -------- | ---------------- | | 6600101 | Session service exception. | | 6600103 | The session controller does not exist. | **Example** ```js -controller.on('validCommandChange', (validCommands) => { - console.info(`validCommandChange : SUCCESS : size : ${validCommands.size}`); - console.info(`validCommandChange : SUCCESS : validCommands : ${validCommands.values()}`); -}); +avsessionController.off('activeStateChange'); ``` -### on('outputDeviceChange')10+ +### on('validCommandChange')10+ -on(type: 'outputDeviceChange', callback: (device: OutputDeviceInfo) => void): void +on(type: 'validCommandChange', callback: (commands: Array\) => void) -Subscribes to output device changes. +Subscribes to valid command change events. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | -| type | string | Yes | Event type. The event **'outputDeviceChange'** is reported when the output device changes.| -| callback | (device: [OutputDeviceInfo](#outputdeviceinfo10)) => void | Yes | Callback used for subscription. The **device** parameter in the callback indicates the output device information. | +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'validCommandChange'** is triggered when the valid commands supported by the session changes.| +| callback | (commands: Array<[AVControlCommandType](#avcontrolcommandtype10)\>) => void | Yes | Callback used for subscription. The **commands** parameter in the callback is a set of valid commands. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ----------------------- | +| -------- | ------------------------------ | | 6600101 | Session service exception. | | 6600103 | The session controller does not exist. | **Example** ```js -controller.on('outputDeviceChange', (device) => { - console.info(`on outputDeviceChange device isRemote : ${device.isRemote}`); +avsessionController.on('validCommandChange', (validCommands) => { + console.info(`validCommandChange : SUCCESS : size : ${validCommands.size}`); + console.info(`validCommandChange : SUCCESS : validCommands : ${validCommands.values()}`); }); ``` -### off('metadataChange')10+ +### off('validCommandChange')10+ -off(type: 'metadataChange', callback?: (data: AVMetadata) => void) +off(type: 'validCommandChange', callback?: (commands: Array\) => void) -Unsubscribes from metadata changes. This API is called by the controller. +Unsubscribes from valid command change events. This API is called by the controller. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------ | ---- | ------------------------------------------------------ | -| type | string | Yes | Event type. The event **'metadataChange'** is reported when the session metadata changes. | -| callback | (data: [AVMetadata](#avmetadata10)) => void | No | Callback used for subscription. The **data** parameter in the callback indicates the changed metadata.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- | +| type | string | Yes | Event type, which is **'validCommandChange'** in this case. | +| callback | (commands: Array<[AVControlCommandType](#avcontrolcommandtype10)\>) => void | No | Callback used for unsubscription. The **commands** parameter in the callback is a set of valid commands.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). -| ID| Error Message| +| ID| Error Message | | -------- | ---------------- | | 6600101 | Session service exception. | | 6600103 | The session controller does not exist. | @@ -4045,59 +6470,61 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.off('metadataChange'); +avsessionController.off('validCommandChange'); ``` -### off('playbackStateChange')10+ +### on('outputDeviceChange')10+ -off(type: 'playbackStateChange', callback?: (state: AVPlaybackState) => void) +on(type: 'outputDeviceChange', callback: (state: ConnectionState, device: OutputDeviceInfo) => void): void -Unsubscribes from playback state changes. This API is called by the controller. +Subscribes to output device change events. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- | -| type | string | Yes | Event type. The event **'playbackStateChange'** is reported when the playback state changes. | -| callback | (state: [AVPlaybackState](#avplaybackstate10)) => void | No | Callback used for subscription. The **state** parameter in the callback indicates the changed playback state.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'outputDeviceChange'** is triggered when the output device changes.| +| callback | (state: [ConnectionState](#connectionstate10), device: [OutputDeviceInfo](#outputdeviceinfo10)) => void | Yes | Callback used for subscription. The **device** parameter in the callback indicates the output device information. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ---------------- | +| -------- | ----------------------- | | 6600101 | Session service exception. | | 6600103 | The session controller does not exist. | **Example** ```js -controller.off('playbackStateChange'); +avsessionController.on('outputDeviceChange', (state, device) => { + console.info(`on outputDeviceChange state: ${state}, device : ${device}`); +}); ``` -### off('sessionEvent')10+ +### off('outputDeviceChange')10+ -off(type: 'sessionEvent', callback?: (sessionEvent: string, args: {[key:string]: Obejct}) => void): void +off(type: 'outputDeviceChange', callback?: (state: ConnectionState, device: OutputDeviceInfo) => void): void -Unsubscribes from session event changes. This API is called by the controller. +Unsubscribes from output device change events. This API is called by the controller. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- | -| type | string | Yes | Event type. The value is fixed at **'sessionEvent'**. | -| callback | (sessionEvent: string, args: {[key:string]: object}) => void | No | Callback used for unsubscription. **sessionEvent** in the callback indicates the name of the session event that changes, and **args** indicates the parameters carried in the event.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------- | ---- | ------------------------------------------------------ | +| type | string | Yes | Event type, which is **'outputDeviceChange'** in this case. | +| callback | (state: [ConnectionState](#connectionstate10), device: [OutputDeviceInfo](#outputdeviceinfo10)) => void | No | Callback used for unsubscription. The **device** parameter in the callback indicates the output device information.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). -| ID| Error Message| +| ID | Error Message | | -------- | ---------------- | | 6600101 | Session service exception. | | 6600103 | The session controller does not exist. | @@ -4105,53 +6532,55 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.off('sessionEvent'); +avsessionController.off('outputDeviceChange'); ``` -### off('queueItemsChange')10+ +### on('sessionEvent')10+ -off(type: 'queueItemsChange', callback?: (items: Array<[AVQueueItem](#avqueueitem10)\>) => void): void +on(type: 'sessionEvent', callback: (sessionEvent: string, args: {[key:string]: Object}) => void): void -Unsubscribes from playback item changes. This API is called by the controller. +Subscribes to session event change events. This API is called by the controller. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ---------------------------------------------------- | ---- | --------------------------------------------------------------------------------------------------- | -| type | string | Yes | Event type. The value is fixed at **'queueItemsChange'**. | -| callback | (items: Array<[AVQueueItem](#avqueueitem10)\>) => void | No | Callback used for unsubscription. The **items** parameter in the callback indicates the changed items in the playback.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session.| +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'sessionEvent'** is triggered when the session event changes.| +| callback | (sessionEvent: string, args: {[key:string]: object}) => void | Yes | Callback used for subscription. **sessionEvent** in the callback indicates the name of the session event that changes, and **args** indicates the parameters carried in the event. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ---------------- | +| -------- | ------------------------------ | | 6600101 | Session service exception. | | 6600103 | The session controller does not exist. | **Example** ```js -controller.off('queueItemsChange'); +avsessionController.on('sessionEvent', (sessionEvent, args) => { + console.info(`OnSessionEvent, sessionEvent is ${sessionEvent}, args: ${JSON.stringify(args)}`); +}); ``` -### off('queueTitleChange')10+ +### off('sessionEvent')10+ -off(type: 'queueTitleChange', callback?: (title: string) => void): void +off(type: 'sessionEvent', callback?: (sessionEvent: string, args: {[key:string]: Object}) => void): void -Unsubscribes from playlist name changes. This API is called by the controller. +Unsubscribes from session event change events. This API is called by the controller. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ----------------------- | ---- | ------------------------------------------------------------------------------------------------------- | -| type | string | Yes | Event type. The value is fixed at **'queueTitleChange'**. | -| callback | (title: string) => void | No | Callback used for unsubscription. The **items** parameter in the callback indicates the changed playlist name.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session.| +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- | +| type | string | Yes | Event type, which is **'sessionEvent'** in this case. | +| callback | (sessionEvent: string, args: {[key:string]: Object}) => void | No | Callback used for unsubscription. **sessionEvent** in the callback indicates the name of the session event that changes, and **args** indicates the parameters carried in the event.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | **Error codes** @@ -4165,54 +6594,55 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.off('queueTitleChange'); +avsessionController.off('sessionEvent'); ``` -### off('extrasChange')10+ +### on('queueItemsChange')10+ -off(type: 'extrasChange', callback?: (extras: {[key:string]: Object}) => void): void +on(type: 'queueItemsChange', callback: (items: Array<[AVQueueItem](#avqueueitem10)\>) => void): void -Unsubscribes from custom media packet changes. This API is called by the controller. +Subscribes to playlist item change events. This API is called by the controller. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ----------------------- | ---- | ------------------------------------------------------------------------------------------------------- | -| type | string | Yes | Event type. The value is fixed at **'extrasChange'**. | -| callback | ({[key:string]: Object}) => void | No | Callback used for unsubscription.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session.| +| Name | Type | Mandatory| Description | +| -------- | ----------------------------------------------------- | ---- | ---------------------------------------------------------------------------- | +| type | string | Yes | Event type. The event **'queueItemsChange'** is triggered when one or more items in the playlist changes.| +| callback | (items: Array<[AVQueueItem](#avqueueitem10)\>) => void | Yes | Callback used for subscription. The **items** parameter in the callback indicates the changed items in the playlist. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ---------------- | -| 6600101 | Session service exception. | +| -------- | ------------------------------ | +| 6600101 | Session service exception. | | 6600103 | The session controller does not exist. | -| 401 | Parameter check failed | **Example** ```js -controller.off('extrasChange'); +avsessionController.on('queueItemsChange', (items) => { + console.info(`OnQueueItemsChange, items length is ${items.length}`); +}); ``` -### off('sessionDestroy')10+ +### off('queueItemsChange')10+ -off(type: 'sessionDestroy', callback?: () => void) +off(type: 'queueItemsChange', callback?: (items: Array<[AVQueueItem](#avqueueitem10)\>) => void): void -Unsubscribes from the session destruction event. This API is called by the controller. +Unsubscribes from playback item change events. This API is called by the controller. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ---------- | ---- | ----------------------------------------------------- | -| type | string | Yes | Event type. The event **'sessionDestroy'** is reported when the session is destroyed. | -| callback | () => void | No | Callback used for unsubscription. If the unsubscription is successful, **err** is **undefined**; otherwise, **err** is an error object.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | +| Name | Type | Mandatory| Description | +| -------- | ---------------------------------------------------- | ---- | --------------------------------------------------------------------------------------------------- | +| type | string | Yes | Event type, which is **'queueItemsChange'** in this case. | +| callback | (items: Array<[AVQueueItem](#avqueueitem10)\>) => void | No | Callback used for unsubscription. The **items** parameter in the callback indicates the changed items in the playlist.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session.| **Error codes** @@ -4226,59 +6656,61 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.off('sessionDestroy'); +avsessionController.off('queueItemsChange'); ``` -### off('activeStateChange')10+ +### on('queueTitleChange')10+ -off(type: 'activeStateChange', callback?: (isActive: boolean) => void) +on(type: 'queueTitleChange', callback: (title: string) => void): void -Unsubscribes from session activation state changes. This API is called by the controller. +Subscribes to playlist name change events. This API is called by the controller. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | --------------------------- | ---- | ----------------------------------------------------- | -| type | string | Yes | Event type. The event **'activeStateChange'** is reported when the session activation state changes. | -| callback | (isActive: boolean) => void | No | Callback used for unsubscription. The **isActive** parameter in the callback specifies whether the session is activated. The value **true** means that the session is activated, and **false** means the opposite.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | +| Name | Type | Mandatory| Description | +| -------- | ----------------------- | ---- | ------------------------------------------------------------------------------- | +| type | string | Yes | Event type. The event **'queueTitleChange'** is triggered when the playlist name changes.| +| callback | (title: string) => void | Yes | Callback used for subscription. The **title** parameter in the callback indicates the changed playlist name. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). | ID| Error Message| -| -------- | ---------------- | +| -------- | ------------------------------ | | 6600101 | Session service exception. | | 6600103 | The session controller does not exist. | **Example** ```js -controller.off('activeStateChange'); +avsessionController.on('queueTitleChange', (title) => { + console.info(`queueTitleChange, title is ${title}`); +}); ``` -### off('validCommandChange')10+ +### off('queueTitleChange')10+ -off(type: 'validCommandChange', callback?: (commands: Array\) => void) +off(type: 'queueTitleChange', callback?: (title: string) => void): void -Unsubscribes from valid command changes. This API is called by the controller. +Unsubscribes from playlist name change events. This API is called by the controller. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- | -| type | string | Yes | Event type. The event **'validCommandChange'** is reported when the supported commands change. | -| callback | (commands: Array<[AVControlCommandType](#avcontrolcommandtype10)\>) => void | No | Callback used for unsubscription. The **commands** parameter in the callback is a set of valid commands.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | +| Name | Type | Mandatory| Description | +| -------- | ----------------------- | ---- | ------------------------------------------------------------------------------------------------------- | +| type | string | Yes | Event type, which is **'queueTitleChange'** in this case. | +| callback | (title: string) => void | No | Callback used for unsubscription. The **items** parameter in the callback indicates the changed playlist name.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session.| **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). -| ID| Error Message | +| ID| Error Message| | -------- | ---------------- | | 6600101 | Session service exception. | | 6600103 | The session controller does not exist. | @@ -4286,82 +6718,70 @@ For details about the error codes, see [AVSession Management Error Codes](../err **Example** ```js -controller.off('validCommandChange'); +avsessionController.off('queueTitleChange'); ``` -### off('outputDeviceChange')10+ +### on('extrasChange')10+ -off(type: 'outputDeviceChange', callback?: (device: OutputDeviceInfo) => void): void +on(type: 'extrasChange', callback: (extras: {[key:string]: Object}) => void): void -Unsubscribes from output device changes. This API is called by the controller. +Subscribes to custom media packet change events. This API is called by the controller. **System capability**: SystemCapability.Multimedia.AVSession.Core **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------------------------------------------------------- | ---- | ------------------------------------------------------ | -| type | string | Yes | Event type. The event **'outputDeviceChange'** is reported when the output device changes. | -| callback | (device: [OutputDeviceInfo](#outputdeviceinfo10)) => void | No | Callback used for unsubscription. The **device** parameter in the callback indicates the output device information.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session. | +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | +| type | string | Yes | Event type. The event **'extrasChange'** is triggered when the provider sets a custom media packet.| +| callback | (extras: {[key:string]: object}) => void | Yes | Callback used for subscription. The **extras** parameter in the callback indicates the custom media packet set by the provider. This packet is the same as that set in **dispatchSessionEvent**. | **Error codes** For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). -| ID | Error Message | -| -------- | ---------------- | +| ID| Error Message| +| -------- | ------------------------------ | | 6600101 | Session service exception. | | 6600103 | The session controller does not exist. | **Example** ```js -controller.off('outputDeviceChange'); +avsessionController.on('extrasChange', (extras) => { + console.info(`Caught extrasChange event,the new extra is: ${JSON.stringify(extras)}`); +}); ``` -## SessionToken - -Describes the information about a session token. - -**Required permissions**: ohos.permission.MANAGE_MEDIA_RESOURCES (available only to system applications) - -**System capability**: SystemCapability.Multimedia.AVSession.Manager - -**System API**: This is a system API. +### off('extrasChange')10+ -| Name | Type | Mandatory| Description | -| :-------- | :----- | :--- | :----------- | -| sessionId | string | Yes | Session ID. | -| pid | number | Yes | Process ID of the session.| -| uid | number | Yes | User ID. | +off(type: 'extrasChange', callback?: (extras: {[key:string]: Object}) => void): void -## AVSessionType10+ -Enumerates the session types supported by the session. +Unsubscribes from custom media packet change events. This API is called by the controller. **System capability**: SystemCapability.Multimedia.AVSession.Core -| Name | Type | Description| -| ----- | ------ | ---- | -| audio | string | Audio session.| -| video | string | Video session.| +**Parameters** -## AVSessionDescriptor +| Name | Type | Mandatory| Description | +| -------- | ----------------------- | ---- | ------------------------------------------------------------------------------------------------------- | +| type | string | Yes | Event type, which is **'extrasChange'** in this case. | +| callback | ({[key:string]: Object}) => void | No | Callback used for unsubscription.
The **callback** parameter is optional. If it is not specified, all the subscriptions to the specified event are canceled for this session.| -Declares the session descriptor. +**Error codes** -**System capability**: SystemCapability.Multimedia.AVSession.Manager +For details about the error codes, see [AVSession Management Error Codes](../errorcodes/errorcode-avsession.md). -**System API**: This is a system API. +| ID| Error Message| +| -------- | ---------------- | +| 6600101 | Session service exception. | +| 6600103 | The session controller does not exist. | + +**Example** -| Name | Type | Readable| Writable| Description | -| ------------ | ------------------------------------------------------------ | ---- | --------------------------------------------------- | --------------------------------------------------- | -| sessionId | string | Yes | No| Session ID. | -| type | [AVSessionType](#avsessiontype10) | Yes | No | Session type. | -| sessionTag | string | Yes | No | Custom session name. | -| elementName | [ElementName](js-apis-bundle-ElementName.md) | Yes | No | Information about the application to which the session belongs, including the bundle name and ability name.| -| isActive | boolean | Yes | No | Whether the session is activated. | -| isTopSession | boolean | Yes | No | Whether the session is the top session. | -| outputDevice | [OutputDeviceInfo](#outputdeviceinfo10) | Yes | No | Information about the output device. | +```js +avsessionController.off('extrasChange'); +``` ## AVControlCommandType10+ @@ -4394,142 +6814,20 @@ Describes the command that can be sent to the session. | command | [AVControlCommandType](#avcontrolcommandtype10) | Yes | Command. | | parameter | [LoopMode](#loopmode10) | string | number | No | Parameters carried in the command.| -## AVMetadata10+ - -Describes the media metadata. - -**System capability**: SystemCapability.Multimedia.AVSession.Core - -| Name | Type | Mandatory| Description | -| --------------- |-------------------------| ---- |---------------------------------------------------------------------| -| assetId | string | Yes | Media ID. | -| title | string | No | Title. | -| artist | string | No | Artist. | -| author | string | No | Author. | -| album | string | No | Album name. | -| writer | string | No | Writer. | -| composer | string | No | composer. | -| duration | number | No | Media duration, in ms. | -| mediaImage | image.PixelMap | string | No | Pixel map or image path (local path or network path) of the image. | -| publishDate | Date | No | Release date. | -| subtitle | string | No | Subtitle. | -| description | string | No | Media description. | -| lyric | string | No | Lyric file path (local path or network path).| -| previousAssetId | string | No | ID of the previous media asset. | -| nextAssetId | string | No | ID of the next media asset. | - -## AVMediaDescription10+ - -Describes the attributes related to the media metadata of the playlist. - -**System capability**: SystemCapability.Multimedia.AVSession.Core - -| Name | Type | Mandatory | Description | -| ------------ | ----------------------- | ---- | ----------------------- | -| mediaId | string | Yes | Media ID of the playlist. | -| title | string | No | Name of the playlist. | -| subtitle | string | No | Subname of the playlist. | -| description | string | No | Description of the playlist. | -| icon | image.PixelMap | No | Pixel map of the image of the playlist.| -| iconUri | string | No | Path of the image of the playlist.| -| extras | {[key: string]: any} | No | Additional fields of the playlist. | -| mediaUri | string | No | Media URI. | - -## AVQueueItem10+ - -Describes the attributes of an item in the playlist. - -**System capability**: SystemCapability.Multimedia.AVSession.Core - -| Name | Type | Mandatory| Description | -| ------------ | ------------------------------------------ | ---- | --------------------------- | -| itemId | number | Yes | ID of an item in the playlist. | -| description | [AVMediaDescription](#avmediadescription10) | Yes | Media metadata of the item in the playlist. | - -## AVPlaybackState10+ - -Describes the information related to the media playback state. - -**System capability**: SystemCapability.Multimedia.AVSession.Core - -| Name | Type | Mandatory| Description | -| ------------ | ------------------------------------- | ---- | ------- | -| state | [PlaybackState](#playbackstate) | No | Playback state.| -| speed | number | No | Playback speed.| -| position | [PlaybackPosition](#playbackposition) | No | Playback position.| -| bufferedTime | number | No | Buffered time.| -| loopMode | [LoopMode](#loopmode10) | No | Loop mode.| -| isFavorite | boolean | No | Whether the media asset is favorited.| -| activeItemId10+ | number | No | ID of the item that is being played.| -| extras10+ | {[key: string]: Object} | No | Custom media data.| - -## PlaybackPosition10+ - -Describes the information related to the playback position. - -**System capability**: SystemCapability.Multimedia.AVSession.Core - -| Name | Type | Mandatory| Description | -| ----------- | ------ | ---- | ------------------ | -| elapsedTime | number | Yes | Elapsed time, in ms.| -| updateTime | number | Yes | Updated time, in ms.| - -## OutputDeviceInfo10+ - -Describes the information related to the output device. - -**System capability**: SystemCapability.Multimedia.AVSession.Core - -| Name | Type | Mandatory| Description | -| ---------- | -------------- | ---- | ---------------------- | -| isRemote | boolean | Yes | Whether the device is connected. | -| audioDeviceId | Array | Yes | IDs of output devices. | -| deviceName | Array | Yes | Names of output devices. | - -## PlaybackState10+ - -Enumerates the media playback states. - -**System capability**: SystemCapability.Multimedia.AVSession.Core - -| Name | Value | Description | -| --------------------------- | ---- | ----------- | -| PLAYBACK_STATE_INITIAL | 0 | Initial. | -| PLAYBACK_STATE_PREPARE | 1 | Preparing. | -| PLAYBACK_STATE_PLAY | 2 | Playing. | -| PLAYBACK_STATE_PAUSE | 3 | Paused. | -| PLAYBACK_STATE_FAST_FORWARD | 4 | Fast-forwarding. | -| PLAYBACK_STATE_REWIND | 5 | Rewinding. | -| PLAYBACK_STATE_STOP | 6 | Stopped. | - - -## LoopMode10+ - -Enumerates the loop modes of media playback. - -**System capability**: SystemCapability.Multimedia.AVSession.Core - -| Name | Value | Description | -| ------------------ | ---- | -------- | -| LOOP_MODE_SEQUENCE | 0 | Sequential playback.| -| LOOP_MODE_SINGLE | 1 | Single loop.| -| LOOP_MODE_LIST | 2 | Playlist loop.| -| LOOP_MODE_SHUFFLE | 3 | Shuffle.| - ## AVSessionErrorCode10+ Enumerates the error codes used in the media session. **System capability**: SystemCapability.Multimedia.AVSession.Core -| Name | Value | Description | -| ------------------------------ | ------- | ------------------------------- | -| ERR_CODE_SERVICE_EXCEPTION | 6600101 | Session service exception. | -| ERR_CODE_SESSION_NOT_EXIST | 6600102 | The session does not exist. | -| ERR_CODE_CONTROLLER_NOT_EXIST | 6600103 | The session controller does not exist. | -| ERR_CODE_REMOTE_CONNECTION_ERR | 6600104 | The remote session connection failed. | -| ERR_CODE_COMMAND_INVALID | 6600105 | Invalid session command. | -| ERR_CODE_SESSION_INACTIVE | 6600106 | The session is not activated. | -| ERR_CODE_MESSAGE_OVERLOAD | 6600107 | Too many commands or events. | - - +| Name | Value | Description | +| -------------------------------------- | ------- | ------------------------------- | +| ERR_CODE_SERVICE_EXCEPTION | 6600101 | Session service exception. | +| ERR_CODE_SESSION_NOT_EXIST | 6600102 | The session does not exist. | +| ERR_CODE_CONTROLLER_NOT_EXIST | 6600103 | The session controller does not exist. | +| ERR_CODE_REMOTE_CONNECTION_ERR | 6600104 | The remote session connection failed. | +| ERR_CODE_COMMAND_INVALID | 6600105 | Invalid session command. | +| ERR_CODE_SESSION_INACTIVE | 6600106 | The session is not activated. | +| ERR_CODE_MESSAGE_OVERLOAD | 6600107 | Too many commands or events. | +| ERR_CODE_DEVICE_CONNECTION_FAILED | 6600108 | Device connecting failed. | +| ERR_CODE_REMOTE_CONNECTION_NOT_EXIST | 6600109 | The remote connection is not established. |