• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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) &#124; '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) &#124; '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&nbsp;[AVMetadata](#avmetadata)\>&nbsp;&#124;&nbsp;'all' | 是   | 'all' 表示关注元数据所有字段变化;Array<keyof&nbsp;[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&nbsp;[AVPlaybackState](#avplaybackstate)\>&nbsp;&#124;&nbsp;'all' | 是   | 'all' 表示关注播放状态所有字段变化;Array<keyof&nbsp;[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) &#124; string &#124; 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 &#124; 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.       |