1# @ohos.multimedia.avsession (媒体会话管理) 2 3媒体会话管理提供媒体播控相关功能的接口,目的是让应用接入播控中心。 4 5该模块提供以下媒体会话相关的常用功能: 6- [AVSession](#avsession) : 会话,可用于设置元数据、播放状态信息等操作。 7- [AVSessionController](#avsessioncontroller): 会话控制器,可用于查看会话ID,完成对会话发送命令及事件,获取会话元数据、播放状态信息等操作。 8 9> **说明:** 10> 11> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 12 13> 本模块的所有接口均为系统接口。 14 15## 导入模块 16 17```js 18import avSession from '@ohos.multimedia.avsession'; 19``` 20 21## avSession.createAVSession 22 23createAVSession(context: Context, tag: string, type: AVSessionType): Promise\<AVSession> 24 25创建会话对象,一个Ability只能存在一个会话,重复创建会失败,结果通过Promise异步回调方式返回。 26 27**系统能力:** SystemCapability.Multimedia.AVSession.Core 28 29**系统接口:** 该接口为系统接口 30 31**参数:** 32 33| 参数名 | 类型 | 必填 | 说明 | 34| ------ | ------------------------------- | ---- | ------------------------------ | 35| context| [Context](js-apis-inner-app-context.md) | 是| 应用上下文,提供获取应用程序环境信息的能力。 | 36| tag | string | 是 | 会话的自定义名称。 | 37| type | [AVSessionType](#avsessiontype) | 是 | 会话类型,当前支持音频和视频。 | 38 39 40**返回值:** 41 42| 类型 | 说明 | 43| --------------------------------- | ------------------------------------------------------------ | 44| Promise<[AVSession](#avsession)\> | Promise对象。回调返回会话实例对象,可用于获取会话ID,以及设置元数据、播放状态,发送按键事件等操作。| 45 46 47**错误码:** 48以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 49 50| 错误码ID | 错误信息 | 51| -------- | ---------------------------------------- | 52| 6600101 | Session service exception. | 53 54**示例:** 55 56```js 57import featureAbility from '@ohos.ability.featureAbility'; 58 59let session; 60let tag = "createNewSession"; 61let context = featureAbility.getContext(); 62 63await avSession.createAVSession(context, tag, "audio").then((data) => { 64 session = data; 65 console.info(`CreateAVSession : SUCCESS : sessionId = ${session.sessionId}`); 66}).catch((err) => { 67 console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); 68}); 69``` 70 71## avSession.createAVSession 72 73createAVSession(context: Context, tag: string, type: AVSessionType, callback: AsyncCallback\<AVSession>): void 74 75创建会话对象,一个Ability只能存在一个会话,重复创建会失败,结果通过callback异步回调方式返回。 76 77**系统能力:** SystemCapability.Multimedia.AVSession.Core 78 79**系统接口:** 该接口为系统接口 80 81**参数:** 82 83| 参数名 | 类型 | 必填 | 说明 | 84| -------- | --------------------------------------- | ---- | ------------------------------------------------------------ | 85| context| [Context](js-apis-inner-app-context.md) | 是| 应用上下文,提供获取应用程序环境信息的能力。 | 86| tag | string | 是 | 会话的自定义名称。 | 87| type | [AVSessionType](#avsessiontype) | 是 | 会话类型,当前支持音频和视频。 | 88| callback | AsyncCallback<[AVSession](#avsession)\> | 是 | 回调函数。回调返回会话实例对象,可用于获取会话ID,以及设置元数据、播放状态,发送按键事件等操作。 | 89 90**错误码:** 91以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 92 93| 错误码ID | 错误信息 | 94| -------- | ---------------------------------------- | 95| 6600101 | Session service exception. | 96 97**示例:** 98 99```js 100import featureAbility from '@ohos.ability.featureAbility'; 101 102let session; 103let tag = "createNewSession"; 104let context = featureAbility.getContext(); 105 106avSession.createAVSession(context, tag, "audio", function (err, data) { 107 if (err) { 108 console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); 109 } else { 110 session = data; 111 console.info(`CreateAVSession : SUCCESS : sessionId = ${session.sessionId}`); 112 } 113}); 114``` 115 116## avSession.getAllSessionDescriptors 117 118getAllSessionDescriptors(): Promise\<Array\<Readonly\<AVSessionDescriptor>>> 119 120获取所有会话的相关描述。结果通过Promise异步回调方式返回。 121 122**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。 123 124**系统能力:** SystemCapability.Multimedia.AVSession.Manager 125 126**系统接口:** 该接口为系统接口。 127 128**返回值:** 129 130| 类型 | 说明 | 131| ------------------------------------------------------------ | --------------------------------------------- | 132| Promise\<Array\<Readonly\<[AVSessionDescriptor](#avsessiondescriptor)\>\>\> | Promise对象。返回所有会话描述的只读对象。 | 133 134**错误码:** 135以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 136 137| 错误码ID | 错误信息 | 138| -------- | ---------------------------------------- | 139| 6600101 | Session service exception. | 140 141**示例:** 142 143```js 144avSession.getAllSessionDescriptors().then((descriptors) => { 145 console.info(`getAllSessionDescriptors : SUCCESS : descriptors.length : ${descriptors.length}`); 146 if(descriptors.length > 0 ){ 147 console.info(`getAllSessionDescriptors : SUCCESS : descriptors[0].isActive : ${descriptors[0].isActive}`); 148 console.info(`GetAllSessionDescriptors : SUCCESS : descriptors[0].type : ${descriptors[0].type}`); 149 console.info(`GetAllSessionDescriptors : SUCCESS : descriptors[0].sessionTag : ${descriptors[0].sessionTag}`); 150 } 151}).catch((err) => { 152 console.info(`GetAllSessionDescriptors BusinessError: code: ${err.code}, message: ${err.message}`); 153}); 154``` 155 156## avSession.getAllSessionDescriptors 157 158getAllSessionDescriptors(callback: AsyncCallback\<Array\<Readonly\<AVSessionDescriptor>>>): void 159 160获取所有会话的相关描述。结果通过callback异步回调方式返回。 161 162**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。 163 164**系统能力:** SystemCapability.Multimedia.AVSession.Manager 165 166**系统接口:** 该接口为系统接口。 167 168**参数:** 169 170| 参数名 | 类型 | 必填 | 说明 | 171| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ | 172| callback | AsyncCallback<Array<Readonly<[AVSessionDescriptor](#avsessiondescriptor)\>\>\> | 是 | 回调函数。返回所有会话描述的只读对象。 | 173 174**错误码:** 175以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 176 177| 错误码ID | 错误信息 | 178| -------- | ---------------------------------------- | 179| 6600101 |Session service exception. | 180 181**示例:** 182 183```js 184avSession.getAllSessionDescriptors(function (err, descriptors) { 185 if (err) { 186 console.info(`GetAllSessionDescriptors BusinessError: code: ${err.code}, message: ${err.message}`); 187 } else { 188 console.info(`GetAllSessionDescriptors : SUCCESS : descriptors.length : ${descriptors.length}`); 189 if(descriptors.length > 0 ){ 190 console.info(`getAllSessionDescriptors : SUCCESS : descriptors[0].isActive : ${descriptors[0].isActive}`); 191 console.info(`getAllSessionDescriptors : SUCCESS : descriptors[0].type : ${descriptors[0].type}`); 192 console.info(`getAllSessionDescriptors : SUCCESS : descriptors[0].sessionTag : ${descriptors[0].sessionTag}`); 193 } 194 } 195}); 196``` 197 198## avSession.createController 199 200createController(sessionId: string): Promise\<AVSessionController> 201 202根据会话ID创建会话控制器,可以创建多个会话控制器。结果通过Promise异步回调方式返回。 203 204**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。 205 206**系统能力:** SystemCapability.Multimedia.AVSession.Manager 207 208**系统接口:** 该接口为系统接口。 209 210**参数:** 211 212| 参数名 | 类型 | 必填 | 说明 | 213| --------- | ------ | ---- | -------- | 214| sessionId | string | 是 | 会话ID。 | 215 216**返回值:** 217 218| 类型 | 说明 | 219| ----------------------------------------------------- | ------------------------------------------------------------ | 220| Promise<[AVSessionController](#avsessioncontroller)\> | Promise对象。返回会话控制器实例,可查看会话ID,<br>并完成对会话发送命令及事件,获取元数据、播放状态信息等操作。| 221 222**错误码:** 223以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 224 225| 错误码ID | 错误信息 | 226| -------- | ---------------------------------------- | 227| 6600101 | Session service exception. | 228| 6600102 | The session does not exist. | 229 230**示例:** 231 232```js 233import featureAbility from '@ohos.ability.featureAbility'; 234 235let session; 236let tag = "createNewSession"; 237let context = featureAbility.getContext(); 238 239await avSession.createAVSession(context, tag, "audio").then((data) => { 240 session = data; 241 console.info(`CreateAVSession : SUCCESS : sessionId = ${session.sessionId}`); 242}).catch((err) => { 243 console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); 244}); 245 246let controller; 247await avSession.createController(session.sessionId).then((avcontroller) => { 248 controller = avcontroller; 249 console.info(`CreateController : SUCCESS : ${controller.sessionId}`); 250}).catch((err) => { 251 console.info(`CreateController BusinessError: code: ${err.code}, message: ${err.message}`); 252}); 253``` 254 255## avSession.createController 256 257createController(sessionId: string, callback: AsyncCallback\<AVSessionController>): void 258 259根据会话ID创建会话控制器,可以创建多个会话控制器。结果通过callback异步回调方式返回。 260 261**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。 262 263**系统能力:** SystemCapability.Multimedia.AVSession.Manager 264 265**系统接口:** 该接口为系统接口。 266 267**参数:** 268 269| 参数名 | 类型 | 必填 | 说明 | 270| --------- | ----------------------------------------------------------- | ---- | ------------------------------------------------------------ | 271| sessionId | string | 是 | 会话ID。 | 272| callback | AsyncCallback<[AVSessionController](#avsessioncontroller)\> | 是 | 回调函数。返回会话控制器实例,可查看会话ID,<br>并完成对会话发送命令及事件,获取元数据、播放状态信息等操作。 | 273 274**错误码:** 275以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 276 277| 错误码ID | 错误信息 | 278| -------- | ---------------------------------------- | 279| 6600101 | Session service exception. | 280| 6600102 | The session does not exist. | 281 282**示例:** 283 284```js 285import featureAbility from '@ohos.ability.featureAbility'; 286 287let session; 288let tag = "createNewSession"; 289let context = featureAbility.getContext(); 290 291await avSession.createAVSession(context, tag, "audio").then((data) => { 292 session = data; 293 console.info(`CreateAVSession : SUCCESS : sessionId = ${session.sessionId}`); 294}).catch((err) => { 295 console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`); 296}); 297 298let controller; 299avSession.createController(session.sessionId, function (err, avcontroller) { 300 if (err) { 301 console.info(`CreateController BusinessError: code: ${err.code}, message: ${err.message}`); 302 } else { 303 controller = avcontroller; 304 console.info(`CreateController : SUCCESS : ${controller.sessionId}`); 305 } 306}); 307``` 308 309## avSession.castAudio 310 311castAudio(session: SessionToken | 'all', audioDevices: Array<audio.AudioDeviceDescriptor>): Promise\<void> 312 313投播会话到指定设备列表。结果通过Promise异步回调方式返回。 314 315调用此接口之前,需要导入`ohos.multimedia.audio`模块获取AudioDeviceDescriptor的相关描述。 316 317**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。 318 319**系统能力:** SystemCapability.Multimedia.AVSession.Manager 320 321**系统接口:** 该接口为系统接口。 322 323**参数:** 324 325| 参数名 | 类型 | 必填 | 说明 | 326| ------------ |--------------------------------------------------------------------------------------------------------------------------------------------------------------------| ---- | ------------------------------------------------------------ | 327| session | [SessionToken](#sessiontoken) | 'all' | 是 | 会话令牌。SessionToken表示单个token;字符串`'all'`指所有token。 | 328| audioDevices | Array\<[audio.AudioDeviceDescriptor](js-apis-audio.md#audiodevicedescriptor)\> | 是 | 媒体设备列表。 | 329 330**返回值:** 331 332| 类型 | 说明 | 333| -------------- | ----------------------------- | 334| Promise<void\> | Promise对象。当投播成功,无返回结果,否则返回错误对象。 | 335 336**错误码:** 337以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 338 339| 错误码ID | 错误信息 | 340| -------- | ---------------------------------------- | 341| 6600101 | Session service exception. | 342| 6600102 | The session does not exist. | 343| 6600104 | The remote session connection failed. | 344 345**示例:** 346 347```js 348import audio from '@ohos.multimedia.audio'; 349 350let audioManager = audio.getAudioManager(); 351let audioRoutingManager = audioManager.getRoutingManager(); 352let audioDevices; 353await audioRoutingManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((data) => { 354 audioDevices = data; 355 console.info('Promise returned to indicate that the device list is obtained.'); 356}).catch((err) => { 357 console.info(`GetDevices BusinessError: code: ${err.code}, message: ${err.message}`); 358}); 359 360avSession.castAudio('all', audioDevices).then(() => { 361 console.info('CreateController : SUCCESS'); 362}).catch((err) => { 363 console.info(`CreateController BusinessError: code: ${err.code}, message: ${err.message}`); 364}); 365``` 366 367## avSession.castAudio 368 369castAudio(session: SessionToken | 'all', audioDevices: Array<audio.AudioDeviceDescriptor>, callback: AsyncCallback\<void>): void 370 371投播会话到指定设备列表。结果通过callback异步回调方式返回。 372 373需要导入`ohos.multimedia.audio`模块获取AudioDeviceDescriptor的相关描述。 374 375**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。 376 377**系统能力:** SystemCapability.Multimedia.AVSession.Manager 378 379**系统接口:** 该接口为系统接口。 380 381**参数:** 382 383| 参数名 | 类型 | 必填 | 说明 | 384| ------------ |--------------------------------------------| ---- | ------------------------------------------------------------ | 385| session | [SessionToken](#sessiontoken) | 'all' | 是 | 会话令牌。SessionToken表示单个token;字符串`'all'`指所有token。 | 386| audioDevices | Array\<[audio.AudioDeviceDescriptor](js-apis-audio.md#audiodevicedescriptor)\> | 是 | 媒体设备列表。 | 387| callback | AsyncCallback<void\> | 是 | 回调函数。当投播成功,err为undefined,否则返回错误对象。 | 388 389**错误码:** 390以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 391 392| 错误码ID | 错误信息 | 393| -------- | ---------------------------------------- | 394| 6600101 | Session service exception. | 395| 6600102 | The session does not exist. | 396| 6600104 | The remote session connection failed. | 397 398**示例:** 399 400```js 401import audio from '@ohos.multimedia.audio'; 402 403let audioManager = audio.getAudioManager(); 404let audioRoutingManager = audioManager.getRoutingManager(); 405let audioDevices; 406await audioRoutingManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((data) => { 407 audioDevices = data; 408 console.info('Promise returned to indicate that the device list is obtained.'); 409}).catch((err) => { 410 console.info(`GetDevices BusinessError: code: ${err.code}, message: ${err.message}`); 411}); 412 413avSession.castAudio('all', audioDevices, function (err) { 414 if (err) { 415 console.info(`CastAudio BusinessError: code: ${err.code}, message: ${err.message}`); 416 } else { 417 console.info('CastAudio : SUCCESS '); 418 } 419}); 420``` 421 422## avSession.on('sessionCreate' | 'sessionDestroy' | 'topSessionChange') 423 424on(type: 'sessionCreate' | 'sessionDestroy' | 'topSessionChange', callback: (session: AVSessionDescriptor) => void): void 425 426会话的创建、销毁以及最新会话变更的监听事件。 427 428**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。 429 430**系统能力:** SystemCapability.Multimedia.AVSession.Manager 431 432**系统接口:** 该接口为系统接口。 433 434**参数:** 435 436| 参数名 | 类型 | 必填 | 说明 | 437| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 438| type | string | 是 | 事件回调类型,支持的事件包括:<br/>- `'sessionCreate'`:会话创建事件,检测到会话创建时触发。<br/>- `'sessionDestroy'`:会话销毁事件,检测到会话销毁时触发。 <br/>- `'topSessionChange'`:最新会话的变化事件,检测到最新的会话改变时触发。| 439| callback | (session: [AVSessionDescriptor](#avsessiondescriptor)) => void | 是 | 回调函数。参数为会话相关描述。 | 440 441**错误码:** 442以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 443 444| 错误码ID | 错误信息 | 445| -------- | ---------------------------------------- | 446| 6600101 | Session service exception. | 447 448**示例:** 449 450```js 451avSession.on('sessionCreate', (descriptor) => { 452 console.info(`on sessionCreate : isActive : ${descriptor.isActive}`); 453 console.info(`on sessionCreate : type : ${descriptor.type}`); 454 console.info(`on sessionCreate : sessionTag : ${descriptor.sessionTag}`); 455}); 456 457avSession.on('sessionDestroy', (descriptor) => { 458 console.info(`on sessionDestroy : isActive : ${descriptor.isActive}`); 459 console.info(`on sessionDestroy : type : ${descriptor.type}`); 460 console.info(`on sessionDestroy : sessionTag : ${descriptor.sessionTag}`); 461}); 462 463avSession.on('topSessionChange', (descriptor) => { 464 console.info(`on topSessionChange : isActive : ${descriptor.isActive}`); 465 console.info(`on topSessionChange : type : ${descriptor.type}`); 466 console.info(`on topSessionChange : sessionTag : ${descriptor.sessionTag}`); 467}); 468``` 469 470## avSession.off('sessionCreate' | 'sessionDestroy' | 'topSessionChange') 471 472off(type: 'sessionCreate' | 'sessionDestroy' | 'topSessionChange', callback?: (session: AVSessionDescriptor) => void): void 473 474取消会话相关事件监听,取消后,不再进行相关事件的监听。 475 476**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。 477 478**系统能力:** SystemCapability.Multimedia.AVSession.Manager 479 480**系统接口:** 该接口为系统接口。 481 482**参数:** 483 484| 参数名 | 类型 | 必填 | 说明 | 485| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 486| type | string | 是 | 事件回调类型,支持的事件为:<br/>- `'sessionCreate'`:会话创建事件,检测到会话创建时触发。<br/>- `'sessionDestroy'`:会话销毁事件,检测到会话销毁时触发。 <br/>- `'topSessionChange'`:最新会话的变化事件,检测到最新的会话改变时触发。| 487| callback | (session: [AVSessionDescriptor](#avsessiondescriptor)) => void | 否 | 回调函数。当监听事件取消成功,err为undefined,否则返回错误对象。<br>该参数为会话相关描述,为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 | 488 489**错误码:** 490以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 491 492| 错误码ID | 错误信息 | 493| -------- | ---------------------------------------- | 494| 6600101 | Session service exception. | 495 496**示例:** 497 498```js 499avSession.off('sessionCreate'); 500avSession.off('sessionDestroy'); 501avSession.off('topSessionChange'); 502``` 503 504## avSession.on('sessionServiceDie') 505 506on(type: 'sessionServiceDie', callback: () => void): void 507 508监听会话的服务死亡事件。 509 510**系统能力:** SystemCapability.Multimedia.AVSession.Core 511 512**系统接口:** 该接口为系统接口 513 514**参数:** 515 516| 参数名 | 类型 | 必填 | 说明 | 517| -------- | -------------------- | ---- | ------------------------------------------------------------ | 518| type | string | 是 | 事件回调类型,支持事件`'sessionServiceDie'`:会话服务死亡事件,检测到会话的服务死亡时触发。 | 519| callback | callback: () => void | 是 | 回调函数。当监听事件注册成功,err为undefined,否则返回错误对象。 | 520 521**错误码:** 522以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 523 524| 错误码ID | 错误信息 | 525| -------- | ---------------------------------------- | 526| 6600101 | Session service exception. | 527 528**示例:** 529 530```js 531avSession.on('sessionServiceDie', () => { 532 console.info('on sessionServiceDie : session is Died '); 533}); 534``` 535 536## avSession.off('sessionServiceDie') 537 538off(type: 'sessionServiceDie', callback?: () => void): void 539 540取消会话服务死亡监听,取消后,不再进行服务死亡监听。 541 542**系统能力:** SystemCapability.Multimedia.AVSession.Core 543 544**系统接口:** 该接口为系统接口 545 546**参数:** 547 548| 参数名 | 类型 | 必填 | 说明 | 549| ------ | ---------------------- | ---- | ------------------------------------------------------- | 550| type | string | 是 | 事件回调类型,支持事件`'sessionServiceDie'`:会话服务死亡事件。| 551| callback | callback: () => void | 否 | 回调函数。当监听事件取消成功,err为undefined,否则返回错误对象。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的服务死亡监听。 | 552 553**错误码:** 554以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 555 556| 错误码ID | 错误信息 | 557| -------- | ---------------------------------------- | 558| 6600101 | Session service exception. | 559 560**示例:** 561 562```js 563avSession.off('sessionServiceDie'); 564``` 565 566## avSession.sendSystemAVKeyEvent 567 568sendSystemAVKeyEvent(event: KeyEvent): Promise\<void> 569 570发送按键事件给置顶会话。结果通过Promise异步回调方式返回。 571 572**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。 573 574**系统能力:** SystemCapability.Multimedia.AVSession.Manager 575 576**系统接口:** 该接口为系统接口。 577 578**参数:** 579 580| 参数名 | 类型 | 必填 | 说明 | 581| ------ | ------------------------------- | ---- | ---------- | 582| event | [KeyEvent](js-apis-keyevent.md) | 是 | 按键事件。 | 583 584**返回值:** 585 586| 类型 | 说明 | 587| -------------- | ----------------------------- | 588| Promise<void\> | Promise对象。当事件发送成功,无返回结果,否则返回错误对象。 | 589 590**错误码:** 591以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 592 593| 错误码ID | 错误信息 | 594| -------- | ---------------------------------------- | 595| 6600101 | Session service exception. | 596| 6600105 | Invalid session command. | 597 598**示例:** 599 600```js 601 602let keyItem = {code:0x49, pressedTime:2, deviceId:0}; 603let 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}; 604 605avSession.sendSystemAVKeyEvent(event).then(() => { 606 console.info('SendSystemAVKeyEvent Successfully'); 607}).catch((err) => { 608 console.info(`SendSystemAVKeyEvent BusinessError: code: ${err.code}, message: ${err.message}`); 609}); 610 611``` 612 613## avSession.sendSystemAVKeyEvent 614 615sendSystemAVKeyEvent(event: KeyEvent, callback: AsyncCallback\<void>): void 616 617发送按键事件给置顶会话。结果通过callback异步回调方式返回。 618 619**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。 620 621**系统能力:** SystemCapability.Multimedia.AVSession.Manager 622 623**系统接口:** 该接口为系统接口。 624 625**参数:** 626 627| 参数名 | 类型 | 必填 | 说明 | 628| -------- | ------------------------------------------------------------ | ---- | ------------------------------------- | 629| event | [KeyEvent](js-apis-keyevent.md) | 是 | 按键事件。 | 630| callback | AsyncCallback<void\> | 是 | 回调函数。当事件发送成功,err为undefined,否则返回错误对象。 | 631 632**错误码:** 633以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 634 635| 错误码ID | 错误信息 | 636| -------- | ---------------------------------------- | 637| 6600101 | Session service exception. | 638| 6600105 | Invalid session command. | 639 640**示例:** 641 642```js 643let keyItem = {code:0x49, pressedTime:2, deviceId:0}; 644let 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}; 645 646avSession.sendSystemAVKeyEvent(event, function (err) { 647 if (err) { 648 console.info(`SendSystemAVKeyEvent BusinessError: code: ${err.code}, message: ${err.message}`); 649 } else { 650 console.info('SendSystemAVKeyEvent : SUCCESS '); 651 } 652}); 653``` 654 655## avSession.sendSystemControlCommand 656 657sendSystemControlCommand(command: AVControlCommand): Promise\<void> 658 659发送控制命令给置顶会话。结果通过Promise异步回调方式返回。 660 661**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。 662 663**系统能力:** SystemCapability.Multimedia.AVSession.Manager 664 665**系统接口:** 该接口为系统接口。 666 667**参数:** 668 669| 参数名 | 类型 | 必填 | 说明 | 670| ------- | ------------------------------------- | ---- | ----------------------------------- | 671| command | [AVControlCommand](#avcontrolcommand) | 是 | AVSession的相关命令和命令相关参数。 | 672 673**返回值:** 674 675| 类型 | 说明 | 676| -------------- | ----------------------------- | 677| Promise<void\> | Promise对象。当命令发送成功,无返回结果,否则返回错误对象。 | 678 679**错误码:** 680以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 681 682| 错误码ID | 错误信息 | 683| -------- | ---------------------------------------- | 684| 6600101 | Session service exception. | 685| 6600105 | Invalid session command. | 686| 6600107 | Too many commands or events. | 687 688**示例:** 689 690```js 691let cmd : avSession.AVControlCommandType = 'play'; 692// let cmd : avSession.AVControlCommandType = 'pause'; 693// let cmd : avSession.AVControlCommandType = 'stop'; 694// let cmd : avSession.AVControlCommandType = 'playNext'; 695// let cmd : avSession.AVControlCommandType = 'playPrevious'; 696// let cmd : avSession.AVControlCommandType = 'fastForward'; 697// let cmd : avSession.AVControlCommandType = 'rewind'; 698let avcommand = {command:cmd}; 699// let cmd : avSession.AVControlCommandType = 'seek'; 700// let avcommand = {command:cmd, parameter:10}; 701// let cmd : avSession.AVControlCommandType = 'setSpeed'; 702// let avcommand = {command:cmd, parameter:2.6}; 703// let cmd : avSession.AVControlCommandType = 'setLoopMode'; 704// let avcommand = {command:cmd, parameter:avSession.LoopMode.LOOP_MODE_SINGLE}; 705// let cmd : avSession.AVControlCommandType = 'toggleFavorite'; 706// let avcommand = {command:cmd, parameter:"false"}; 707avSession.sendSystemControlCommand(avcommand).then(() => { 708 console.info('SendSystemControlCommand successfully'); 709}).catch((err) => { 710 console.info(`SendSystemControlCommand BusinessError: code: ${err.code}, message: ${err.message}`); 711}); 712``` 713 714## avSession.sendSystemControlCommand 715 716sendSystemControlCommand(command: AVControlCommand, callback: AsyncCallback\<void>): void 717 718发送控制命令给置顶会话。结果通过callback异步回调方式返回。 719 720**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。 721 722**系统能力:** SystemCapability.Multimedia.AVSession.Manager 723 724**系统接口:** 该接口为系统接口。 725 726**参数:** 727 728| 参数名 | 类型 | 必填 | 说明 | 729| -------- | ------------------------------------- | ---- | ------------------------------------- | 730| command | [AVControlCommand](#avcontrolcommand) | 是 | AVSession的相关命令和命令相关参数。 | 731| callback | AsyncCallback<void\> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 | 732 733**错误码:** 734以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 735 736| 错误码ID | 错误信息 | 737| -------- | ---------------------------------------- | 738| 6600101 | Session service exception. | 739| 6600105 | Invalid session command. | 740| 6600107 | Too many commands or events. | 741 742**示例:** 743 744```js 745let cmd : avSession.AVControlCommandType = 'play'; 746// let cmd : avSession.AVControlCommandType = 'pause'; 747// let cmd : avSession.AVControlCommandType = 'stop'; 748// let cmd : avSession.AVControlCommandType = 'playNext'; 749// let cmd : avSession.AVControlCommandType = 'playPrevious'; 750// let cmd : avSession.AVControlCommandType = 'fastForward'; 751// let cmd : avSession.AVControlCommandType = 'rewind'; 752let avcommand = {command:cmd}; 753// let cmd : avSession.AVControlCommandType = 'seek'; 754// let avcommand = {command:cmd, parameter:10}; 755// let cmd : avSession.AVControlCommandType = 'setSpeed'; 756// let avcommand = {command:cmd, parameter:2.6}; 757// let cmd : avSession.AVControlCommandType = 'setLoopMode'; 758// let avcommand = {command:cmd, parameter:avSession.LoopMode.LOOP_MODE_SINGLE}; 759// let cmd : avSession.AVControlCommandType = 'toggleFavorite'; 760// let avcommand = {command:cmd, parameter:"false"}; 761avSession.sendSystemControlCommand(avcommand, function (err) { 762 if (err) { 763 console.info(`SendSystemControlCommand BusinessError: code: ${err.code}, message: ${err.message}`); 764 } else { 765 console.info('sendSystemControlCommand successfully'); 766 } 767}); 768``` 769 770## AVSession 771 772调用[avSession.createAVSession](#avsessioncreateavsession)后,返回会话的实例,可以获得会话ID,完成设置元数据,播放状态信息等操作。 773 774### 属性 775 776**系统能力:** SystemCapability.Multimedia.AVSession.Core 777 778**系统接口:** 该接口为系统接口 779 780 781| 名称 | 类型 | 可读 | 可写 | 说明 | 782| :-------- | :----- | :--- | :--- | :---------------------------- | 783| sessionId | string | 是 | 否 | AVSession对象唯一的会话标识。 | 784 785 786**示例:** 787```js 788let sessionId = session.sessionId; 789``` 790 791### setAVMetadata 792 793setAVMetadata(data: AVMetadata): Promise\<void> 794 795设置会话元数据。结果通过Promise异步回调方式返回。 796 797**系统能力:** SystemCapability.Multimedia.AVSession.Core 798 799**系统接口:** 该接口为系统接口 800 801**参数:** 802 803| 参数名 | 类型 | 必填 | 说明 | 804| ------ | ------------------------- | ---- | ------------ | 805| data | [AVMetadata](#avmetadata) | 是 | 会话元数据。 | 806 807**返回值:** 808 809| 类型 | 说明 | 810| -------------- | ----------------------------- | 811| Promise<void\> | Promise对象。当元数据设置成功,无返回结果,否则返回错误对象。 | 812 813**错误码:** 814以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 815 816| 错误码ID | 错误信息 | 817| -------- | ---------------------------------------- | 818| 6600101 | Session service exception. | 819| 6600102 | The session does not exist. | 820 821**示例:** 822 823```js 824let metadata = { 825 assetId: "121278", 826 title: "lose yourself", 827 artist: "Eminem", 828 author: "ST", 829 album: "Slim shady", 830 writer: "ST", 831 composer: "ST", 832 duration: 2222, 833 mediaImage: "https://www.example.com/example.jpg", 834 subtitle: "8 Mile", 835 description: "Rap", 836 lyric: "https://www.example.com/example.lrc", 837 previousAssetId: "121277", 838 nextAssetId: "121279", 839}; 840session.setAVMetadata(metadata).then(() => { 841 console.info('SetAVMetadata successfully'); 842}).catch((err) => { 843 console.info(`SetAVMetadata BusinessError: code: ${err.code}, message: ${err.message}`); 844}); 845``` 846 847### setAVMetadata 848 849setAVMetadata(data: AVMetadata, callback: AsyncCallback\<void>): void 850 851设置会话元数据。结果通过callback异步回调方式返回。 852 853**系统能力:** SystemCapability.Multimedia.AVSession.Core 854 855**系统接口:** 该接口为系统接口 856 857**参数:** 858 859| 参数名 | 类型 | 必填 | 说明 | 860| -------- | ------------------------- | ---- | ------------------------------------- | 861| data | [AVMetadata](#avmetadata) | 是 | 会话元数据。 | 862| callback | AsyncCallback<void\> | 是 | 回调函数。当元数据设置成功,err为undefined,否则返回错误对象。 | 863 864**错误码:** 865以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 866 867| 错误码ID | 错误信息 | 868| -------- | ---------------------------------------- | 869| 6600101 | Session service exception. | 870| 6600102 | The session does not exist. | 871 872**示例:** 873 874```js 875let metadata = { 876 assetId: "121278", 877 title: "lose yourself", 878 artist: "Eminem", 879 author: "ST", 880 album: "Slim shady", 881 writer: "ST", 882 composer: "ST", 883 duration: 2222, 884 mediaImage: "https://www.example.com/example.jpg", 885 subtitle: "8 Mile", 886 description: "Rap", 887 lyric: "https://www.example.com/example.lrc", 888 previousAssetId: "121277", 889 nextAssetId: "121279", 890}; 891session.setAVMetadata(metadata, function (err) { 892 if (err) { 893 console.info(`SetAVMetadata BusinessError: code: ${err.code}, message: ${err.message}`); 894 } else { 895 console.info('SetAVMetadata successfully'); 896 } 897}); 898``` 899 900### setAVPlaybackState 901 902setAVPlaybackState(state: AVPlaybackState): Promise\<void> 903 904设置会话播放状态。结果通过Promise异步回调方式返回。 905 906**系统能力:** SystemCapability.Multimedia.AVSession.Core 907 908**系统接口:** 该接口为系统接口 909 910**参数:** 911 912| 参数名 | 类型 | 必填 | 说明 | 913| ------ | ----------------------------------- | ---- | ---------------------------------------------- | 914| data | [AVPlaybackState](#avplaybackstate) | 是 | 会话播放状态,包括状态、倍数、循环模式等信息。 | 915 916**返回值:** 917 918| 类型 | 说明 | 919| -------------- | ----------------------------- | 920| Promise<void\> | Promise对象。当播放状态设置成功,无返回结果,否则返回错误对象。 | 921 922**错误码:** 923以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 924 925| 错误码ID | 错误信息 | 926| -------- | ---------------------------------------- | 927| 6600101 | Session service exception. | 928| 6600102 | The session does not exist. | 929 930**示例:** 931 932```js 933let playbackState = { 934 state:avSession.PlaybackState.PLAYBACK_STATE_PLAY, 935 speed: 1.0, 936 position:{elapsedTime:10, updateTime:(new Date()).getTime()}, 937 bufferedTime:1000, 938 loopMode:avSession.LoopMode.LOOP_MODE_SINGLE, 939 isFavorite:true, 940}; 941session.setAVPlaybackState(playbackState).then(() => { 942 console.info('SetAVPlaybackState successfully'); 943}).catch((err) => { 944 console.info(`SetAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`); 945}); 946``` 947 948### setAVPlaybackState 949 950setAVPlaybackState(state: AVPlaybackState, callback: AsyncCallback\<void>): void 951 952设置会话播放状态。结果通过callback异步回调方式返回。 953 954**系统能力:** SystemCapability.Multimedia.AVSession.Core 955 956**系统接口:** 该接口为系统接口 957 958**参数:** 959 960| 参数名 | 类型 | 必填 | 说明 | 961| -------- | ----------------------------------- | ---- | ---------------------------------------------- | 962| data | [AVPlaybackState](#avplaybackstate) | 是 | 会话播放状态,包括状态、倍数、循环模式等信息。 | 963| callback | AsyncCallback<void\> | 是 | 回调函数。当播放状态设置成功,err为undefined,否则返回错误对象。 | 964 965**错误码:** 966以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 967 968| 错误码ID | 错误信息 | 969| -------- | ---------------------------------------- | 970| 6600101 | Session service exception. | 971| 6600102 | The session does not exist. | 972 973**示例:** 974 975```js 976let PlaybackState = { 977 state:avSession.PlaybackState.PLAYBACK_STATE_PLAY, 978 speed: 1.0, 979 position:{elapsedTime:10, updateTime:(new Date()).getTime()}, 980 bufferedTime:1000, 981 loopMode:avSession.LoopMode.LOOP_MODE_SINGLE, 982 isFavorite:true, 983}; 984session.setAVPlaybackState(PlaybackState, function (err) { 985 if (err) { 986 console.info(`SetAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`); 987 } else { 988 console.info('SetAVPlaybackState successfully'); 989 } 990}); 991``` 992 993### setLaunchAbility 994 995setLaunchAbility(ability: WantAgent): Promise\<void> 996 997设置一个WantAgent用于拉起会话的Ability。结果通过Promise异步回调方式返回。 998 999**系统能力:** SystemCapability.Multimedia.AVSession.Core 1000 1001**系统接口:** 该接口为系统接口 1002 1003**参数:** 1004 1005| 参数名 | 类型 | 必填 | 说明 | 1006| ------- | --------------------------------- | ---- | ----------------------------------------------------------- | 1007| ability | [WantAgent](js-apis-wantAgent.md) | 是 | 应用的相关属性信息,如bundleName,abilityName,deviceId等。 | 1008 1009**返回值:** 1010 1011| 类型 | 说明 | 1012| -------------- | ----------------------------- | 1013| Promise<void\> | Promise对象。当Ability设置成功,无返回结果,否则返回错误对象。 | 1014 1015**错误码:** 1016以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1017 1018| 错误码ID | 错误信息 | 1019| -------- | ---------------------------------------- | 1020| 6600101 | Session service exception. | 1021| 6600102 | The session does not exist. | 1022 1023**示例:** 1024 1025```js 1026import wantAgent from '@ohos.wantAgent'; 1027 1028//WantAgentInfo对象 1029let wantAgentInfo = { 1030 wants: [ 1031 { 1032 deviceId: "deviceId", 1033 bundleName: "com.neu.setResultOnAbilityResultTest1", 1034 abilityName: "com.example.test.MainAbility", 1035 action: "action1", 1036 entities: ["entity1"], 1037 type: "MIMETYPE", 1038 uri: "key={true,true,false}", 1039 parameters: 1040 { 1041 mykey0: 2222, 1042 mykey1: [1, 2, 3], 1043 mykey2: "[1, 2, 3]", 1044 mykey3: "ssssssssssssssssssssssssss", 1045 mykey4: [false, true, false], 1046 mykey5: ["qqqqq", "wwwwww", "aaaaaaaaaaaaaaaaa"], 1047 mykey6: true, 1048 } 1049 } 1050 ], 1051 operationType: wantAgent.OperationType.START_ABILITIES, 1052 requestCode: 0, 1053 wantAgentFlags:[wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 1054} 1055 1056wantAgent.getWantAgent(wantAgentInfo).then((agent) => { 1057 session.setLaunchAbility(agent).then(() => { 1058 console.info('SetLaunchAbility successfully'); 1059 }).catch((err) => { 1060 console.info(`SetLaunchAbility BusinessError: code: ${err.code}, message: ${err.message}`); 1061 }); 1062}); 1063``` 1064 1065### setLaunchAbility 1066 1067setLaunchAbility(ability: WantAgent, callback: AsyncCallback\<void>): void 1068 1069设置一个WantAgent用于拉起会话的Ability。结果通过callback异步回调方式返回。 1070 1071**系统能力:** SystemCapability.Multimedia.AVSession.Core 1072 1073**系统接口:** 该接口为系统接口 1074 1075**参数:** 1076 1077| 参数名 | 类型 | 必填 | 说明 | 1078| -------- | --------------------------------- | ---- | ----------------------------------------------------------- | 1079| ability | [WantAgent](js-apis-wantAgent.md) | 是 | 应用的相关属性信息,如bundleName,abilityName,deviceId等。 | 1080| callback | AsyncCallback<void\> | 是 | 回调函数。当Ability设置成功,err为undefined,否则返回错误对象。 | 1081 1082**错误码:** 1083以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1084 1085| 错误码ID | 错误信息 | 1086| -------- | ---------------------------------------- | 1087| 6600101 | Session service exception. | 1088| 6600102 | The session does not exist. | 1089 1090**示例:** 1091 1092```js 1093import wantAgent from '@ohos.wantAgent'; 1094 1095//WantAgentInfo对象 1096let wantAgentInfo = { 1097 wants: [ 1098 { 1099 deviceId: "deviceId", 1100 bundleName: "com.neu.setResultOnAbilityResultTest1", 1101 abilityName: "com.example.test.MainAbility", 1102 action: "action1", 1103 entities: ["entity1"], 1104 type: "MIMETYPE", 1105 uri: "key={true,true,false}", 1106 parameters: 1107 { 1108 mykey0: 2222, 1109 mykey1: [1, 2, 3], 1110 mykey2: "[1, 2, 3]", 1111 mykey3: "ssssssssssssssssssssssssss", 1112 mykey4: [false, true, false], 1113 mykey5: ["qqqqq", "wwwwww", "aaaaaaaaaaaaaaaaa"], 1114 mykey6: true, 1115 } 1116 } 1117 ], 1118 operationType: wantAgent.OperationType.START_ABILITIES, 1119 requestCode: 0, 1120 wantAgentFlags:[wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 1121} 1122 1123wantAgent.getWantAgent(wantAgentInfo).then((agent) => { 1124 session.setLaunchAbility(agent, function (err) { 1125 if (err) { 1126 console.info(`SetLaunchAbility BusinessError: code: ${err.code}, message: ${err.message}`); 1127 } else { 1128 console.info('SetLaunchAbility successfully'); 1129 } 1130 }); 1131}); 1132``` 1133 1134### getController 1135 1136getController(): Promise\<AVSessionController> 1137 1138获取本会话对应的控制器。结果通过Promise异步回调方式返回。 1139 1140**系统能力:** SystemCapability.Multimedia.AVSession.Core 1141 1142**系统接口:** 该接口为系统接口 1143 1144**返回值:** 1145 1146| 类型 | 说明 | 1147| ---------------------------------------------------- | ----------------------------- | 1148| Promise<[AVSessionController](#avsessioncontroller)> | Promise对象。返回会话控制器。 | 1149 1150**错误码:** 1151以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1152 1153| 错误码ID | 错误信息 | 1154| -------- | ---------------------------------------- | 1155| 6600101 | Session service exception. | 1156| 6600102 | The session does not exist. | 1157 1158**示例:** 1159 1160```js 1161let controller; 1162session.getController().then((avcontroller) => { 1163 controller = avcontroller; 1164 console.info(`GetController : SUCCESS : sessionid : ${controller.sessionId}`); 1165}).catch((err) => { 1166 console.info(`GetController BusinessError: code: ${err.code}, message: ${err.message}`); 1167}); 1168``` 1169 1170### getController 1171 1172getController(callback: AsyncCallback\<AVSessionController>): void 1173 1174获取本会话相应的控制器。结果通过callback异步回调方式返回。 1175 1176**系统能力:** SystemCapability.Multimedia.AVSession.Core 1177 1178**系统接口:** 该接口为系统接口 1179 1180**参数:** 1181 1182| 参数名 | 类型 | 必填 | 说明 | 1183| -------- | ----------------------------------------------------------- | ---- | -------------------------- | 1184| callback | AsyncCallback<[AVSessionController](#avsessioncontroller)\> | 是 | 回调函数。返回会话控制器。 | 1185 1186**错误码:** 1187以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1188 1189| 错误码ID | 错误信息 | 1190| -------- | ---------------------------------------- | 1191| 6600101 | Session service exception. | 1192| 6600102 | The session does not exist. | 1193 1194**示例:** 1195 1196```js 1197let controller; 1198session.getController(function (err, avcontroller) { 1199 if (err) { 1200 console.info(`GetController BusinessError: code: ${err.code}, message: ${err.message}`); 1201 } else { 1202 controller = avcontroller; 1203 console.info(`GetController : SUCCESS : sessionid : ${controller.sessionId}`); 1204 } 1205}); 1206``` 1207 1208### getOutputDevice 1209 1210getOutputDevice(): Promise\<OutputDeviceInfo> 1211 1212通过会话获取播放设备信息。结果通过Promise异步回调方式返回。 1213 1214**系统能力:** SystemCapability.Multimedia.AVSession.Core 1215 1216**系统接口:** 该接口为系统接口 1217 1218**返回值:** 1219 1220| 类型 | 说明 | 1221| ---------------------------------------------- | --------------------------------- | 1222| Promise<[OutputDeviceInfo](#outputdeviceinfo)> | Promise对象。返回播放设备信息。 | 1223 1224**错误码:** 1225以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1226 1227| 错误码ID | 错误信息 | 1228| -------- | ---------------------------------------- | 1229| 6600101 | Session service exception. | 1230| 6600102 | The session does not exist. | 1231 1232**示例:** 1233 1234```js 1235session.getOutputDevice().then((outputDeviceInfo) => { 1236 console.info(`GetOutputDevice : SUCCESS : isRemote : ${outputDeviceInfo.isRemote}`); 1237}).catch((err) => { 1238 console.info(`GetOutputDevice BusinessError: code: ${err.code}, message: ${err.message}`); 1239}); 1240``` 1241 1242### getOutputDevice 1243 1244getOutputDevice(callback: AsyncCallback\<OutputDeviceInfo>): void 1245 1246通过会话获取播放设备相关信息。结果通过callback异步回调方式返回。 1247 1248**系统能力:** SystemCapability.Multimedia.AVSession.Core 1249 1250**系统接口:** 该接口为系统接口 1251 1252**参数:** 1253 1254| 参数名 | 类型 | 必填 | 说明 | 1255| -------- | ----------------------------------------------------- | ---- | ------------------------------ | 1256| callback | AsyncCallback<[OutputDeviceInfo](#outputdeviceinfo)\> | 是 | 回调函数,返回播放设备信息。 | 1257 1258**错误码:** 1259以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1260 1261| 错误码ID | 错误信息 | 1262| -------- | ---------------------------------------- | 1263| 6600101 | Session service exception. | 1264| 6600102 | The session does not exist. | 1265 1266**示例:** 1267 1268```js 1269session.getOutputDevice(function (err, outputDeviceInfo) { 1270 if (err) { 1271 console.info(`GetOutputDevice BusinessError: code: ${err.code}, message: ${err.message}`); 1272 } else { 1273 console.info(`GetOutputDevice : SUCCESS : isRemote : ${outputDeviceInfo.isRemote}`); 1274 } 1275}); 1276``` 1277 1278### activate 1279 1280activate(): Promise\<void> 1281 1282激活会话,激活后可正常使用会话。结果通过Promise异步回调方式返回。 1283 1284**系统能力:** SystemCapability.Multimedia.AVSession.Core 1285 1286**系统接口:** 该接口为系统接口 1287 1288**返回值:** 1289 1290| 类型 | 说明 | 1291| -------------- | ----------------------------- | 1292| Promise<void\> | Promise对象。当会话激活成功,无返回结果,否则返回错误对象。 | 1293 1294**错误码:** 1295以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1296 1297| 错误码ID | 错误信息 | 1298| -------- | ---------------------------------------- | 1299| 6600101 | Session service exception. | 1300| 6600102 | The session does not exist. | 1301 1302**示例:** 1303 1304```js 1305session.activate().then(() => { 1306 console.info('Activate : SUCCESS '); 1307}).catch((err) => { 1308 console.info(`Activate BusinessError: code: ${err.code}, message: ${err.message}`); 1309}); 1310``` 1311 1312### activate 1313 1314activate(callback: AsyncCallback\<void>): void 1315 1316激活会话,激活后可正常使用会话。结果通过callback异步回调方式返回。 1317 1318**系统能力:** SystemCapability.Multimedia.AVSession.Core 1319 1320**系统接口:** 该接口为系统接口 1321 1322**参数:** 1323 1324| 参数名 | 类型 | 必填 | 说明 | 1325| -------- | -------------------- | ---- | ---------- | 1326| callback | AsyncCallback<void\> | 是 | 回调函数。当会话激活成功,err为undefined,否则返回错误对象。 | 1327 1328**错误码:** 1329以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1330 1331| 错误码ID | 错误信息 | 1332| -------- | ---------------------------------------- | 1333| 6600101 | Session service exception. | 1334| 6600102 | The session does not exist. | 1335 1336**示例:** 1337 1338```js 1339session.activate(function (err) { 1340 if (err) { 1341 console.info(`Activate BusinessError: code: ${err.code}, message: ${err.message}`); 1342 } else { 1343 console.info('Activate : SUCCESS '); 1344 } 1345}); 1346``` 1347 1348### deactivate 1349 1350deactivate(): Promise\<void> 1351 1352禁用当前会话的功能,可通过[activate](#activate)恢复。结果通过Promise异步回调方式返回。 1353 1354**系统能力:** SystemCapability.Multimedia.AVSession.Core 1355 1356**系统接口:** 该接口为系统接口 1357 1358**返回值:** 1359 1360| 类型 | 说明 | 1361| -------------- | ----------------------------- | 1362| Promise<void\> | Promise对象。当禁用会话成功,无返回结果,否则返回错误对象。| 1363 1364**错误码:** 1365以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1366 1367| 错误码ID | 错误信息 | 1368| -------- | ---------------------------------------- | 1369| 6600101 | Session service exception. | 1370| 6600102 | The session does not exist. | 1371 1372**示例:** 1373 1374```js 1375session.deactivate().then(() => { 1376 console.info('Deactivate : SUCCESS '); 1377}).catch((err) => { 1378 console.info(`Deactivate BusinessError: code: ${err.code}, message: ${err.message}`); 1379}); 1380``` 1381 1382### deactivate 1383 1384deactivate(callback: AsyncCallback\<void>): void 1385 1386禁用当前会话。结果通过callback异步回调方式返回。 1387 1388禁用当前会话的功能,可通过[activate](#activate)恢复。 1389 1390**系统能力:** SystemCapability.Multimedia.AVSession.Core 1391 1392**系统接口:** 该接口为系统接口 1393 1394**参数:** 1395 1396| 参数名 | 类型 | 必填 | 说明 | 1397| -------- | -------------------- | ---- | ---------- | 1398| callback | AsyncCallback<void\> | 是 | 回调函数。当禁用会话成功,err为undefined,否则返回错误对象。| 1399 1400**错误码:** 1401以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1402 1403| 错误码ID | 错误信息 | 1404| -------- | ---------------------------------------- | 1405| 6600101 | Session service exception. | 1406| 6600102 | The session does not exist. | 1407 1408**示例:** 1409 1410```js 1411session.deactivate(function (err) { 1412 if (err) { 1413 console.info(`Deactivate BusinessError: code: ${err.code}, message: ${err.message}`); 1414 } else { 1415 console.info('Deactivate : SUCCESS '); 1416 } 1417}); 1418``` 1419 1420### destroy 1421 1422destroy(): Promise\<void> 1423 1424销毁当前会话,使当前会话完全失效。结果通过Promise异步回调方式返回。 1425 1426**系统能力:** SystemCapability.Multimedia.AVSession.Core 1427 1428**系统接口:** 该接口为系统接口 1429 1430**返回值:** 1431 1432| 类型 | 说明 | 1433| -------------- | ----------------------------- | 1434| Promise<void\> | Promise对象。当会话销毁成功,无返回结果,否则返回错误对象。 | 1435 1436**错误码:** 1437以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1438 1439| 错误码ID | 错误信息 | 1440| -------- | ---------------------------------------- | 1441| 6600101 | Session service exception. | 1442| 6600102 | The session does not exist. | 1443 1444**示例:** 1445 1446```js 1447session.destroy().then(() => { 1448 console.info('Destroy : SUCCESS '); 1449}).catch((err) => { 1450 console.info(`Destroy BusinessError: code: ${err.code}, message: ${err.message}`); 1451}); 1452``` 1453 1454### destroy 1455 1456destroy(callback: AsyncCallback\<void>): void 1457 1458销毁当前会话,使当前会话完全失效。结果通过callback异步回调方式返回。 1459 1460**系统能力:** SystemCapability.Multimedia.AVSession.Core 1461 1462**系统接口:** 该接口为系统接口 1463 1464**参数:** 1465 1466| 参数名 | 类型 | 必填 | 说明 | 1467| -------- | -------------------- | ---- | ---------- | 1468| callback | AsyncCallback<void\> | 是 | 回调函数。当会话销毁成功,err为undefined,否则返回错误对象。 | 1469 1470**错误码:** 1471以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1472 1473| 错误码ID | 错误信息 | 1474| -------- | ---------------------------------------- | 1475| 6600101 | Session service exception. | 1476| 6600102 | The session does not exist. | 1477 1478**示例:** 1479 1480```js 1481session.destroy(function (err) { 1482 if (err) { 1483 console.info(`Destroy BusinessError: code: ${err.code}, message: ${err.message}`); 1484 } else { 1485 console.info('Destroy : SUCCESS '); 1486 } 1487}); 1488``` 1489 1490### on('play'|'pause'|'stop'|'playNext'|'playPrevious'|'fastForward'|'rewind') 1491 1492on(type: 'play'|'pause'|'stop'|'playNext'|'playPrevious'|'fastForward'|'rewind', callback: () => void): void 1493 1494设置播放命令监听事件。 1495 1496**系统能力:** SystemCapability.Multimedia.AVSession.Core 1497 1498**系统接口:** 该接口为系统接口 1499 1500**参数:** 1501 1502| 参数名 | 类型 | 必填 | 说明 | 1503| -------- | -------------------- | ---- | ------------------------------------------------------------ | 1504| type | string | 是 | 事件回调类型,支持的事件包括:`'play'`,`'pause'`,`'stop'`,` 'playNext'`,` 'playPrevious'`, `'fastForward'`,` 'rewind'`。<br/>当对应的播放命令被发送到会话时,触发该事件回调。 | 1505| callback | callback: () => void | 是 | 回调函数。当监听事件注册成功,err为undefined,否则为错误对象。 | 1506 1507**错误码:** 1508以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1509 1510| 错误码ID | 错误信息 | 1511| -------- | ---------------------------------------- | 1512| 6600101 | Session service exception. | 1513| 6600102 | The session does not exist. | 1514 1515**示例:** 1516 1517```js 1518session.on('play', () => { 1519 console.info('on play entry'); 1520}); 1521session.on('pause', () => { 1522 console.info('on pause entry'); 1523}); 1524session.on('stop', () => { 1525 console.info('on stop entry'); 1526}); 1527session.on('playNext', () => { 1528 console.info('on playNext entry'); 1529}); 1530session.on('playPrevious', () => { 1531 console.info('on playPrevious entry'); 1532}); 1533session.on('fastForward', () => { 1534 console.info('on fastForward entry'); 1535}); 1536session.on('rewind', () => { 1537 console.info('on rewind entry'); 1538}); 1539``` 1540 1541### on('seek') 1542 1543on(type: 'seek', callback: (time: number) => void): void 1544 1545设置跳转节点监听事件。 1546 1547**系统能力:** SystemCapability.Multimedia.AVSession.Core 1548 1549**系统接口:** 该接口为系统接口 1550 1551**参数:** 1552 1553| 参数名 | 类型 | 必填 | 说明 | 1554| -------- | ---------------------- | ---- | ------------------------------------------------------------ | 1555| type | string | 是 | 事件回调类型,支持事件`'seek'`:当跳转节点命令被发送到会话时,触发该事件。 | 1556| callback | (time: number) => void | 是 | 回调函数。参数time是时间节点,单位为毫秒。 | 1557 1558**错误码:** 1559以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1560 1561| 错误码ID | 错误信息 | 1562| -------- | ---------------------------------------- | 1563| 6600101 | Session service exception. | 1564| 6600102 | The session does not exist. | 1565 1566**示例:** 1567The session does not exist 1568```js 1569session.on('seek', (time) => { 1570 console.info(`on seek entry time : ${time}`); 1571}); 1572``` 1573 1574### on('setSpeed') 1575 1576on(type: 'setSpeed', callback: (speed: number) => void): void 1577 1578设置播放速率的监听事件。 1579 1580**系统能力:** SystemCapability.Multimedia.AVSession.Core 1581 1582**系统接口:** 该接口为系统接口 1583 1584**参数:** 1585 1586| 参数名 | 类型 | 必填 | 说明 | 1587| -------- | ----------------------- | ---- | ------------------------------------------------------------ | 1588| type | string | 是 | 事件回调类型,支持事件`'setSpeed'`:当设置播放速率的命令被发送到会话时,触发该事件。 | 1589| callback | (speed: number) => void | 是 | 回调函数。参数speed是播放倍速。 | 1590 1591**错误码:** 1592以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1593 1594| 错误码ID | 错误信息 | 1595| -------- | ---------------------------------------- | 1596| 6600101 | Session service exception. | 1597| 6600102 | The session does not exist. | 1598 1599**示例:** 1600 1601```js 1602session.on('setSpeed', (speed) => { 1603 console.info(`on setSpeed speed : ${speed}`); 1604}); 1605``` 1606 1607### on('setLoopMode') 1608 1609on(type: 'setLoopMode', callback: (mode: LoopMode) => void): void 1610 1611设置循环模式的监听事件。 1612 1613**系统能力:** SystemCapability.Multimedia.AVSession.Core 1614 1615**系统接口:** 该接口为系统接口 1616 1617**参数:** 1618 1619| 参数名 | 类型 | 必填 | 说明 | 1620| -------- | ------------------------------------- | ---- | ---- | 1621| type | string | 是 | 事件回调类型,支持事件`'setLoopMode'`:当设置循环模式的命令被发送到会话时,触发该事件。 | 1622| callback | (mode: [LoopMode](#loopmode)) => void | 是 | 回调函数。参数mode是循环模式。 | 1623 1624**错误码:** 1625以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1626 1627| 错误码ID | 错误信息 | 1628| -------- | ---------------------------------------- | 1629| 6600101 | Session service exception. | 1630| 6600102 | The session does not exist. | 1631 1632**示例:** 1633 1634```js 1635session.on('setLoopMode', (mode) => { 1636 console.info(`on setLoopMode mode : ${mode}`); 1637}); 1638``` 1639 1640### on('toggleFavorite') 1641 1642on(type: 'toggleFavorite', callback: (assetId: string) => void): void 1643 1644设置是否收藏的监听事件 1645 1646**系统能力:** SystemCapability.Multimedia.AVSession.Core 1647 1648**系统接口:** 该接口为系统接口 1649 1650**参数:** 1651 1652| 参数名 | 类型 | 必填 | 说明 | 1653| -------- | ------------------------- | ---- | ------------------------------------------------------------ | 1654| type | string | 是 | 事件回调类型,支持事件`'toggleFavorite'`:当是否收藏的命令被发送到会话时,触发该事件。 | 1655| callback | (assetId: string) => void | 是 | 回调函数。参数assetId是媒体ID。 | 1656 1657**错误码:** 1658以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1659 1660| 错误码ID | 错误信息 | 1661| -------- | ---------------------------------------- | 1662| 6600101 | Session service exception. | 1663| 6600102 | The session does not exist. | 1664 1665**示例:** 1666 1667```js 1668session.on('toggleFavorite', (assetId) => { 1669 console.info(`on toggleFavorite mode : ${assetId}`); 1670}); 1671``` 1672 1673### on('handleKeyEvent') 1674 1675on(type: 'handleKeyEvent', callback: (event: KeyEvent) => void): void 1676 1677设置按键事件的监听 1678 1679**系统能力:** SystemCapability.Multimedia.AVSession.Core 1680 1681**系统接口:** 该接口为系统接口 1682 1683**参数:** 1684 1685| 参数名 | 类型 | 必填 | 说明 | 1686| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 1687| type | string | 是 | 事件回调类型,支持事件`'handleKeyEvent'`:当按键事件被发送到会话时,触发该事件。 | 1688| callback | (event: [KeyEvent](js-apis-keyevent.md)) => void | 是 | 回调函数。参数event是按键事件。 | 1689 1690**错误码:** 1691以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1692 1693| 错误码ID | 错误信息 | 1694| -------- | ---------------------------------------- | 1695| 6600101 | Session service exception. | 1696| 6600102 | The session does not exist. | 1697 1698**示例:** 1699 1700```js 1701session.on('handleKeyEvent', (event) => { 1702 console.info(`on handleKeyEvent event : ${event}`); 1703}); 1704``` 1705 1706### on('outputDeviceChange') 1707 1708on(type: 'outputDeviceChange', callback: (device: OutputDeviceInfo) => void): void 1709 1710设置播放设备变化的监听事件。 1711 1712**系统能力:** SystemCapability.Multimedia.AVSession.Core 1713 1714**系统接口:** 该接口为系统接口 1715 1716**参数:** 1717 1718| 参数名 | 类型 | 必填 | 说明 | 1719| -------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | 1720| type | string | 是 | 事件回调类型,支持事件`'outputDeviceChange'`:当播放设备变化时,触发该事件。 | 1721| callback | (device: [OutputDeviceInfo](#outputdeviceinfo)) => void | 是 | 回调函数。参数device是设备相关信息。 | 1722 1723**错误码:** 1724以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1725 1726| 错误码ID | 错误信息 | 1727| -------- | ---------------------------------------- | 1728| 6600101 | Session service exception. | 1729| 6600102 | The session does not exist. | 1730 1731**示例:** 1732 1733```js 1734session.on('outputDeviceChange', (device) => { 1735 console.info(`on outputDeviceChange device isRemote : ${device.isRemote}`); 1736}); 1737``` 1738 1739### off('play'|'pause'|'stop'|'playNext'|'playPrevious'|'fastForward'|'rewind') 1740 1741off(type: 'play' | 'pause' | 'stop' | 'playNext' | 'playPrevious' | 'fastForward' | 'rewind', callback?: () => void): void 1742 1743取消会话相关事件监听,关闭后,不再进行相关事件回调。 1744 1745**系统能力:** SystemCapability.Multimedia.AVSession.Core 1746 1747**系统接口:** 该接口为系统接口 1748 1749**参数:** 1750 1751| 参数名 | 类型 | 必填 | 说明 | 1752| -------- | -------------------- | ---- | ---------------------------------------------------------------------------------------------------------------------------- | 1753| type | string | 是 | 关闭对应的监听事件,支持的事件包括:`'play'`,` 'pause'`,`'stop'`, `'playNext'`,` 'playPrevious'`, ` 'fastForward'`,` 'rewind'`。 | 1754| callback | callback: () => void | 否 | 回调函数。当监听事件取消成功,err为undefined,否则返回错误对象。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 | 1755 1756**错误码:** 1757以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1758 1759| 错误码ID | 错误信息 | 1760| -------- | ---------------------------------------- | 1761| 6600101 | Session service exception. | 1762| 6600102 | The session does not exist. | 1763 1764**示例:** 1765 1766```js 1767session.off('play'); 1768session.off('pause'); 1769session.off('stop'); 1770session.off('playNext'); 1771session.off('playPrevious'); 1772session.off('fastForward'); 1773session.off('rewind'); 1774``` 1775 1776### off('seek') 1777 1778off(type: 'seek', callback?: (time: number) => void): void 1779 1780取消监听跳转节点事件。 1781 1782**系统能力:** SystemCapability.Multimedia.AVSession.Core 1783 1784**系统接口:** 该接口为系统接口 1785 1786**参数:** 1787 1788| 参数名 | 类型 | 必填 | 说明 | 1789| -------- | ---------------------- | ---- | ----------------------------------------- | 1790| type | string | 是 | 关闭对应的监听事件,支持关闭事件`'seek'`。 | 1791| callback | (time: number) => void | 否 | 回调函数,参数time是时间节点,单位为毫秒。<br>当监听事件取消成功,err为undefined,否则返回错误对象。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 | 1792 1793**错误码:** 1794以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1795 1796| 错误码ID | 错误信息 | 1797| -------- | ---------------------------------------- | 1798| 6600101 | Session service exception. | 1799| 6600102 | The session does not exist. | 1800 1801**示例:** 1802 1803```js 1804session.off('seek'); 1805``` 1806 1807### off('setSpeed') 1808 1809off(type: 'setSpeed', callback?: (speed: number) => void): void 1810 1811取消监听播放速率变化事件。 1812 1813**系统能力:** SystemCapability.Multimedia.AVSession.Core 1814 1815**系统接口:** 该接口为系统接口 1816 1817**参数:** 1818 1819| 参数名 | 类型 | 必填 | 说明 | 1820| -------- | ----------------------- | ---- | -------------------------------------------| 1821| type | string | 是 | 关闭对应的监听事件,支持关闭事件`'setSpeed'`。 | 1822| callback | (speed: number) => void | 否 | 回调函数,参数speed是播放倍速。<br>当监听事件取消成功,err为undefined,否则返回错误对象。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 | 1823 1824**错误码:** 1825以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1826 1827| 错误码ID | 错误信息 | 1828| -------- | ---------------------------------------- | 1829| 6600101 | Session service exception. | 1830| 6600102 | The session does not exist. | 1831 1832**示例:** 1833 1834```js 1835session.off('setSpeed'); 1836``` 1837 1838### off('setLoopMode') 1839 1840off(type: 'setLoopMode', callback?: (mode: LoopMode) => void): void 1841 1842取消监听循环模式变化事件。 1843 1844**系统能力:** SystemCapability.Multimedia.AVSession.Core 1845 1846**系统接口:** 该接口为系统接口 1847 1848**参数:** 1849 1850| 参数名 | 类型 | 必填 | 说明 | 1851| -------- | ------------------------------------- | ---- | ----- | 1852| type | string | 是 | 关闭对应的监听事件,支持关闭事件`'setLoopMode'`。| 1853| callback | (mode: [LoopMode](#loopmode)) => void | 否 | 回调函数,参数mode是循环模式。<br>当监听事件取消成功,err为undefined,否则返回错误对象。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 | 1854 1855**错误码:** 1856以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1857 1858| 错误码ID | 错误信息 | 1859| -------- | ---------------------------------------- | 1860| 6600101 | Session service exception. | 1861| 6600102 | The session does not exist. | 1862 1863**示例:** 1864 1865```js 1866session.off('setLoopMode'); 1867``` 1868 1869### off('toggleFavorite') 1870 1871off(type: 'toggleFavorite', callback?: (assetId: string) => void): void 1872 1873取消监听是否收藏的事件 1874 1875**系统能力:** SystemCapability.Multimedia.AVSession.Core 1876 1877**系统接口:** 该接口为系统接口 1878 1879**参数:** 1880 1881| 参数名 | 类型 | 必填 | 说明 | 1882| -------- | ------------------------- | ---- | -------------------------------------------------------- | 1883| type | string | 是 | 关闭对应的监听事件,支持关闭事件`'toggleFavorite'`。 | 1884| callback | (assetId: string) => void | 否 | 回调函数,参数assetId是媒体ID。<br>当监听事件取消成功,err为undefined,否则返回错误对象。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 | 1885 1886**错误码:** 1887以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1888 1889| 错误码ID | 错误信息 | 1890| -------- | ---------------------------------------- | 1891| 6600101 | Session service exception. | 1892| 6600102 | The session does not exist. | 1893 1894**示例:** 1895 1896```js 1897session.off('toggleFavorite'); 1898``` 1899 1900### off('handleKeyEvent') 1901 1902off(type: 'handleKeyEvent', callback?: (event: KeyEvent) => void): void 1903 1904取消监听按键事件。 1905 1906**系统能力:** SystemCapability.Multimedia.AVSession.Core 1907 1908**系统接口:** 该接口为系统接口 1909 1910**参数:** 1911 1912| 参数名 | 类型 | 必填 | 说明 | 1913| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 1914| type | string | 是 | 关闭对应的监听事件,支持关闭事件`'handleKeyEvent'`。 | 1915| callback | (event: [KeyEvent](js-apis-keyevent.md)) => void | 否 | 回调函数,参数event是按键事件。<br>当监听事件取消成功,err为undefined,否则返回错误对象。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 | 1916 1917**错误码:** 1918以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1919 1920| 错误码ID | 错误信息 | 1921| -------- | ---------------------------------------- | 1922| 6600101 | Session service exception. | 1923| 6600102 | The session does not exist. | 1924 1925**示例:** 1926 1927```js 1928session.off('handleKeyEvent'); 1929``` 1930 1931### off('outputDeviceChange') 1932 1933off(type: 'outputDeviceChange', callback?: (device: OutputDeviceInfo) => void): void 1934 1935取消监听播放设备变化的事件。 1936 1937**系统能力:** SystemCapability.Multimedia.AVSession.Core 1938 1939**系统接口:** 该接口为系统接口 1940 1941**参数:** 1942 1943| 参数名 | 类型 | 必填 | 说明 | 1944| -------- | ------------------------------------------------------- | ---- | ------------------------------------------------------ | 1945| type | string | 是 | 关闭对应的监听事件,支持关闭事件`'outputDeviceChange'`。 | 1946| callback | (device: [OutputDeviceInfo](#outputdeviceinfo)) => void | 否 | 回调函数,参数device是设备相关信息。<br>当监听事件取消成功,err为undefined,否则返回错误对象。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 | 1947 1948**错误码:** 1949以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 1950 1951| 错误码ID | 错误信息 | 1952| -------- | ---------------------------------------- | 1953| 6600101 | Session service exception. | 1954| 6600102 | The session does not exist. | 1955 1956**示例:** 1957 1958```js 1959session.off('outputDeviceChange'); 1960``` 1961 1962 1963 1964## AVSessionController 1965 1966调用[avSession.createController](#avsessioncreatecontroller)后,返回会话控制器实例。控制器可查看会话ID,并可完成对会话发送命令及事件,获取会话元数据,播放状态信息等操作。 1967 1968### 属性 1969 1970**系统能力:** SystemCapability.Multimedia.AVSession.Core 1971 1972**系统接口:** 该接口为系统接口 1973 1974| 名称 | 类型 | 可读 | 可写 | 说明 | 1975| :-------- | :----- | :--- | :--- | :-------------------------------------- | 1976| sessionId | string | 是 | 否 | AVSessionController对象唯一的会话标识。 | 1977 1978 1979**示例:** 1980```js 1981let sessionId; 1982await avSession.createController(session.sessionId).then((controller) => { 1983 sessionId = controller.sessionId; 1984}).catch((err) => { 1985 console.info(`CreateController BusinessError: code: ${err.code}, message: ${err.message}`); 1986}); 1987``` 1988 1989### getAVPlaybackState 1990 1991getAVPlaybackState(): Promise\<AVPlaybackState> 1992 1993获取当前会话播放状态相关信息。结果通过Promise异步回调方式返回。 1994 1995**系统能力:** SystemCapability.Multimedia.AVSession.Core 1996 1997**系统接口:** 该接口为系统接口 1998 1999**返回值:** 2000 2001| 类型 | 说明 | 2002| --------------------------------------------- | --------------------------- | 2003| Promise<[AVPlaybackState](#avplaybackstate)\> | Promise对象。返回播放状态对象。 | 2004 2005**错误码:** 2006以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2007 2008| 错误码ID | 错误信息 | 2009| -------- | ---------------------------------------- | 2010| 6600101 | Session service exception. | 2011| 6600102 | The session does not exist. | 2012| 6600103 | The session controller does not exist. | 2013 2014**示例:** 2015```js 2016controller.getAVPlaybackState().then((playbackState) => { 2017 console.info(`GetAVPlaybackState : SUCCESS : state : ${playbackState.state}`); 2018}).catch((err) => { 2019 console.info(`GetAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`); 2020}); 2021``` 2022 2023### getAVPlaybackState 2024 2025getAVPlaybackState(callback: AsyncCallback\<AVPlaybackState>): void 2026 2027获取当前播放状态相关信息。结果通过callback异步回调方式返回。 2028 2029**系统能力:** SystemCapability.Multimedia.AVSession.Core 2030 2031**系统接口:** 该接口为系统接口 2032 2033**参数:** 2034 2035| 参数名 | 类型 | 必填 | 说明 | 2036| -------- | --------------------------------------------------- | ---- | ---------------------------- | 2037| callback | AsyncCallback<[AVPlaybackState](#avplaybackstate)\> | 是 | 回调函数,返回当前播放状态对象。 | 2038 2039**错误码:** 2040以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2041 2042| 错误码ID | 错误信息 | 2043| -------- | ---------------------------------------- | 2044| 6600101 | Session service exception. | 2045| 6600102 | The session does not exist. | 2046| 6600103 | The session controller does not exist. | 2047 2048**示例:** 2049```js 2050controller.getAVPlaybackState(function (err, playbackState) { 2051 if (err) { 2052 console.info(`GetAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`); 2053 } else { 2054 console.info(`GetAVPlaybackState : SUCCESS : state : ${playbackState.state}`); 2055 } 2056}); 2057``` 2058 2059### getAVMetadata 2060 2061getAVMetadata(): Promise\<AVMetadata> 2062 2063获取会话元数据。结果通过Promise异步回调方式返回。 2064 2065**系统能力:** SystemCapability.Multimedia.AVSession.Core 2066 2067**系统接口:** 该接口为系统接口 2068 2069**返回值:** 2070 2071| 类型 | 说明 | 2072| ----------------------------------- | ----------------------------- | 2073| Promise<[AVMetadata](#avmetadata)\> | Promise对象,返回会话元数据。 | 2074 2075**错误码:** 2076以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2077 2078| 错误码ID | 错误信息 | 2079| -------- | ---------------------------------------- | 2080| 6600101 | Session service exception. | 2081| 6600102 | The session does not exist. | 2082| 6600103 | The session controller does not exist. | 2083 2084**示例:** 2085```js 2086controller.getAVMetadata().then((metadata) => { 2087 console.info(`GetAVMetadata : SUCCESS : assetId : ${metadata.assetId}`); 2088}).catch((err) => { 2089 console.info(`GetAVMetadata BusinessError: code: ${err.code}, message: ${err.message}`); 2090}); 2091``` 2092 2093### getAVMetadata 2094 2095getAVMetadata(callback: AsyncCallback\<AVMetadata>): void 2096 2097获取会话元数据。结果通过callback异步回调方式返回。 2098 2099**系统能力:** SystemCapability.Multimedia.AVSession.Core 2100 2101**系统接口:** 该接口为系统接口 2102 2103**参数:** 2104 2105| 参数名 | 类型 | 必填 | 说明 | 2106| -------- | ----------------------------------------- | ---- | -------------------------- | 2107| callback | AsyncCallback<[AVMetadata](#avmetadata)\> | 是 | 回调函数,返回会话元数据。 | 2108 2109**错误码:** 2110以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2111 2112| 错误码ID | 错误信息 | 2113| -------- | ---------------------------------------- | 2114| 6600101 | Session service exception. | 2115| 6600102 | The session does not exist. | 2116| 6600103 | The session controller does not exist. | 2117 2118**示例:** 2119```js 2120controller.getAVMetadata(function (err, metadata) { 2121 if (err) { 2122 console.info(`GetAVMetadata BusinessError: code: ${err.code}, message: ${err.message}`); 2123 } else { 2124 console.info(`GetAVMetadata : SUCCESS : assetId : ${metadata.assetId}`); 2125 } 2126}); 2127``` 2128 2129### getOutputDevice 2130 2131getOutputDevice(): Promise\<OutputDeviceInfo> 2132 2133获取播放设备信息。结果通过Promise异步回调方式返回。 2134 2135**系统能力:** SystemCapability.Multimedia.AVSession.Core 2136 2137**系统接口:** 该接口为系统接口 2138 2139**返回值:** 2140 2141| 类型 | 说明 | 2142| ----------------------------------------------- | --------------------------------- | 2143| Promise<[OutputDeviceInfo](#outputdeviceinfo)\> | Promise对象,返回播放设备信息。 | 2144 2145**错误码:** 2146以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2147 2148| 错误码ID | 错误信息 | 2149| -------- | ---------------------------------------- | 2150| 6600101 | Session service exception. | 2151| 6600103 | The session controller does not exist. | 2152 2153**示例:** 2154```js 2155controller.getOutputDevice().then((deviceInfo) => { 2156 console.info(`GetOutputDevice : SUCCESS : isRemote : ${deviceInfo.isRemote}`); 2157}).catch((err) => { 2158 console.info(`GetOutputDevice BusinessError: code: ${err.code}, message: ${err.message}`); 2159}); 2160``` 2161 2162### getOutputDevice 2163 2164getOutputDevice(callback: AsyncCallback\<OutputDeviceInfo>): void 2165 2166获取播放设备信息。结果通过callback异步回调方式返回。 2167 2168**系统能力:** SystemCapability.Multimedia.AVSession.Core 2169 2170**系统接口:** 该接口为系统接口 2171 2172**参数:** 2173 2174| 参数名 | 类型 | 必填 | 说明 | 2175| -------- | ----------------------------------------------------- | ---- | ------------------------------ | 2176| callback | AsyncCallback<[OutputDeviceInfo](#outputdeviceinfo)\> | 是 | 回调函数,返回播放设备信息。 | 2177 2178**错误码:** 2179以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2180 2181| 错误码ID | 错误信息 | 2182| -------- | ---------------------------------------- | 2183| 6600101 | Session service exception. | 2184| 6600103 | The session controller does not exist. | 2185 2186**示例:** 2187 2188```js 2189controller.getOutputDevice(function (err, deviceInfo) { 2190 if (err) { 2191 console.info(`GetOutputDevice BusinessError: code: ${err.code}, message: ${err.message}`); 2192 } else { 2193 console.info(`GetOutputDevice : SUCCESS : isRemote : ${deviceInfo.isRemote}`); 2194 } 2195}); 2196``` 2197 2198### sendAVKeyEvent 2199 2200sendAVKeyEvent(event: KeyEvent): Promise\<void> 2201 2202发送按键事件到控制器对应的会话。结果通过Promise异步回调方式返回。 2203 2204**系统能力:** SystemCapability.Multimedia.AVSession.Core 2205 2206**系统接口:** 该接口为系统接口 2207 2208**参数:** 2209 2210| 参数名 | 类型 | 必填 | 说明 | 2211| ------ | ------------------------------------------------------------ | ---- | ---------- | 2212| event | [KeyEvent](js-apis-keyevent.md) | 是 | 按键事件。 | 2213 2214**错误码:** 2215以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2216 2217| 错误码ID | 错误信息 | 2218| -------- | ---------------------------------------- | 2219| 6600101 | Session service exception. | 2220| 6600102 | The session does not exist. | 2221| 6600103 | The session controller does not exist. | 2222| 6600105 | Invalid session command. | 2223| 6600106 | The session is not activated. | 2224 2225**返回值:** 2226 2227| 类型 | 说明 | 2228| -------------- | ----------------------------- | 2229| Promise<void\> | Promise对象。当事件发送成功,无返回结果,否则返回错误对象。 | 2230 2231**示例:** 2232 2233```js 2234let keyItem = {code:0x49, pressedTime:2, deviceId:0}; 2235let event = {action:2, key:keyItem, keys:[keyItem]}; 2236 2237controller.sendAVKeyEvent(event).then(() => { 2238 console.info('SendAVKeyEvent Successfully'); 2239}).catch((err) => { 2240 console.info(`SendAVKeyEvent BusinessError: code: ${err.code}, message: ${err.message}`); 2241}); 2242``` 2243 2244### sendAVKeyEvent 2245 2246sendAVKeyEvent(event: KeyEvent, callback: AsyncCallback\<void>): void 2247 2248发送按键事件到会话。结果通过callback异步回调方式返回。 2249 2250**系统能力:** SystemCapability.Multimedia.AVSession.Core 2251 2252**系统接口:** 该接口为系统接口 2253 2254**参数:** 2255 2256| 参数名 | 类型 | 必填 | 说明 | 2257| -------- | ------------------------------------------------------------ | ---- | ---------- | 2258| event | [KeyEvent](js-apis-keyevent.md) | 是 | 按键事件。 | 2259| callback | AsyncCallback<void\> | 是 | 回调函数。当事件发送成功,err为undefined,否则返回错误对象。 | 2260 2261**错误码:** 2262以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2263 2264| 错误码ID | 错误信息 | 2265| -------- | ---------------------------------------- | 2266| 6600101 | Session service exception. | 2267| 6600102 | The session does not exist. | 2268| 6600103 | The session controller does not exist. | 2269| 6600105 | Invalid session command. | 2270| 6600106 | The session is not activated. | 2271 2272**示例:** 2273 2274```js 2275let keyItem = {code:0x49, pressedTime:2, deviceId:0}; 2276let event = {action:2, key:keyItem, keys:[keyItem]}; 2277 2278controller.sendAVKeyEvent(event, function (err) { 2279 if (err) { 2280 console.info(`SendAVKeyEvent BusinessError: code: ${err.code}, message: ${err.message}`); 2281 } else { 2282 console.info('SendAVKeyEvent Successfully'); 2283 } 2284}); 2285``` 2286 2287### getLaunchAbility 2288 2289getLaunchAbility(): Promise\<WantAgent> 2290 2291获取应用在会话中保存的WantAgent对象。结果通过Promise异步回调方式返回。 2292 2293**系统能力:** SystemCapability.Multimedia.AVSession.Core 2294 2295**系统接口:** 该接口为系统接口 2296 2297**返回值:** 2298 2299| 类型 | 说明 | 2300| ------------------------------------------- | ------------------------------------------------------------ | 2301| Promise<[WantAgent](js-apis-wantAgent.md)\> | Promise对象,返回在[setLaunchAbility](#setlaunchability)保存的对象,包括应用的相关属性信息,如bundleName,abilityName,deviceId等。 | 2302 2303**错误码:** 2304以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2305 2306| 错误码ID | 错误信息 | 2307| -------- | ---------------------------------------- | 2308| 6600101 | Session service exception. | 2309| 6600102 | The session does not exist. | 2310| 6600103 | The session controller does not exist. | 2311 2312**示例:** 2313 2314```js 2315import wantAgent from '@ohos.wantAgent'; 2316 2317controller.getLaunchAbility().then((agent) => { 2318 console.info(`GetLaunchAbility : SUCCESS : wantAgent : ${agent}`); 2319}).catch((err) => { 2320 console.info(`GetLaunchAbility BusinessError: code: ${err.code}, message: ${err.message}`); 2321}); 2322``` 2323 2324### getLaunchAbility 2325 2326getLaunchAbility(callback: AsyncCallback\<WantAgent>): void 2327 2328获取应用在会话中保存的WantAgent对象。结果通过callback异步回调方式返回。 2329 2330**系统能力:** SystemCapability.Multimedia.AVSession.Core 2331 2332**系统接口:** 该接口为系统接口 2333 2334**参数:** 2335 2336| 参数名 | 类型 | 必填 | 说明 | 2337| -------- | ------------------------------------------------- | ---- | ------------------------------------------------------------ | 2338| callback | AsyncCallback<[WantAgent](js-apis-wantAgent.md)\> | 是 | 回调函数。返回在[setLaunchAbility](#setlaunchability)保存的对象,包括应用的相关属性信息,如bundleName,abilityName,deviceId等。 | 2339 2340**错误码:** 2341以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2342 2343| 错误码ID | 错误信息 | 2344| -------- | ---------------------------------------- | 2345| 6600101 | Session service exception. | 2346| 6600102 | The session does not exist. | 2347| 6600103 | The session controller does not exist. | 2348 2349**示例:** 2350 2351```js 2352import wantAgent from '@ohos.wantAgent'; 2353 2354controller.getLaunchAbility(function (err, agent) { 2355 if (err) { 2356 console.info(`GetLaunchAbility BusinessError: code: ${err.code}, message: ${err.message}`); 2357 } else { 2358 console.info(`GetLaunchAbility : SUCCESS : wantAgent : ${agent}`); 2359 } 2360}); 2361``` 2362 2363### getRealPlaybackPositionSync 2364 2365getRealPlaybackPositionSync(): number 2366 2367获取当前播放位置。 2368 2369**系统能力:** SystemCapability.Multimedia.AVSession.Core 2370 2371**系统接口:** 该接口为系统接口 2372 2373**返回值:** 2374 2375| 类型 | 说明 | 2376| ------ | ------------------ | 2377| number | 时间节点,毫秒数。 | 2378 2379**错误码:** 2380以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2381 2382| 错误码ID | 错误信息 | 2383| -------- | ---------------------------------------- | 2384| 6600101 | Session service exception. | 2385| 6600103 | The session controller does not exist. | 2386 2387**示例:** 2388 2389```js 2390let time = controller.getRealPlaybackPositionSync(); 2391``` 2392 2393### isActive 2394 2395isActive(): Promise\<boolean> 2396 2397获取会话是否被激活。结果通过Promise异步回调方式返回。 2398 2399**系统能力:** SystemCapability.Multimedia.AVSession.Core 2400 2401**系统接口:** 该接口为系统接口 2402 2403**返回值:** 2404 2405| 类型 | 说明 | 2406| ----------------- | ------------------------------------------------------------ | 2407| Promise<boolean\> | Promise对象,返回会话是否为激活状态,true表示被激活,false表示禁用。 | 2408 2409**错误码:** 2410以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2411 2412| 错误码ID | 错误信息 | 2413| -------- | ---------------------------------------- | 2414| 6600101 | Session service exception. | 2415| 6600102 | The session does not exist. | 2416| 6600103 | The session controller does not exist. | 2417 2418**示例:** 2419 2420```js 2421controller.isActive().then((isActive) => { 2422 console.info(`IsActive : SUCCESS : isactive : ${isActive}`); 2423}).catch((err) => { 2424 console.info(`IsActive BusinessError: code: ${err.code}, message: ${err.message}`); 2425}); 2426``` 2427 2428### isActive 2429 2430isActive(callback: AsyncCallback\<boolean>): void 2431 2432判断会话是否被激活。结果通过callback异步回调方式返回。 2433 2434**系统能力:** SystemCapability.Multimedia.AVSession.Core 2435 2436**系统接口:** 该接口为系统接口 2437 2438**参数:** 2439 2440| 参数名 | 类型 | 必填 | 说明 | 2441| -------- | ----------------------- | ---- | ------------------------------------------------------------ | 2442| callback | AsyncCallback<boolean\> | 是 | 回调函数,返回会话是否为激活状态,true表示被激活,false表示禁用。 | 2443 2444**错误码:** 2445以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2446 2447| 错误码ID | 错误信息 | 2448| -------- | ---------------------------------------- | 2449| 6600101 | Session service exception. | 2450| 6600102 | The session does not exist. | 2451| 6600103 | The session controller does not exist. | 2452 2453**示例:** 2454 2455```js 2456controller.isActive(function (err, isActive) { 2457 if (err) { 2458 console.info(`IsActive BusinessError: code: ${err.code}, message: ${err.message}`); 2459 } else { 2460 console.info(`IsActive : SUCCESS : isactive : ${isActive}`); 2461 } 2462}); 2463``` 2464 2465### destroy 2466 2467destroy(): Promise\<void> 2468 2469销毁当前控制器,销毁后当前控制器不可再用。结果通过Promise异步回调方式返回。 2470 2471**系统能力:** SystemCapability.Multimedia.AVSession.Core 2472 2473**系统接口:** 该接口为系统接口 2474 2475**返回值:** 2476 2477| 类型 | 说明 | 2478| -------------- | ----------------------------- | 2479| Promise<void\> | Promise对象。当控制器销毁成功,无返回结果,否则返回错误对象。 | 2480 2481**错误码:** 2482以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2483 2484| 错误码ID | 错误信息 | 2485| -------- | ---------------------------------------- | 2486| 6600101 | Session service exception. | 2487| 6600103 | The session controller does not exist. | 2488 2489**示例:** 2490 2491```js 2492controller.destroy().then(() => { 2493 console.info('Destroy : SUCCESS '); 2494}).catch((err) => { 2495 console.info(`Destroy BusinessError: code: ${err.code}, message: ${err.message}`); 2496}); 2497``` 2498 2499### destroy 2500 2501destroy(callback: AsyncCallback\<void>): void 2502 2503销毁当前控制器,销毁后当前控制器不可再用。结果通过callback异步回调方式返回。 2504 2505**系统能力:** SystemCapability.Multimedia.AVSession.Core 2506 2507**系统接口:** 该接口为系统接口 2508 2509**参数:** 2510 2511| 参数名 | 类型 | 必填 | 说明 | 2512| -------- | -------------------- | ---- | ---------- | 2513| callback | AsyncCallback<void\> | 是 | 回调函数。当控制器销毁成功,err为undefined,否则返回错误对象。 | 2514 2515**错误码:** 2516以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2517 2518| 错误码ID | 错误信息 | 2519| -------- | ---------------------------------------- | 2520| 6600101 | Session service exception. | 2521| 6600103 | The session controller does not exist. | 2522 2523**示例:** 2524 2525```js 2526controller.destroy(function (err) { 2527 if (err) { 2528 console.info(`Destroy BusinessError: code: ${err.code}, message: ${err.message}`); 2529 } else { 2530 console.info('Destroy : SUCCESS '); 2531 } 2532}); 2533``` 2534 2535### getValidCommands 2536 2537getValidCommands(): Promise\<Array\<AVControlCommandType>> 2538 2539获取会话支持的有效命令。结果通过Promise异步回调方式返回。 2540 2541**系统能力:** SystemCapability.Multimedia.AVSession.Core 2542 2543**系统接口:** 该接口为系统接口 2544 2545**返回值:** 2546 2547| 类型 | 说明 | 2548| ------------------------------------------------------------ | --------------------------------- | 2549| Promise<Array<[AVControlCommandType](#avcontrolcommandtype)\>\> | Promise对象。返回有效命令的集合。 | 2550 2551**错误码:** 2552以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2553 2554| 错误码ID | 错误信息 | 2555| -------- | ---------------------------------------- | 2556| 6600101 | Session service exception. | 2557| 6600102 | The session does not exist. | 2558| 6600103 | The session controller does not exist. | 2559 2560**示例:** 2561 2562```js 2563controller.getValidCommands.then((validCommands) => { 2564 console.info(`GetValidCommands : SUCCESS : size : ${validCommands.length}`); 2565}).catch((err) => { 2566 console.info(`GetValidCommands BusinessError: code: ${err.code}, message: ${err.message}`); 2567}); 2568``` 2569 2570### getValidCommands 2571 2572getValidCommands(callback: AsyncCallback\<Array\<AVControlCommandType>>): void 2573 2574获取会话支持的有效命令。结果通过callback异步回调方式返回。 2575 2576**系统能力:** SystemCapability.Multimedia.AVSession.Core 2577 2578**系统接口:** 该接口为系统接口 2579 2580**参数:** 2581 2582| 参数名 | 类型 | 必填 | 说明 | 2583| -------- | ------------------------------------------------------------ | ---- | ------------------------------ | 2584| callback | AsyncCallback\<Array\<[AVControlCommandType](#avcontrolcommandtype)\>\> | 是 | 回调函数,返回有效命令的集合。 | 2585 2586**错误码:** 2587以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2588 2589| 错误码ID | 错误信息 | 2590| -------- | ---------------------------------------- | 2591| 6600101 | Session service exception. | 2592| 6600102 | The session does not exist. | 2593| 6600103 | The session controller does not exist. | 2594 2595**示例:** 2596 2597```js 2598controller.getValidCommands(function (err, validCommands) { 2599 if (err) { 2600 console.info(`GetValidCommands BusinessError: code: ${err.code}, message: ${err.message}`); 2601 } else { 2602 console.info(`GetValidCommands : SUCCESS : size : ${validCommands.length}`); 2603 } 2604}); 2605``` 2606 2607### sendControlCommand 2608 2609sendControlCommand(command: AVControlCommand): Promise\<void> 2610 2611通过控制器发送命令到其对应的会话。结果通过Promise异步回调方式返回。 2612 2613**系统能力:** SystemCapability.Multimedia.AVSession.Core 2614 2615**系统接口:** 该接口为系统接口 2616 2617**参数:** 2618 2619| 参数名 | 类型 | 必填 | 说明 | 2620| ------- | ------------------------------------- | ---- | ------------------------------ | 2621| command | [AVControlCommand](#avcontrolcommand) | 是 | 会话的相关命令和命令相关参数。 | 2622 2623**返回值:** 2624 2625| 类型 | 说明 | 2626| -------------- | ----------------------------- | 2627| Promise<void\> | Promise对象。当命令发送成功,无返回结果,否则返回错误对象。 | 2628 2629**错误码:** 2630以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2631 2632| 错误码ID | 错误信息 | 2633| -------- | ---------------------------------------- | 2634| 6600101 | Session service exception. | 2635| 6600102 | The session does not exist. | 2636| 6600103 | The session controller does not exist. | 2637| 6600105 | Invalid session command. | 2638| 6600106 | The session is not activated. | 2639| 6600107 | Too many commands or events. | 2640 2641**示例:** 2642 2643```js 2644let avCommand = {command:'play'}; 2645// let avCommand = {command:'pause'}; 2646// let avCommand = {command:'stop'}; 2647// let avCommand = {command:'playNext'}; 2648// let avCommand = {command:'playPrevious'}; 2649// let avCommand = {command:'fastForward'}; 2650// let avCommand = {command:'rewind'}; 2651// let avCommand = {command:'seek', parameter:10}; 2652// let avCommand = {command:'setSpeed', parameter:2.6}; 2653// let avCommand = {command:'setLoopMode', parameter:avSession.LoopMode.LOOP_MODE_SINGLE}; 2654// let avCommand = {command:'toggleFavorite', parameter:"false"}; 2655controller.sendControlCommand(avCommand).then(() => { 2656 console.info('SendControlCommand successfully'); 2657}).catch((err) => { 2658 console.info(`SendControlCommand BusinessError: code: ${err.code}, message: ${err.message}`); 2659}); 2660``` 2661 2662### sendControlCommand 2663 2664sendControlCommand(command: AVControlCommand, callback: AsyncCallback\<void>): void 2665 2666通过会话控制器发送命令到其对应的会话。结果通过callback异步回调方式返回。 2667 2668**系统能力:** SystemCapability.Multimedia.AVSession.Core 2669 2670**系统接口:** 该接口为系统接口 2671 2672**参数:** 2673 2674| 参数名 | 类型 | 必填 | 说明 | 2675| -------- | ------------------------------------- | ---- | ------------------------------ | 2676| command | [AVControlCommand](#avcontrolcommand) | 是 | 会话的相关命令和命令相关参数。 | 2677| callback | AsyncCallback<void\> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 | 2678 2679**错误码:** 2680以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2681 2682| 错误码ID | 错误信息 | 2683| -------- | ------------------------------- | 2684| 6600101 | Session service exception. | 2685| 6600102 | The session does not exist. | 2686| 6600103 | The session controller does not exist. | 2687| 6600105 | Invalid session command. | 2688| 6600106 | The session is not activated. | 2689| 6600107 | Too many commands or events. | 2690 2691**示例:** 2692 2693```js 2694let avCommand = {command:'play'}; 2695// let avCommand = {command:'pause'}; 2696// let avCommand = {command:'stop'}; 2697// let avCommand = {command:'playNext'}; 2698// let avCommand = {command:'playPrevious'}; 2699// let avCommand = {command:'fastForward'}; 2700// let avCommand = {command:'rewind'}; 2701// let avCommand = {command:'seek', parameter:10}; 2702// let avCommand = {command:'setSpeed', parameter:2.6}; 2703// let avCommand = {command:'setLoopMode', parameter:avSession.LoopMode.LOOP_MODE_SINGLE}; 2704// let avCommand = {command:'toggleFavorite', parameter:"false"}; 2705controller.sendControlCommand(avCommand, function (err) { 2706 if (err) { 2707 console.info(`SendControlCommand BusinessError: code: ${err.code}, message: ${err.message}`); 2708 } else { 2709 console.info('SendControlCommand successfully'); 2710 } 2711}); 2712``` 2713 2714### on('metadataChange') 2715 2716on(type: 'metadataChange', filter: Array\<keyof AVMetadata> | 'all', callback: (data: AVMetadata) => void) 2717 2718设置元数据变化的监听事件。 2719 2720**系统能力:** SystemCapability.Multimedia.AVSession.Core 2721 2722**系统接口:** 该接口为系统接口 2723 2724**参数:** 2725 2726| 参数名 | 类型 | 必填 | 说明 | 2727| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 2728| type | string | 是 | 事件回调类型,支持事件`'metadataChange'`:当元数据变化时,触发该事件。 | 2729| filter | Array\<keyof [AVMetadata](#avmetadata)\> | 'all' | 是 | 'all' 表示关注元数据所有字段变化;Array<keyof [AVMetadata](#avmetadata)\> 表示关注Array中的字段变化。 | 2730| callback | (data: [AVMetadata](#avmetadata)) => void | 是 | 回调函数,参数data是变化后的元数据。 | 2731 2732**错误码:** 2733以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2734 2735| 错误码ID | 错误信息 | 2736| -------- | ------------------------------ | 2737| 6600101 | Session service exception. | 2738| 6600103 | The session controller does not exist. | 2739 2740**示例:** 2741 2742```js 2743controller.on('metadataChange', 'all', (metadata) => { 2744 console.info(`on metadataChange assetId : ${metadata.assetId}`); 2745}); 2746 2747let metaFilter = ['assetId', 'title', 'description']; 2748controller.on('metadataChange', metaFilter, (metadata) => { 2749 console.info(`on metadataChange assetId : ${metadata.assetId}`); 2750}); 2751``` 2752 2753### on('playbackStateChange') 2754 2755on(type: 'playbackStateChange', filter: Array\<keyof AVPlaybackState> | 'all', callback: (state: AVPlaybackState) => void) 2756 2757设置播放状态变化的监听事件。 2758 2759**系统能力:** SystemCapability.Multimedia.AVSession.Core 2760 2761**系统接口:** 该接口为系统接口 2762 2763**参数:** 2764 2765| 参数名 | 类型 | 必填 | 说明 | 2766| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 2767| type | string | 是 | 事件回调类型,支持事件`'playbackStateChange'`:当播放状态变化时,触发该事件。 | 2768| filter | Array\<keyof [AVPlaybackState](#avplaybackstate)\> | 'all' | 是 | 'all' 表示关注播放状态所有字段变化;Array<keyof [AVPlaybackState](#avplaybackstate)\> 表示关注Array中的字段变化。 | 2769| callback | (state: [AVPlaybackState](#avplaybackstate)) => void | 是 | 回调函数,参数state是变化后的播放状态。 | 2770 2771**错误码:** 2772以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2773 2774| 错误码ID | 错误信息 | 2775| -------- | ------------------------------ | 2776| 6600101 | Session service exception. | 2777| 6600103 | The session controller does not exist. | 2778 2779**示例:** 2780 2781```js 2782controller.on('playbackStateChange', 'all', (playbackState) => { 2783 console.info(`on playbackStateChange state : ${playbackState.state}`); 2784}); 2785 2786let playbackFilter = ['state', 'speed', 'loopMode']; 2787controller.on('playbackStateChange', playbackFilter, (playbackState) => { 2788 console.info(`on playbackStateChange state : ${playbackState.state}`); 2789}); 2790``` 2791 2792### on('sessionDestroy') 2793 2794on(type: 'sessionDestroy', callback: () => void) 2795 2796会话销毁的监听事件。 2797 2798**系统能力:** SystemCapability.Multimedia.AVSession.Core 2799 2800**系统接口:** 该接口为系统接口 2801 2802**参数:** 2803 2804| 参数名 | 类型 | 必填 | 说明 | 2805| -------- | ---------- | ---- | ------------------------------------------------------------ | 2806| type | string | 是 | 事件回调类型,支持事件`'sessionDestroy'`:当检测到会话销毁时,触发该事件)。 | 2807| callback | () => void | 是 | 回调函数。当监听事件注册成功,err为undefined,否则为错误对象。 | 2808 2809**错误码:** 2810以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2811 2812| 错误码ID | 错误信息 | 2813| -------- | ------------------------------ | 2814| 6600101 | Session service exception. | 2815| 6600103 | The session controller does not exist. | 2816 2817**示例:** 2818 2819```js 2820controller.on('sessionDestroy', () => { 2821 console.info('on sessionDestroy : SUCCESS '); 2822}); 2823``` 2824 2825### on('activeStateChange') 2826 2827on(type: 'activeStateChange', callback: (isActive: boolean) => void) 2828 2829会话的激活状态的监听事件。 2830 2831**系统能力:** SystemCapability.Multimedia.AVSession.Core 2832 2833**系统接口:** 该接口为系统接口 2834 2835**参数:** 2836 2837| 参数名 | 类型 | 必填 | 说明 | 2838| -------- | --------------------------- | ---- | ------------------------------------------------------------ | 2839| type | string | 是 | 事件回调类型,支持事件`'activeStateChange'`:当检测到会话的激活状态发生改变时,触发该事件。 | 2840| callback | (isActive: boolean) => void | 是 | 回调函数。参数isActive表示会话是否被激活。true表示被激活,false表示禁用。 | 2841 2842**错误码:** 2843以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2844 2845| 错误码ID | 错误信息 | 2846| -------- | ----------------------------- | 2847| 6600101 | Session service exception. | 2848| 6600103 |The session controller does not exist. | 2849 2850**示例:** 2851 2852```js 2853controller.on('activeStateChange', (isActive) => { 2854 console.info(`on activeStateChange : SUCCESS : isActive ${isActive}`); 2855}); 2856``` 2857 2858### on('validCommandChange') 2859 2860on(type: 'validCommandChange', callback: (commands: Array\<AVControlCommandType>) => void) 2861 2862会话支持的有效命令变化监听事件。 2863 2864**系统能力:** SystemCapability.Multimedia.AVSession.Core 2865 2866**系统接口:** 该接口为系统接口 2867 2868**参数:** 2869 2870| 参数名 | 类型 | 必填 | 说明 | 2871| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 2872| type | string | 是 | 事件回调类型,支持事件`'validCommandChange'`:当检测到会话的合法命令发生改变时,触发该事件。 | 2873| callback | (commands: Array<[AVControlCommandType](#avcontrolcommandtype)\>) => void | 是 | 回调函数。参数commands是有效命令的集合。 | 2874 2875**错误码:** 2876以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2877 2878| 错误码ID | 错误信息 | 2879| -------- | ------------------------------ | 2880| 6600101 | Session service exception. | 2881| 6600103 | The session controller does not exist. | 2882 2883**示例:** 2884 2885```js 2886controller.on('validCommandChange', (validCommands) => { 2887 console.info(`validCommandChange : SUCCESS : size : ${validCommands.size}`); 2888 console.info(`validCommandChange : SUCCESS : validCommands : ${validCommands.values()}`); 2889}); 2890``` 2891 2892### on('outputDeviceChange') 2893 2894on(type: 'outputDeviceChange', callback: (device: OutputDeviceInfo) => void): void 2895 2896设置播放设备变化的监听事件。 2897 2898**系统能力:** SystemCapability.Multimedia.AVSession.Core 2899 2900**系统接口:** 该接口为系统接口 2901 2902**参数:** 2903 2904| 参数名 | 类型 | 必填 | 说明 | 2905| -------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | 2906| type | string | 是 | 事件回调类型,支持事件为`'outputDeviceChange'`:当播放设备变化时,触发该事件)。 | 2907| callback | (device: [OutputDeviceInfo](#outputdeviceinfo)) => void | 是 | 回调函数,参数device是设备相关信息。 | 2908 2909**错误码:** 2910以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2911 2912| 错误码ID | 错误信息 | 2913| -------- | ----------------------- | 2914| 6600101 | Session service exception. | 2915| 6600103 | The session controller does not exist. | 2916 2917**示例:** 2918 2919```js 2920controller.on('outputDeviceChange', (device) => { 2921 console.info(`on outputDeviceChange device isRemote : ${device.isRemote}`); 2922}); 2923``` 2924 2925### off('metadataChange') 2926 2927off(type: 'metadataChange', callback?: (data: AVMetadata) => void) 2928 2929控制器取消监听元数据变化的事件。 2930 2931**系统能力:** SystemCapability.Multimedia.AVSession.Core 2932 2933**系统接口:** 该接口为系统接口 2934 2935**参数:** 2936 2937| 参数名 | 类型 | 必填 | 说明 | 2938| -------- | ------------------------------------------------ | ---- | ------------------------------------------------------ | 2939| type | string | 是 | 取消对应的监听事件,支持事件`'metadataChange'`。 | 2940| callback | (data: [AVMetadata](#avmetadata)) => void | 否 | 回调函数,参数data是变化后的元数据。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 | 2941 2942**错误码:** 2943以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2944 2945| 错误码ID | 错误信息 | 2946| -------- | ---------------- | 2947| 6600101 | Session service exception. | 2948 2949**示例:** 2950 2951```js 2952controller.off('metadataChange'); 2953``` 2954 2955### off('playbackStateChange') 2956 2957off(type: 'playbackStateChange', callback?: (state: AVPlaybackState) => void) 2958 2959控制器取消监听播放状态变化的事件。 2960 2961**系统能力:** SystemCapability.Multimedia.AVSession.Core 2962 2963**系统接口:** 该接口为系统接口 2964 2965**参数:** 2966 2967| 参数名 | 类型 | 必填 | 说明 | 2968| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- | 2969| type | string | 是 | 取消对应的监听事件,支持事件`'playbackStateChange'`。 | 2970| callback | (state: [AVPlaybackState](#avplaybackstate)) => void | 否 | 回调函数,参数state是变化后的播放状态。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 | 2971 2972**错误码:** 2973以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 2974 2975| 错误码ID | 错误信息 | 2976| -------- | ---------------- | 2977| 6600101 | Session service exception. | 2978 2979**示例:** 2980 2981```js 2982controller.off('playbackStateChange'); 2983``` 2984 2985### off('sessionDestroy') 2986 2987off(type: 'sessionDestroy', callback?: () => void) 2988 2989控制器取消监听会话的销毁事件。 2990 2991**系统能力:** SystemCapability.Multimedia.AVSession.Core 2992 2993**系统接口:** 该接口为系统接口 2994 2995**参数:** 2996 2997| 参数名 | 类型 | 必填 | 说明 | 2998| -------- | ---------- | ---- | ----------------------------------------------------- | 2999| type | string | 是 | 取消对应的监听事件,支持事件`'sessionDestroy'`。 | 3000| callback | () => void | 否 | 回调函数。当监听事件取消成功,err为undefined,否则返回错误对象。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 | 3001 3002**错误码:** 3003以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 3004 3005| 错误码ID | 错误信息 | 3006| -------- | ---------------- | 3007| 6600101 | Session service exception. | 3008 3009**示例:** 3010 3011```js 3012controller.off('sessionDestroy'); 3013``` 3014 3015### off('activeStateChange') 3016 3017off(type: 'activeStateChange', callback?: (isActive: boolean) => void) 3018 3019控制器取消监听会话激活状态变化的事件。 3020 3021**系统能力:** SystemCapability.Multimedia.AVSession.Core 3022 3023**系统接口:** 该接口为系统接口 3024 3025**参数:** 3026 3027| 参数名 | 类型 | 必填 | 说明 | 3028| -------- | --------------------------- | ---- | ----------------------------------------------------- | 3029| type | string | 是 | 取消对应的监听事件,支持事件`'activeStateChange'`。 | 3030| callback | (isActive: boolean) => void | 否 | 回调函数。参数isActive表示会话是否被激活。true表示被激活,false表示禁用。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 | 3031 3032**错误码:** 3033以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 3034 3035| 错误码ID | 错误信息 | 3036| -------- | ---------------- | 3037| 6600101 | Session service exception. | 3038 3039**示例:** 3040 3041```js 3042controller.off('activeStateChange'); 3043``` 3044 3045### off('validCommandChange') 3046 3047off(type: 'validCommandChange', callback?: (commands: Array\<AVControlCommandType>) => void) 3048 3049控制器取消监听会话有效命令变化的事件。 3050 3051**系统能力:** SystemCapability.Multimedia.AVSession.Core 3052 3053**系统接口:** 该接口为系统接口 3054 3055**参数:** 3056 3057| 参数名 | 类型 | 必填 | 说明 | 3058| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- | 3059| type | string | 是 | 取消对应的监听事件,支持事件`'validCommandChange'`。 | 3060| callback | (commands: Array<[AVControlCommandType](#avcontrolcommandtype)\>) => void | 否 | 回调函数。参数commands是有效命令的集合。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 | 3061 3062**错误码:** 3063以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 3064 3065| 错误码ID | 错误信息 | 3066| -------- | ---------------- | 3067| 6600101 | Session service exception. | 3068 3069**示例:** 3070 3071```js 3072controller.off('validCommandChange'); 3073``` 3074 3075### off('outputDeviceChange') 3076 3077off(type: 'outputDeviceChange', callback?: (device: OutputDeviceInfo) => void): void 3078 3079控制器取消监听分布式设备变化的事件。 3080 3081**系统能力:** SystemCapability.Multimedia.AVSession.Core 3082 3083**系统接口:** 该接口为系统接口 3084 3085**参数:** 3086 3087| 参数名 | 类型 | 必填 | 说明 | 3088| -------- | ------------------------------------------------------- | ---- | ------------------------------------------------------ | 3089| type | string | 是 | 取消对应的监听事件,支持事件`'outputDeviceChange'`。 | 3090| callback | (device: [OutputDeviceInfo](#outputdeviceinfo)) => void | 否 | 回调函数,参数device是设备相关信息。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 | 3091 3092**错误码:** 3093以下错误码的详细介绍请参见[ohos.multimedia.avsession(多媒体会话)错误码](../errorcodes/errorcode-avsession.md)。 3094 3095| 错误码ID | 错误信息 | 3096| -------- | ---------------- | 3097| 6600101 | Session service exception. | 3098 3099**示例:** 3100 3101```js 3102controller.off('outputDeviceChange'); 3103``` 3104 3105## SessionToken 3106 3107会话令牌的信息。 3108 3109**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。 3110 3111**系统能力:** SystemCapability.Multimedia.AVSession.Manager 3112 3113**系统接口:** 该接口为系统接口。 3114 3115| 名称 | 类型 | 必填 | 说明 | 3116| :-------- | :----- | :--- | :----------- | 3117| sessionId | string | 是 | 会话ID | 3118| pid | number | 是 | 会话的进程ID | 3119| uid | number | 是 | 用户ID | 3120 3121## AVSessionType 3122当前会话支持的会话类型。 3123 3124**系统能力:** SystemCapability.Multimedia.AVSession.Core 3125 3126**系统接口:** 该接口为系统接口。 3127 3128| 名称 | 类型 | 说明 | 3129| ----- | ------ | ---- | 3130| audio | string | 音频 | 3131| video | string | 视频 | 3132 3133## AVSessionDescriptor 3134 3135会话的相关描述信息。 3136 3137**系统能力:** SystemCapability.Multimedia.AVSession.Manager 3138 3139**系统接口:** 该接口为系统接口。 3140 3141| 名称 | 类型 | 可读 | 可写 | 说明 | 3142| ------------ | ------------------------------------------------------------ | ---- | --------------------------------------------------- | --------------------------------------------------- | 3143| sessionId | string | 是 | 否 | 会话ID | 3144| type | [AVSessionType](#avsessiontype) | 是 | 否 | 会话类型 | 3145| sessionTag | string | 是 | 否 | 会话的自定义名称 | 3146| elementName | [ElementName](js-apis-bundle-ElementName.md) | 是 | 否 | 会话所属应用的信息(包含bundleName、abilityName等) | 3147| isActive | boolean | 是 | 否 | 会话是否被激活 | 3148| isTopSession | boolean | 是 | 否 | 会话是否为最新的会话 | 3149| outputDevice | [OutputDeviceInfo](#outputdeviceinfo) | 是 | 否 | 分布式设备相关信息 | 3150 3151## AVControlCommandType 3152 3153会话可传递的命令。 3154 3155**系统能力:** SystemCapability.Multimedia.AVSession.Core 3156 3157**系统接口:** 该接口为系统接口 3158 3159| 名称 | 类型 | 说明 | 3160| -------------- | ------ | ------------ | 3161| play | string | 播放 | 3162| pause | string | 暂停 | 3163| stop | string | 停止 | 3164| playNext | string | 下一首 | 3165| playPrevious | string | 上一首 | 3166| fastForward | string | 快进 | 3167| rewind | string | 快退 | 3168| seek | string | 跳转某一节点 | 3169| setSpeed | string | 设置播放倍速 | 3170| setLoopMode | string | 设置循环模式 | 3171| toggleFavorite | string | 是否收藏 | 3172 3173## AVControlCommand 3174 3175会话接受的命令的对象描述。 3176 3177**系统能力:** SystemCapability.Multimedia.AVSession.Core 3178 3179**系统接口:** 该接口为系统接口 3180 3181| 名称 | 类型 | 必填 | 说明 | 3182| --------- | ------------------------------------------------- | ---- | -------------- | 3183| command | [AVControlCommandType](#avcontrolcommandtype) | 是 | 命令 | 3184| parameter | [LoopMode](#loopmode) | string | number | 否 | 命令对应的参数 | 3185 3186## AVMetadata 3187 3188媒体元数据的相关属性。 3189 3190**系统能力:** SystemCapability.Multimedia.AVSession.Core 3191 3192**系统接口:** 该接口为系统接口 3193 3194| 名称 | 类型 | 必填 | 说明 | 3195| --------------- |-------------------------| ---- |---------------------------------------------------------------------| 3196| assetId | string | 是 | 媒体ID。 | 3197| title | string | 否 | 标题。 | 3198| artist | string | 否 | 艺术家。 | 3199| author | string | 否 | 专辑作者。 | 3200| album | string | 否 | 专辑名称。 | 3201| writer | string | 否 | 词作者。 | 3202| composer | string | 否 | 作曲者。 | 3203| duration | number | 否 | 媒体时长,单位毫秒(ms)。 | 3204| mediaImage | image.PixelMap | string | 否 | 图片的像素数据或者图片路径地址(本地路径或网络路径)。 | 3205| publishDate | Date | 否 | 发行日期。 | 3206| subtitle | string | 否 | 子标题。 | 3207| description | string | 否 | 媒体描述。 | 3208| lyric | string | 否 | 歌词文件路径地址(本地路径或网络路径) | 3209| previousAssetId | string | 否 | 上一首媒体ID。 | 3210| nextAssetId | string | 否 | 下一首媒体ID。 | 3211 3212## AVPlaybackState 3213 3214媒体播放状态的相关属性。 3215 3216**系统能力:** SystemCapability.Multimedia.AVSession.Core 3217 3218**系统接口:** 该接口为系统接口 3219 3220| 名称 | 类型 | 必填 | 说明 | 3221| ------------ | ------------------------------------- | ---- | ------- | 3222| state | [PlaybackState](#playbackstate) | 否 | 播放状态 | 3223| speed | number | 否 | 播放倍速 | 3224| position | [PlaybackPosition](#playbackposition) | 否 | 播放位置 | 3225| bufferedTime | number | 否 | 缓冲时间 | 3226| loopMode | [LoopMode](#loopmode) | 否 | 循环模式 | 3227| isFavorite | boolean | 否 | 是否收藏 | 3228 3229## PlaybackPosition 3230 3231媒体播放位置的相关属性。 3232 3233**系统能力:** SystemCapability.Multimedia.AVSession.Core 3234 3235**系统接口:** 该接口为系统接口 3236 3237| 名称 | 类型 | 必填 | 说明 | 3238| ----------- | ------ | ---- | ------------------ | 3239| elapsedTime | number | 是 | 已用时间,单位毫秒(ms)。 | 3240| updateTime | number | 是 | 更新时间,单位毫秒(ms)。 | 3241 3242## OutputDeviceInfo 3243 3244播放设备的相关信息。 3245 3246**系统能力:** SystemCapability.Multimedia.AVSession.Core 3247 3248**系统接口:** 该接口为系统接口 3249 3250| 名称 | 类型 | 必填 | 说明 | 3251| ---------- | -------------- | ---- | ---------------------- | 3252| isRemote | boolean | 是 | 设备是否连接。 | 3253| audioDeviceId | Array<number\> | 是 | 播放设备的ID集合。 | 3254| deviceName | Array<string\> | 是 | 播放设备的名称集合。 | 3255 3256## PlaybackState 3257 3258表示媒体播放状态的枚举。 3259 3260**系统能力:** SystemCapability.Multimedia.AVSession.Core 3261 3262**系统接口:** 该接口为系统接口 3263 3264| 名称 | 值 | 说明 | 3265| --------------------------- | ---- | ----------- | 3266| PLAYBACK_STATE_INITIAL | 0 | 初始状态 | 3267| PLAYBACK_STATE_PREPARE | 1 | 播放准备状态 | 3268| PLAYBACK_STATE_PLAY | 2 | 正在播放 | 3269| PLAYBACK_STATE_PAUSE | 3 | 暂停 | 3270| PLAYBACK_STATE_FAST_FORWARD | 4 | 快进 | 3271| PLAYBACK_STATE_REWIND | 5 | 快退 | 3272| PLAYBACK_STATE_STOP | 6 | 停止 | 3273 3274 3275## LoopMode 3276 3277表示媒体播放循环模式的枚举。 3278 3279**系统能力:** SystemCapability.Multimedia.AVSession.Core 3280 3281**系统接口:** 该接口为系统接口 3282 3283| 名称 | 值 | 说明 | 3284| ------------------ | ---- | -------- | 3285| LOOP_MODE_SEQUENCE | 0 | 顺序播放 | 3286| LOOP_MODE_SINGLE | 1 | 单曲循环 | 3287| LOOP_MODE_LIST | 2 | 表单循环 | 3288| LOOP_MODE_SHUFFLE | 3 | 随机播放 | 3289 3290## AVSessionErrorCode 3291 3292会话发生错误时的错误码。 3293 3294**系统能力:** SystemCapability.Multimedia.AVSession.Core 3295 3296**系统接口:** 该接口为系统接口 3297 3298| 名称 | 值 | 说明 | 3299| ------------------------------ | ------- | ------------------------------- | 3300| ERR_CODE_SERVICE_EXCEPTION | 6600101 | Session service exception. | 3301| ERR_CODE_SESSION_NOT_EXIST | 6600102 | The session does not exist. | 3302| ERR_CODE_CONTROLLER_NOT_EXIST | 6600103 | The session controller does not exist. | 3303| ERR_CODE_REMOTE_CONNECTION_ERR | 6600104 | The remote session connection failed. | 3304| ERR_CODE_COMMAND_INVALID | 6600105 | Invalid session command. | 3305| ERR_CODE_SESSION_INACTIVE | 6600106 | The session is not activated. | 3306| ERR_CODE_MESSAGE_OVERLOAD | 6600107 | Too many commands or events. |