• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Interface (AudioRenderer)
2<!--Kit: Audio Kit-->
3<!--Subsystem: Multimedia-->
4<!--Owner: @songshenke-->
5<!--Designer: @caixuejiang; @hao-liangfei; @zhanganxiang-->
6<!--Tester: @Filger-->
7<!--Adviser: @zengyawen-->
8
9> **说明:**
10>
11> - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
12> - 本Interface首批接口从API version 8开始支持。
13
14提供音频渲染的相关接口。
15
16在使用AudioRenderer的接口之前,需先通过[createAudioRenderer](arkts-apis-audio-f.md#audiocreateaudiorenderer8)获取AudioRenderer实例。
17
18## 导入模块
19
20```ts
21import { audio } from '@kit.AudioKit';
22```
23
24## 属性
25
26**系统能力:** SystemCapability.Multimedia.Audio.Renderer
27
28| 名称  | 类型                     | 只读 | 可选 | 说明               |
29| ----- | -------------------------- | ---- | ---- | ------------------ |
30| state<sup>8+</sup> | [AudioState](arkts-apis-audio-e.md#audiostate8) | 是   | 否   | 音频渲染器的状态。 |
31
32**示例:**
33
34```ts
35import { audio } from '@kit.AudioKit';
36
37let state: audio.AudioState = audioRenderer.state;
38```
39
40## getRendererInfo<sup>8+</sup>
41
42getRendererInfo(callback: AsyncCallback<AudioRendererInfo\>): void
43
44获取当前创建的音频渲染器信息。使用callback异步回调。
45
46**系统能力:** SystemCapability.Multimedia.Audio.Renderer
47
48**参数:**
49
50| 参数名   | 类型                                                     | 必填 | 说明                   |
51| :------- | :------------------------------------------------------- | :--- | :--------------------- |
52| callback | AsyncCallback<[AudioRendererInfo](arkts-apis-audio-i.md#audiorendererinfo8)\> | 是   | 回调函数。当获取音频渲染器的信息成功,err为undefined,data为获取到的音频渲染器的信息;否则为错误对象。 |
53
54**示例:**
55
56```ts
57import { BusinessError } from '@kit.BasicServicesKit';
58
59audioRenderer.getRendererInfo((err: BusinessError, audioRendererInfo: audio.AudioRendererInfo) => {
60  if (err) {
61    console.error(`Failed to get renderer info. Code: ${err.code}, message: ${err.message}`);
62  } else {
63    console.info(`Succeeded in getting renderer info, AudioRendererInfo: ${JSON.stringify(audioRendererInfo)}.`);
64  }
65});
66```
67
68## getRendererInfo<sup>8+</sup>
69
70getRendererInfo(): Promise<AudioRendererInfo\>
71
72获取当前创建的音频渲染器信息。使用Promise异步回调。
73
74**系统能力:** SystemCapability.Multimedia.Audio.Renderer
75
76**返回值:**
77
78| 类型                                               | 说明                            |
79| -------------------------------------------------- | ------------------------------- |
80| Promise<[AudioRendererInfo](arkts-apis-audio-i.md#audiorendererinfo8)\> | Promise对象,返回音频渲染器信息。 |
81
82**示例:**
83
84```ts
85import { BusinessError } from '@kit.BasicServicesKit';
86
87audioRenderer.getRendererInfo().then((audioRendererInfo: audio.AudioRendererInfo) => {
88  console.info(`Succeeded in getting renderer info, AudioRendererInfo: ${JSON.stringify(audioRendererInfo)}.`);
89}).catch((err: BusinessError) => {
90  console.error(`Failed to get renderer info. Code: ${err.code}, message: ${err.message}`);
91});
92```
93
94## getRendererInfoSync<sup>10+</sup>
95
96getRendererInfoSync(): AudioRendererInfo
97
98获取当前创建的音频渲染器信息。同步返回结果。
99
100**系统能力:** SystemCapability.Multimedia.Audio.Renderer
101
102**返回值:**
103
104| 类型                                               | 说明                            |
105| -------------------------------------------------- | ------------------------------- |
106| [AudioRendererInfo](arkts-apis-audio-i.md#audiorendererinfo8) | 返回音频渲染器信息。 |
107
108**示例:**
109
110```ts
111import { BusinessError } from '@kit.BasicServicesKit';
112
113try {
114  let audioRendererInfo = audioRenderer.getRendererInfoSync();
115  console.info(`Succeeded in getting renderer info, AudioRendererInfo: ${JSON.stringify(audioRendererInfo)}.`);
116} catch (err) {
117  let error = err as BusinessError;
118  console.error(`Failed to get renderer info. Code: ${error.code}, message: ${error.message}`);
119}
120```
121
122## getStreamInfo<sup>8+</sup>
123
124getStreamInfo(callback: AsyncCallback<AudioStreamInfo\>): void
125
126获取音频流信息。使用callback异步回调。
127
128**系统能力:** SystemCapability.Multimedia.Audio.Renderer
129
130**参数:**
131
132| 参数名   | 类型                                                 | 必填 | 说明                 |
133| :------- | :--------------------------------------------------- | :--- | :------------------- |
134| callback | AsyncCallback<[AudioStreamInfo](arkts-apis-audio-i.md#audiostreaminfo8)\> | 是   | 回调函数。当获取音频流信息成功,err为undefined,data为获取到的音频流信息;否则为错误对象。 |
135
136**示例:**
137
138```ts
139import { BusinessError } from '@kit.BasicServicesKit';
140
141audioRenderer.getStreamInfo((err: BusinessError, streamInfo: audio.AudioStreamInfo) => {
142  console.info('Renderer GetStreamInfo:');
143  console.info(`Renderer sampling rate: ${streamInfo.samplingRate}`);
144  console.info(`Renderer channel: ${streamInfo.channels}`);
145  console.info(`Renderer format: ${streamInfo.sampleFormat}`);
146  console.info(`Renderer encoding type: ${streamInfo.encodingType}`);
147});
148```
149
150## getStreamInfo<sup>8+</sup>
151
152getStreamInfo(): Promise<AudioStreamInfo\>
153
154获取音频流信息。使用Promise异步回调。
155
156**系统能力:** SystemCapability.Multimedia.Audio.Renderer
157
158**返回值:**
159
160| 类型                                           | 说明                   |
161| :--------------------------------------------- | :--------------------- |
162| Promise<[AudioStreamInfo](arkts-apis-audio-i.md#audiostreaminfo8)\> | Promise对象,返回音频流信息。 |
163
164**示例:**
165
166```ts
167import { BusinessError } from '@kit.BasicServicesKit';
168
169audioRenderer.getStreamInfo().then((streamInfo: audio.AudioStreamInfo) => {
170  console.info('Renderer GetStreamInfo:');
171  console.info(`Renderer sampling rate: ${streamInfo.samplingRate}`);
172  console.info(`Renderer channel: ${streamInfo.channels}`);
173  console.info(`Renderer format: ${streamInfo.sampleFormat}`);
174  console.info(`Renderer encoding type: ${streamInfo.encodingType}`);
175}).catch((err: BusinessError) => {
176  console.error(`ERROR: ${err}`);
177});
178```
179
180## getStreamInfoSync<sup>10+</sup>
181
182getStreamInfoSync(): AudioStreamInfo
183
184获取音频流信息。同步返回结果。
185
186**系统能力:** SystemCapability.Multimedia.Audio.Renderer
187
188**返回值:**
189
190| 类型                                           | 说明                   |
191| :--------------------------------------------- | :--------------------- |
192| [AudioStreamInfo](arkts-apis-audio-i.md#audiostreaminfo8) | 返回音频流信息。 |
193
194**示例:**
195
196```ts
197import { BusinessError } from '@kit.BasicServicesKit';
198
199try {
200  let streamInfo: audio.AudioStreamInfo = audioRenderer.getStreamInfoSync();
201  console.info(`Renderer sampling rate: ${streamInfo.samplingRate}`);
202  console.info(`Renderer channel: ${streamInfo.channels}`);
203  console.info(`Renderer format: ${streamInfo.sampleFormat}`);
204  console.info(`Renderer encoding type: ${streamInfo.encodingType}`);
205} catch (err) {
206  let error = err as BusinessError;
207  console.error(`ERROR: ${error}`);
208}
209```
210
211## getAudioStreamId<sup>9+</sup>
212
213getAudioStreamId(callback: AsyncCallback<number\>): void
214
215获取音频流id。使用callback异步回调。
216
217**系统能力:** SystemCapability.Multimedia.Audio.Renderer
218
219**参数:**
220
221| 参数名   | 类型                                                 | 必填 | 说明                 |
222| :------- | :--------------------------------------------------- | :--- | :------------------- |
223| callback | AsyncCallback<number\> | 是   | 回调函数。当获取音频流id成功,err为undefined,data为获取到的音频流id;否则为错误对象。 |
224
225**示例:**
226
227```ts
228import { BusinessError } from '@kit.BasicServicesKit';
229
230audioRenderer.getAudioStreamId((err: BusinessError, streamId: number) => {
231  console.info(`Renderer GetStreamId: ${streamId}`);
232});
233```
234
235## getAudioStreamId<sup>9+</sup>
236
237getAudioStreamId(): Promise<number\>
238
239获取音频流id。使用Promise异步回调。
240
241**系统能力:** SystemCapability.Multimedia.Audio.Renderer
242
243**返回值:**
244
245| 类型                                           | 说明                   |
246| :--------------------------------------------- | :--------------------- |
247| Promise<number\> | Promise对象,返回音频流id。 |
248
249**示例:**
250
251```ts
252import { BusinessError } from '@kit.BasicServicesKit';
253
254audioRenderer.getAudioStreamId().then((streamId: number) => {
255  console.info(`Renderer getAudioStreamId: ${streamId}`);
256}).catch((err: BusinessError) => {
257  console.error(`ERROR: ${err}`);
258});
259```
260
261## getAudioStreamIdSync<sup>10+</sup>
262
263getAudioStreamIdSync(): number
264
265获取音频流id。同步返回结果。
266
267**系统能力:** SystemCapability.Multimedia.Audio.Renderer
268
269**返回值:**
270
271| 类型                                           | 说明                   |
272| :--------------------------------------------- | :--------------------- |
273| number | 返回音频流id。 |
274
275**示例:**
276
277```ts
278import { BusinessError } from '@kit.BasicServicesKit';
279
280try {
281  let streamId: number = audioRenderer.getAudioStreamIdSync();
282  console.info(`Renderer getAudioStreamIdSync: ${streamId}`);
283} catch (err) {
284  let error = err as BusinessError;
285  console.error(`ERROR: ${error}`);
286}
287```
288
289## setAudioEffectMode<sup>10+</sup>
290
291setAudioEffectMode(mode: AudioEffectMode, callback: AsyncCallback\<void>): void
292
293设置当前音效模式。使用callback异步回调。
294
295**系统能力:** SystemCapability.Multimedia.Audio.Renderer
296
297**参数:**
298
299| 参数名   | 类型                                     | 必填 | 说明                     |
300| -------- | ---------------------------------------- | ---- | ------------------------ |
301| mode     | [AudioEffectMode](arkts-apis-audio-e.md#audioeffectmode10)    | 是   | 音效模式。               |
302| callback | AsyncCallback\<void>                     | 是   | 回调函数。当设置当前音效模式成功,err为undefined,否则为错误对象。 |
303
304**错误码:**
305
306以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
307
308| 错误码ID | 错误信息 |
309| ------- | ----------------------------------------------|
310| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
311| 6800101 | Parameter verification failed. Return by callback.  |
312
313**示例:**
314
315```ts
316import { BusinessError } from '@kit.BasicServicesKit';
317
318audioRenderer.setAudioEffectMode(audio.AudioEffectMode.EFFECT_DEFAULT, (err: BusinessError) => {
319  if (err) {
320    console.error('Failed to set params');
321  } else {
322    console.info('Callback invoked to indicate a successful audio effect mode setting.');
323  }
324});
325```
326
327## setAudioEffectMode<sup>10+</sup>
328
329setAudioEffectMode(mode: AudioEffectMode): Promise\<void>
330
331设置当前音效模式。使用Promise异步回调。
332
333**系统能力:** SystemCapability.Multimedia.Audio.Renderer
334
335**参数:**
336
337| 参数名 | 类型                                     | 必填 | 说明         |
338| ------ | ---------------------------------------- | ---- | ------------ |
339| mode   | [AudioEffectMode](arkts-apis-audio-e.md#audioeffectmode10)   | 是   | 音效模式。 |
340
341**返回值:**
342
343| 类型           | 说明                      |
344| -------------- | ------------------------- |
345| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
346
347**错误码:**
348
349以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
350
351| 错误码ID | 错误信息 |
352| ------- | ---------------------------------------------|
353| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
354| 6800101 | Parameter verification failed. Return by promise. |
355
356**示例:**
357
358```ts
359import { BusinessError } from '@kit.BasicServicesKit';
360
361audioRenderer.setAudioEffectMode(audio.AudioEffectMode.EFFECT_DEFAULT).then(() => {
362  console.info('setAudioEffectMode SUCCESS');
363}).catch((err: BusinessError) => {
364  console.error(`ERROR: ${err}`);
365});
366```
367
368## getAudioEffectMode<sup>10+</sup>
369
370getAudioEffectMode(callback: AsyncCallback\<AudioEffectMode>): void
371
372获取当前音效模式。使用callback异步回调。
373
374**系统能力:** SystemCapability.Multimedia.Audio.Renderer
375
376**参数:**
377
378| 参数名   | 类型                                                    | 必填 | 说明               |
379| -------- | ------------------------------------------------------- | ---- | ------------------ |
380| callback | AsyncCallback<[AudioEffectMode](arkts-apis-audio-e.md#audioeffectmode10)> | 是   | 回调函数。当获取当前音效模式成功,err为undefined,data为获取到的当前音效模式;否则为错误对象。 |
381
382**示例:**
383
384```ts
385import { BusinessError } from '@kit.BasicServicesKit';
386
387audioRenderer.getAudioEffectMode((err: BusinessError, effectMode: audio.AudioEffectMode) => {
388  if (err) {
389    console.error('Failed to get params');
390  } else {
391    console.info(`getAudioEffectMode: ${effectMode}`);
392  }
393});
394```
395
396## getAudioEffectMode<sup>10+</sup>
397
398getAudioEffectMode(): Promise\<AudioEffectMode>
399
400获取当前音效模式。使用Promise异步回调。
401
402**系统能力:** SystemCapability.Multimedia.Audio.Renderer
403
404**返回值:**
405
406| 类型                                              | 说明                      |
407| ------------------------------------------------- | ------------------------- |
408| Promise<[AudioEffectMode](arkts-apis-audio-e.md#audioeffectmode10)> | Promise对象,返回当前音效模式。 |
409
410**示例:**
411
412```ts
413import { BusinessError } from '@kit.BasicServicesKit';
414
415audioRenderer.getAudioEffectMode().then((effectMode: audio.AudioEffectMode) => {
416  console.info(`getAudioEffectMode: ${effectMode}`);
417}).catch((err: BusinessError) => {
418  console.error(`ERROR: ${err}`);
419});
420```
421
422## start<sup>8+</sup>
423
424start(callback: AsyncCallback<void\>): void
425
426启动音频渲染器。使用callback异步回调。
427
428**系统能力:** SystemCapability.Multimedia.Audio.Renderer
429
430**参数:**
431
432| 参数名   | 类型                 | 必填 | 说明       |
433| -------- | -------------------- | ---- | ---------- |
434| callback | AsyncCallback\<void> | 是   | 回调函数。当启动音频渲染器成功,err为undefined,否则为错误对象。异常将返回error对象:<br>错误码6800301:表示包含状态检查异常、焦点抢占失败、系统处理异常(具体错误查看系统日志)。 |
435
436**示例:**
437
438```ts
439import { BusinessError } from '@kit.BasicServicesKit';
440
441audioRenderer.start((err: BusinessError) => {
442  if (err) {
443    console.error('Renderer start failed.');
444  } else {
445    console.info('Renderer start success.');
446  }
447});
448```
449
450## start<sup>8+</sup>
451
452start(): Promise<void\>
453
454启动音频渲染器。使用Promise异步回调。
455
456**系统能力:** SystemCapability.Multimedia.Audio.Renderer
457
458**返回值:**
459
460| 类型           | 说明                      |
461| -------------- | ------------------------- |
462| Promise\<void> | Promise对象,成功表示启动音频渲染器成功。异常将返回error对象:<br>错误码6800301:表示包含状态检查异常、焦点抢占失败、系统处理异常(具体错误查看系统日志)。 |
463
464**示例:**
465
466```ts
467import { BusinessError } from '@kit.BasicServicesKit';
468
469audioRenderer.start().then(() => {
470  console.info('Renderer started');
471}).catch((err: BusinessError) => {
472  console.error(`ERROR: ${err}`);
473});
474```
475
476## pause<sup>8+</sup>
477
478pause(callback: AsyncCallback\<void>): void
479
480暂停音频渲染。使用callback异步回调。
481
482**系统能力:** SystemCapability.Multimedia.Audio.Renderer
483
484**参数:**
485
486| 参数名   | 类型                 | 必填 | 说明             |
487| -------- | -------------------- | ---- | ---------------- |
488| callback | AsyncCallback\<void> | 是   | 回调函数。当暂停渲染成功,err为undefined,否则为错误对象。 |
489
490**示例:**
491
492```ts
493import { BusinessError } from '@kit.BasicServicesKit';
494
495audioRenderer.pause((err: BusinessError) => {
496  if (err) {
497    console.error('Renderer pause failed');
498  } else {
499    console.info('Renderer paused.');
500  }
501});
502```
503
504## pause<sup>8+</sup>
505
506pause(): Promise\<void>
507
508暂停音频渲染。使用Promise异步回调。
509
510**系统能力:** SystemCapability.Multimedia.Audio.Renderer
511
512**返回值:**
513
514| 类型           | 说明                      |
515| -------------- | ------------------------- |
516| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
517
518**示例:**
519
520```ts
521import { BusinessError } from '@kit.BasicServicesKit';
522
523audioRenderer.pause().then(() => {
524  console.info('Renderer paused');
525}).catch((err: BusinessError) => {
526  console.error(`ERROR: ${err}`);
527});
528```
529
530## drain<sup>8+</sup>
531
532drain(callback: AsyncCallback\<void>): void
533
534检查缓冲区是否已被耗尽。使用callback异步回调。
535
536**系统能力:** SystemCapability.Multimedia.Audio.Renderer
537
538**参数:**
539
540| 参数名   | 类型                 | 必填 | 说明             |
541| -------- | -------------------- | ---- | ---------------- |
542| callback | AsyncCallback\<void> | 是   | 回调函数。当检查缓冲区是否已被耗尽成功,err为undefined,否则为错误对象。 |
543
544**示例:**
545
546```ts
547import { BusinessError } from '@kit.BasicServicesKit';
548
549audioRenderer.drain((err: BusinessError) => {
550  if (err) {
551    console.error('Renderer drain failed');
552  } else {
553    console.info('Renderer drained.');
554  }
555});
556```
557
558## drain<sup>8+</sup>
559
560drain(): Promise\<void>
561
562检查缓冲区是否已被耗尽。使用Promise异步回调。
563
564**系统能力:** SystemCapability.Multimedia.Audio.Renderer
565
566**返回值:**
567
568| 类型           | 说明                      |
569| -------------- | ------------------------- |
570| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
571
572**示例:**
573
574```ts
575import { BusinessError } from '@kit.BasicServicesKit';
576
577audioRenderer.drain().then(() => {
578  console.info('Renderer drained successfully');
579}).catch((err: BusinessError) => {
580  console.error(`ERROR: ${err}`);
581});
582```
583
584## flush<sup>11+</sup>
585
586flush(): Promise\<void>
587
588清空缓冲区([AudioState](arkts-apis-audio-e.md#audiostate8)为STATE_RUNNING、STATE_PAUSED、STATE_STOPPED状态下可用)。使用Promise异步回调。
589
590**系统能力:** SystemCapability.Multimedia.Audio.Renderer
591
592**返回值:**
593
594| 类型           | 说明                      |
595| -------------- | ------------------------- |
596| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
597
598**错误码:**
599
600以下错误码的详细介绍请参见[Audio错误码](errorcode-audio.md)。
601
602| 错误码ID | 错误信息 |
603| ------- | --------------------------------------------|
604| 6800103 | Operation not permit at current state. Return by promise. |
605
606**示例:**
607
608```ts
609import { BusinessError } from '@kit.BasicServicesKit';
610
611audioRenderer.flush().then(() => {
612  console.info('Renderer flushed successfully');
613}).catch((err: BusinessError) => {
614  console.error(`ERROR: ${err}`);
615});
616```
617
618## stop<sup>8+</sup>
619
620stop(callback: AsyncCallback\<void>): void
621
622停止音频渲染。使用callback异步回调。
623
624**系统能力:** SystemCapability.Multimedia.Audio.Renderer
625
626**参数:**
627
628| 参数名   | 类型                 | 必填 | 说明             |
629| -------- | -------------------- | ---- | ---------------- |
630| callback | AsyncCallback\<void> | 是   | 回调函数。当停止渲染成功,err为undefined,否则为错误对象。 |
631
632**示例:**
633
634```ts
635import { BusinessError } from '@kit.BasicServicesKit';
636
637audioRenderer.stop((err: BusinessError) => {
638  if (err) {
639    console.error('Renderer stop failed');
640  } else {
641    console.info('Renderer stopped.');
642  }
643});
644```
645
646## stop<sup>8+</sup>
647
648stop(): Promise\<void>
649
650停止音频渲染。使用Promise异步回调。
651
652**系统能力:** SystemCapability.Multimedia.Audio.Renderer
653
654**返回值:**
655
656| 类型           | 说明                      |
657| -------------- | ------------------------- |
658| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
659
660**示例:**
661
662```ts
663import { BusinessError } from '@kit.BasicServicesKit';
664
665audioRenderer.stop().then(() => {
666  console.info('Renderer stopped successfully');
667}).catch((err: BusinessError) => {
668  console.error(`ERROR: ${err}`);
669});
670```
671
672## release<sup>8+</sup>
673
674release(callback: AsyncCallback\<void>): void
675
676释放音频渲染器。使用callback异步回调。
677
678**系统能力:** SystemCapability.Multimedia.Audio.Renderer
679
680**参数:**
681
682| 参数名   | 类型                 | 必填 | 说明             |
683| -------- | -------------------- | ---- | ---------------- |
684| callback | AsyncCallback\<void> | 是   | 回调函数。当释放音频渲染器成功,err为undefined,否则为错误对象。 |
685
686**示例:**
687
688```ts
689import { BusinessError } from '@kit.BasicServicesKit';
690
691audioRenderer.release((err: BusinessError) => {
692  if (err) {
693    console.error('Renderer release failed');
694  } else {
695    console.info('Renderer released.');
696  }
697});
698```
699
700## release<sup>8+</sup>
701
702release(): Promise\<void>
703
704释放音频渲染器。使用Promise异步回调。
705
706**系统能力:** SystemCapability.Multimedia.Audio.Renderer
707
708**返回值:**
709
710| 类型           | 说明                      |
711| -------------- | ------------------------- |
712| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
713
714**示例:**
715
716```ts
717import { BusinessError } from '@kit.BasicServicesKit';
718
719audioRenderer.release().then(() => {
720  console.info('Renderer released successfully');
721}).catch((err: BusinessError) => {
722  console.error(`ERROR: ${err}`);
723});
724```
725
726## getAudioTime<sup>8+</sup>
727
728getAudioTime(callback: AsyncCallback\<number>): void
729
730获取当前播放位置的时间戳(从1970年1月1日开始),单位为纳秒。使用callback异步回调。
731
732**系统能力:** SystemCapability.Multimedia.Audio.Renderer
733
734**参数:**
735
736| 参数名   | 类型                   | 必填 | 说明             |
737| -------- | ---------------------- | ---- | ---------------- |
738| callback | AsyncCallback\<number> | 是   | 回调函数。当获取时间戳成功,err为undefined,data为获取到的时间戳;否则为错误对象。 |
739
740**示例:**
741
742```ts
743import { BusinessError } from '@kit.BasicServicesKit';
744
745audioRenderer.getAudioTime((err: BusinessError, timestamp: number) => {
746  console.info(`Current timestamp: ${timestamp}`);
747});
748```
749
750## getAudioTime<sup>8+</sup>
751
752getAudioTime(): Promise\<number>
753
754获取当前播放位置的时间戳(从1970年1月1日开始),单位为纳秒。使用Promise异步回调。
755
756**系统能力:** SystemCapability.Multimedia.Audio.Renderer
757
758**返回值:**
759
760| 类型             | 说明                    |
761| ---------------- | ----------------------- |
762| Promise\<number> | Promise对象,返回时间戳。 |
763
764**示例:**
765
766```ts
767import { BusinessError } from '@kit.BasicServicesKit';
768
769audioRenderer.getAudioTime().then((timestamp: number) => {
770  console.info(`Current timestamp: ${timestamp}`);
771}).catch((err: BusinessError) => {
772  console.error(`ERROR: ${err}`);
773});
774```
775
776## getAudioTimeSync<sup>10+</sup>
777
778getAudioTimeSync(): number
779
780获取当前播放位置的时间戳(从1970年1月1日开始),单位为纳秒。同步返回结果。
781
782**系统能力:** SystemCapability.Multimedia.Audio.Renderer
783
784**返回值:**
785
786| 类型             | 说明                    |
787| ---------------- | ----------------------- |
788| number | 返回时间戳。 |
789
790**示例:**
791
792```ts
793import { BusinessError } from '@kit.BasicServicesKit';
794
795try {
796  let timestamp: number = audioRenderer.getAudioTimeSync();
797  console.info(`Current timestamp: ${timestamp}`);
798} catch (err) {
799  let error = err as BusinessError;
800  console.error(`ERROR: ${error}`);
801}
802```
803
804## getAudioTimestampInfo<sup>19+</sup>
805
806getAudioTimestampInfo(): Promise\<AudioTimestampInfo>
807
808获取输出音频流时间戳和位置信息,适配倍速接口。使用Promise异步回调。
809
810获取输出音频流时间戳和位置信息,通常用于进行音画同步对齐。
811
812注意,当实际播放位置(framePosition)为0时,时间戳(timestamp)是固定值,直到流真正跑起来时才会更新。当调用Flush接口时实际播放位置也会被重置。
813
814当音频流路由(route)变化时,例如设备变化或者输出类型变化时,播放位置也会被重置,但此时时间戳仍会持续增长。推荐当实际播放位置和时间戳的变化稳定后再使用该接口获取的值。该接口适配倍速接口,例如当播放速度设置为2倍时,播放位置的增长速度也会返回为正常的2倍。
815
816**系统能力:** SystemCapability.Multimedia.Audio.Renderer
817
818**返回值:**
819
820| 类型                                                    | 说明                    |
821|-------------------------------------------------------| ----------------------- |
822| Promise\<[AudioTimestampInfo](arkts-apis-audio-i.md#audiotimestampinfo19)> | Promise对象,返回音频流时间戳和当前数据帧位置信息。 |
823
824**错误码:**
825
826以下错误码的详细介绍请参见[Audio错误码](errorcode-audio.md)。
827
828| 错误码ID | 错误信息 |
829| ------- | --------------------------------------------|
830| 6800103 | Operation not permit at current state. |
831
832**示例:**
833
834```ts
835import { BusinessError } from '@kit.BasicServicesKit';
836
837audioRenderer.getAudioTimestampInfo().then((audioTimestampInfo: audio.AudioTimestampInfo) => {
838  console.info(`Current timestamp: ${audioTimestampInfo.timestamp}`);
839}).catch((err: BusinessError) => {
840  console.error(`ERROR: ${err}`);
841});
842```
843
844## getAudioTimestampInfoSync<sup>19+</sup>
845
846getAudioTimestampInfoSync(): AudioTimestampInfo
847
848获取音频流时间戳和当前数据帧位置信息。同步返回结果。
849
850**系统能力:** SystemCapability.Multimedia.Audio.Renderer
851
852**返回值:**
853
854| 类型             | 说明                    |
855| ---------------- | ----------------------- |
856| [AudioTimestampInfo](arkts-apis-audio-i.md#audiotimestampinfo19) | 返回音频流时间戳和当前数据帧位置信息。 |
857
858**错误码:**
859
860以下错误码的详细介绍请参见[Audio错误码](errorcode-audio.md)。
861
862| 错误码ID | 错误信息 |
863| ------- | --------------------------------------------|
864| 6800103 | Operation not permit at current state. |
865
866**示例:**
867
868```ts
869import { BusinessError } from '@kit.BasicServicesKit';
870
871try {
872  let audioTimestampInfo: audio.AudioTimestampInfo = audioRenderer.getAudioTimestampInfoSync();
873  console.info(`Current timestamp: ${audioTimestampInfo.timestamp}`);
874} catch (err) {
875  let error = err as BusinessError;
876  console.error(`ERROR: ${error}`);
877}
878```
879
880## getBufferSize<sup>8+</sup>
881
882getBufferSize(callback: AsyncCallback\<number>): void
883
884获取音频渲染器的最小缓冲区大小。使用callback异步回调。
885
886**系统能力:** SystemCapability.Multimedia.Audio.Renderer
887
888**参数:**
889
890| 参数名   | 类型                   | 必填 | 说明                 |
891| -------- | ---------------------- | ---- | -------------------- |
892| callback | AsyncCallback\<number> | 是   | 回调函数。当获取音频渲染器的最小缓冲区大小成功,err为undefined,data为获取到的最小缓冲区大小;否则为错误对象。 |
893
894**示例:**
895
896```ts
897import { BusinessError } from '@kit.BasicServicesKit';
898
899let bufferSize: number;
900
901audioRenderer.getBufferSize((err: BusinessError, data: number) => {
902  if (err) {
903    console.error('getBufferSize error');
904  } else {
905    console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
906    bufferSize = data;
907  }
908});
909```
910
911## getBufferSize<sup>8+</sup>
912
913getBufferSize(): Promise\<number>
914
915获取音频渲染器的最小缓冲区大小。使用Promise异步回调。
916
917**系统能力:** SystemCapability.Multimedia.Audio.Renderer
918
919**返回值:**
920
921| 类型             | 说明                        |
922| ---------------- | --------------------------- |
923| Promise\<number> | Promise对象,返回缓冲区大小。 |
924
925**示例:**
926
927```ts
928import { BusinessError } from '@kit.BasicServicesKit';
929
930let bufferSize: number;
931
932audioRenderer.getBufferSize().then((data: number) => {
933  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
934  bufferSize = data;
935}).catch((err: BusinessError) => {
936  console.error(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
937});
938```
939
940## getBufferSizeSync<sup>10+</sup>
941
942getBufferSizeSync(): number
943
944获取音频渲染器的最小缓冲区大小。同步返回结果。
945
946**系统能力:** SystemCapability.Multimedia.Audio.Renderer
947
948**返回值:**
949
950| 类型             | 说明                        |
951| ---------------- | --------------------------- |
952| number | 返回缓冲区大小。 |
953
954**示例:**
955
956```ts
957import { BusinessError } from '@kit.BasicServicesKit';
958
959let bufferSize: number = 0;
960
961try {
962  bufferSize = audioRenderer.getBufferSizeSync();
963  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${bufferSize}`);
964} catch (err) {
965  let error = err as BusinessError;
966  console.error(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${error}`);
967}
968```
969
970## setSpeed<sup>11+</sup>
971
972setSpeed(speed: number): void
973
974设置播放倍速。
975
976**系统能力:** SystemCapability.Multimedia.Audio.Renderer
977
978**参数:**
979
980| 参数名 | 类型                                     | 必填 | 说明                   |
981| ------ | ---------------------------------------- | ---- |----------------------|
982| speed | number | 是   | 设置播放的倍速值(倍速范围:0.25-4.0)。 |
983
984**错误码:**
985
986以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
987
988| 错误码ID | 错误信息 |
989| ------- | --------------------------------------------|
990| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
991| 6800101 | Parameter verification failed. |
992
993**示例:**
994
995```ts
996audioRenderer.setSpeed(1.5);
997```
998
999## getSpeed<sup>11+</sup>
1000
1001getSpeed(): number
1002
1003获取播放倍速。
1004
1005**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1006
1007**返回值:**
1008
1009| 类型                                              | 说明        |
1010| ------------------------------------------------- |-----------|
1011| number | 返回播放的倍速值。 |
1012
1013**示例:**
1014
1015```ts
1016let speed = audioRenderer.getSpeed();
1017```
1018
1019## setInterruptMode<sup>9+</sup>
1020
1021setInterruptMode(mode: InterruptMode): Promise&lt;void&gt;
1022
1023设置应用的焦点模型。使用Promise异步回调。
1024
1025**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
1026
1027**参数:**
1028
1029| 参数名     | 类型                                | 必填   | 说明        |
1030| ---------- | ---------------------------------- | ------ | ---------- |
1031| mode       | [InterruptMode](arkts-apis-audio-e.md#interruptmode9)    | 是     | 焦点模型。  |
1032
1033**返回值:**
1034
1035| 类型                | 说明                          |
1036| ------------------- | ----------------------------- |
1037| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
1038
1039**示例:**
1040
1041```ts
1042import { BusinessError } from '@kit.BasicServicesKit';
1043
1044let mode = 0;
1045
1046audioRenderer.setInterruptMode(mode).then(() => {
1047  console.info('setInterruptMode Success!');
1048}).catch((err: BusinessError) => {
1049  console.error(`setInterruptMode Fail: ${err}`);
1050});
1051```
1052## setInterruptMode<sup>9+</sup>
1053
1054setInterruptMode(mode: InterruptMode, callback: AsyncCallback\<void>): void
1055
1056设置应用的焦点模型。使用callback异步回调。
1057
1058**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
1059
1060**参数:**
1061
1062| 参数名   | 类型                                | 必填   | 说明            |
1063| ------- | ----------------------------------- | ------ | -------------- |
1064|mode     | [InterruptMode](arkts-apis-audio-e.md#interruptmode9)     | 是     | 焦点模型。|
1065|callback | AsyncCallback\<void>                 | 是     |回调函数。当设置应用的焦点模型成功,err为undefined,否则为错误对象。|
1066
1067**示例:**
1068
1069```ts
1070import { BusinessError } from '@kit.BasicServicesKit';
1071
1072let mode = 1;
1073
1074audioRenderer.setInterruptMode(mode, (err: BusinessError) => {
1075  if(err){
1076    console.error(`setInterruptMode Fail: ${err}`);
1077  }
1078  console.info('setInterruptMode Success!');
1079});
1080```
1081
1082## setInterruptModeSync<sup>10+</sup>
1083
1084setInterruptModeSync(mode: InterruptMode): void
1085
1086设置应用的焦点模型。同步设置。
1087
1088**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
1089
1090**参数:**
1091
1092| 参数名     | 类型                                | 必填   | 说明        |
1093| ---------- | ---------------------------------- | ------ | ---------- |
1094| mode       | [InterruptMode](arkts-apis-audio-e.md#interruptmode9)    | 是     | 焦点模型。  |
1095
1096**错误码:**
1097
1098以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
1099
1100| 错误码ID | 错误信息 |
1101| ------- | --------------------------------------------|
1102| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
1103| 6800101 | Parameter verification failed. |
1104
1105**示例:**
1106
1107```ts
1108import { BusinessError } from '@kit.BasicServicesKit';
1109
1110try {
1111  audioRenderer.setInterruptModeSync(0);
1112  console.info('setInterruptMode Success!');
1113} catch (err) {
1114  let error = err as BusinessError;
1115  console.error(`setInterruptMode Fail: ${error}`);
1116}
1117```
1118
1119## setVolume<sup>9+</sup>
1120
1121setVolume(volume: number): Promise&lt;void&gt;
1122
1123设置音频流的音量。使用Promise异步回调。
1124
1125**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1126
1127**参数:**
1128
1129| 参数名     | 类型    | 必填   | 说明                 |
1130| ---------- | ------- | ------ | ------------------- |
1131| volume     | number  | 是     | 音量值范围为[0.0, 1.0]。 |
1132
1133**返回值:**
1134
1135| 类型                | 说明                          |
1136| ------------------- | ----------------------------- |
1137| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
1138
1139**示例:**
1140
1141```ts
1142import { BusinessError } from '@kit.BasicServicesKit';
1143
1144audioRenderer.setVolume(0.5).then(() => {
1145  console.info('setVolume Success!');
1146}).catch((err: BusinessError) => {
1147  console.error(`setVolume Fail: ${err}`);
1148});
1149```
1150## setVolume<sup>9+</sup>
1151
1152setVolume(volume: number, callback: AsyncCallback\<void>): void
1153
1154设置音频流的音量。使用callback异步回调。
1155
1156**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1157
1158**参数:**
1159
1160| 参数名  | 类型       | 必填   | 说明                 |
1161| ------- | -----------| ------ | ------------------- |
1162|volume   | number     | 是     | 音量值范围为[0.0, 1.0]。 |
1163|callback | AsyncCallback\<void> | 是     |回调函数。当设置应用的音量成功,err为undefined,否则为错误对象。|
1164
1165**示例:**
1166
1167```ts
1168import { BusinessError } from '@kit.BasicServicesKit';
1169
1170audioRenderer.setVolume(0.5, (err: BusinessError) => {
1171  if(err){
1172    console.error(`setVolume Fail: ${err}`);
1173    return;
1174  }
1175  console.info('setVolume Success!');
1176});
1177```
1178## getVolume<sup>12+</sup>
1179
1180getVolume(): number
1181
1182获取音频流的音量。同步返回结果。
1183
1184**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1185
1186**返回值:**
1187
1188| 类型             | 说明                        |
1189| ---------------- | --------------------------- |
1190| number | 返回音量大小,音量值范围为[0.0, 1.0]。 |
1191
1192**示例:**
1193
1194```ts
1195import { BusinessError } from '@kit.BasicServicesKit';
1196
1197try {
1198  let value: number = audioRenderer.getVolume();
1199  console.info(`Indicate that the volume is obtained ${value}.`);
1200} catch (err) {
1201  let error = err as BusinessError;
1202  console.error(`Failed to obtain the volume, error ${error}.`);
1203}
1204```
1205
1206## getMinStreamVolume<sup>10+</sup>
1207
1208getMinStreamVolume(callback: AsyncCallback&lt;number&gt;): void
1209
1210获取音频流的最小音量。使用callback异步回调。
1211
1212**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1213
1214**参数:**
1215
1216| 参数名  | 类型       | 必填   | 说明                 |
1217| ------- | -----------| ------ | ------------------- |
1218|callback |AsyncCallback&lt;number&gt; | 是     |回调函数。当获取音频流的最小音量成功,err为undefined,data为获取到的应用基于音频流的最小音量(音量范围[0, 1]);否则为错误对象。|
1219
1220**示例:**
1221
1222```ts
1223import { BusinessError } from '@kit.BasicServicesKit';
1224
1225audioRenderer.getMinStreamVolume((err: BusinessError, minVolume: number) => {
1226  if (err) {
1227    console.error(`getMinStreamVolume error: ${err}`);
1228  } else {
1229    console.info(`getMinStreamVolume Success! ${minVolume}`);
1230  }
1231});
1232```
1233## getMinStreamVolume<sup>10+</sup>
1234
1235getMinStreamVolume(): Promise&lt;number&gt;
1236
1237获取音频流的最小音量。使用Promise异步回调。
1238
1239**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1240
1241**返回值:**
1242
1243| 类型                | 说明                          |
1244| ------------------- | ----------------------------- |
1245| Promise&lt;number&gt;| Promise对象,返回音频流最小音量(音量范围[0, 1])。|
1246
1247**示例:**
1248
1249```ts
1250import { BusinessError } from '@kit.BasicServicesKit';
1251
1252audioRenderer.getMinStreamVolume().then((value: number) => {
1253  console.info(`Get min stream volume Success! ${value}`);
1254}).catch((err: BusinessError) => {
1255  console.error(`Get min stream volume Fail: ${err}`);
1256});
1257```
1258
1259## getMinStreamVolumeSync<sup>10+</sup>
1260
1261getMinStreamVolumeSync(): number
1262
1263获取音频流的最小音量。同步返回结果。
1264
1265**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1266
1267**返回值:**
1268
1269| 类型                | 说明                          |
1270| ------------------- | ----------------------------- |
1271| number| 返回音频流最小音量(音量范围[0, 1])。|
1272
1273**示例:**
1274
1275```ts
1276import { BusinessError } from '@kit.BasicServicesKit';
1277
1278try {
1279  let value: number = audioRenderer.getMinStreamVolumeSync();
1280  console.info(`Get min stream volume Success! ${value}`);
1281} catch (err) {
1282  let error = err as BusinessError;
1283  console.error(`Get min stream volume Fail: ${error}`);
1284}
1285```
1286
1287## getMaxStreamVolume<sup>10+</sup>
1288
1289getMaxStreamVolume(callback: AsyncCallback&lt;number&gt;): void
1290
1291获取音频流的最大音量。使用callback异步回调。
1292
1293**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1294
1295**参数:**
1296
1297| 参数名  | 类型       | 必填   | 说明                 |
1298| ------- | -----------| ------ | ------------------- |
1299|callback | AsyncCallback&lt;number&gt; | 是     |回调函数。当获取音频流的最大音量成功,err为undefined,data为获取到的应用基于音频流的最大音量(音量范围[0, 1]);否则为错误对象。|
1300
1301**示例:**
1302
1303```ts
1304import { BusinessError } from '@kit.BasicServicesKit';
1305
1306audioRenderer.getMaxStreamVolume((err: BusinessError, maxVolume: number) => {
1307  if (err) {
1308    console.error(`getMaxStreamVolume Fail: ${err}`);
1309  } else {
1310    console.info(`getMaxStreamVolume Success! ${maxVolume}`);
1311  }
1312});
1313```
1314## getMaxStreamVolume<sup>10+</sup>
1315
1316getMaxStreamVolume(): Promise&lt;number&gt;
1317
1318获取音频流的最大音量。使用Promise异步回调。
1319
1320**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1321
1322**返回值:**
1323
1324| 类型                | 说明                          |
1325| ------------------- | ----------------------------- |
1326| Promise&lt;number&gt;| Promise对象,返回音频流最大音量(音量范围[0, 1])。|
1327
1328**示例:**
1329
1330```ts
1331import { BusinessError } from '@kit.BasicServicesKit';
1332
1333audioRenderer.getMaxStreamVolume().then((value: number) => {
1334  console.info(`Get max stream volume Success! ${value}`);
1335}).catch((err: BusinessError) => {
1336  console.error(`Get max stream volume Fail: ${err}`);
1337});
1338```
1339
1340## getMaxStreamVolumeSync<sup>10+</sup>
1341
1342getMaxStreamVolumeSync(): number
1343
1344获取音频流的最大音量。同步返回结果。
1345
1346**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1347
1348**返回值:**
1349
1350| 类型                | 说明                          |
1351| ------------------- | ----------------------------- |
1352| number| 返回音频流最大音量(音量范围[0, 1])。|
1353
1354**示例:**
1355
1356```ts
1357import { BusinessError } from '@kit.BasicServicesKit';
1358
1359try {
1360  let value: number = audioRenderer.getMaxStreamVolumeSync();
1361  console.info(`Get max stream volume Success! ${value}`);
1362} catch (err) {
1363  let error = err as BusinessError;
1364  console.error(`Get max stream volume Fail: ${error}`);
1365}
1366```
1367
1368## getUnderflowCount<sup>10+</sup>
1369
1370getUnderflowCount(callback: AsyncCallback&lt;number&gt;): void
1371
1372获取当前播放音频流的欠载音频帧数量。使用callback异步回调。
1373
1374**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1375
1376**参数:**
1377
1378| 参数名  | 类型       | 必填   | 说明                 |
1379| ------- | -----------| ------ | ------------------- |
1380|callback | AsyncCallback&lt;number&gt; | 是     |回调函数。当获取当前播放音频流的欠载音频帧数量成功,err为undefined,data为获取到的当前播放音频流的欠载音频帧数量;否则为错误对象。|
1381
1382**示例:**
1383
1384```ts
1385import { BusinessError } from '@kit.BasicServicesKit';
1386
1387audioRenderer.getUnderflowCount((err: BusinessError, underflowCount: number) => {
1388  if (err) {
1389    console.error(`getUnderflowCount Fail: ${err}`);
1390  } else {
1391    console.info(`getUnderflowCount Success! ${underflowCount}`);
1392  }
1393});
1394```
1395## getUnderflowCount<sup>10+</sup>
1396
1397getUnderflowCount(): Promise&lt;number&gt;
1398
1399获取当前播放音频流的欠载音频帧数量。使用Promise异步回调。
1400
1401**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1402
1403**返回值:**
1404
1405| 类型                | 说明                          |
1406| ------------------- | ----------------------------- |
1407| Promise&lt;number&gt;| Promise对象,返回音频流的欠载音频帧数量。|
1408
1409**示例:**
1410
1411```ts
1412import { BusinessError } from '@kit.BasicServicesKit';
1413
1414audioRenderer.getUnderflowCount().then((value: number) => {
1415  console.info(`Get underflow count Success! ${value}`);
1416}).catch((err: BusinessError) => {
1417  console.error(`Get underflow count Fail: ${err}`);
1418});
1419```
1420
1421## getUnderflowCountSync<sup>10+</sup>
1422
1423getUnderflowCountSync(): number
1424
1425获取当前播放音频流的欠载音频帧数量,同步返回数据。
1426
1427**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1428
1429**返回值:**
1430
1431| 类型                | 说明                          |
1432| ------------------- | ----------------------------- |
1433| number| 返回音频流的欠载音频帧数量。|
1434
1435**示例:**
1436
1437```ts
1438import { BusinessError } from '@kit.BasicServicesKit';
1439
1440try {
1441  let value: number = audioRenderer.getUnderflowCountSync();
1442  console.info(`Get underflow count Success! ${value}`);
1443} catch (err) {
1444  let error = err as BusinessError;
1445  console.error(`Get underflow count Fail: ${error}`);
1446}
1447```
1448
1449## getCurrentOutputDevices<sup>10+</sup>
1450
1451getCurrentOutputDevices(callback: AsyncCallback&lt;AudioDeviceDescriptors&gt;): void
1452
1453获取音频流输出设备信息。使用callback异步回调。
1454
1455**系统能力:** SystemCapability.Multimedia.Audio.Device
1456
1457**参数:**
1458
1459| 参数名  | 类型       | 必填   | 说明                 |
1460| ------- | -----------| ------ | ------------------- |
1461|callback | AsyncCallback\<[AudioDeviceDescriptors](arkts-apis-audio-t.md#audiodevicedescriptors)>| 是     |回调函数。当获取音频流输出设备信息成功,err为undefined,data为获取到的音频流输出设备信息;否则为错误对象。|
1462
1463**示例:**
1464
1465```ts
1466import { BusinessError } from '@kit.BasicServicesKit';
1467
1468audioRenderer.getCurrentOutputDevices((err: BusinessError, deviceInfo: audio.AudioDeviceDescriptors) => {
1469  if (err) {
1470    console.error(`getCurrentOutputDevices Fail: ${err}`);
1471  } else {
1472    for (let i = 0; i < deviceInfo.length; i++) {
1473      console.info(`DeviceInfo id: ${deviceInfo[i].id}`);
1474      console.info(`DeviceInfo type: ${deviceInfo[i].deviceType}`);
1475      console.info(`DeviceInfo role: ${deviceInfo[i].deviceRole}`);
1476      console.info(`DeviceInfo name: ${deviceInfo[i].name}`);
1477      console.info(`DeviceInfo address: ${deviceInfo[i].address}`);
1478      console.info(`DeviceInfo samplerate: ${deviceInfo[i].sampleRates[0]}`);
1479      console.info(`DeviceInfo channelcount: ${deviceInfo[i].channelCounts[0]}`);
1480      console.info(`DeviceInfo channelmask: ${deviceInfo[i].channelMasks[0]}`);
1481    }
1482  }
1483});
1484```
1485## getCurrentOutputDevices<sup>10+</sup>
1486
1487getCurrentOutputDevices(): Promise&lt;AudioDeviceDescriptors&gt;
1488
1489获取音频流输出设备信息。使用Promise异步回调。
1490
1491**系统能力:** SystemCapability.Multimedia.Audio.Device
1492
1493**返回值:**
1494
1495| 类型                | 说明                          |
1496| ------------------- | ----------------------------- |
1497| Promise&lt;[AudioDeviceDescriptors](arkts-apis-audio-t.md#audiodevicedescriptors)&gt;| Promise对象,返回音频流的输出设备信息。 |
1498
1499**示例:**
1500
1501```ts
1502import { BusinessError } from '@kit.BasicServicesKit';
1503
1504audioRenderer.getCurrentOutputDevices().then((deviceInfo: audio.AudioDeviceDescriptors) => {
1505  for (let i = 0; i < deviceInfo.length; i++) {
1506    console.info(`DeviceInfo id: ${deviceInfo[i].id}`);
1507    console.info(`DeviceInfo type: ${deviceInfo[i].deviceType}`);
1508    console.info(`DeviceInfo role: ${deviceInfo[i].deviceRole}`);
1509    console.info(`DeviceInfo name: ${deviceInfo[i].name}`);
1510    console.info(`DeviceInfo address: ${deviceInfo[i].address}`);
1511    console.info(`DeviceInfo samplerate: ${deviceInfo[i].sampleRates[0]}`);
1512    console.info(`DeviceInfo channelcount: ${deviceInfo[i].channelCounts[0]}`);
1513    console.info(`DeviceInfo channelmask: ${deviceInfo[i].channelMasks[0]}`);
1514  }
1515}).catch((err: BusinessError) => {
1516  console.error(`Get current output devices Fail: ${err}`);
1517});
1518```
1519
1520## getCurrentOutputDevicesSync<sup>10+</sup>
1521
1522getCurrentOutputDevicesSync(): AudioDeviceDescriptors
1523
1524获取音频流输出设备信息。同步返回结果。
1525
1526**系统能力:** SystemCapability.Multimedia.Audio.Device
1527
1528**返回值:**
1529
1530| 类型                | 说明                          |
1531| ------------------- | ----------------------------- |
1532| [AudioDeviceDescriptors](arkts-apis-audio-t.md#audiodevicedescriptors) | 返回音频流的输出设备信息。 |
1533
1534**示例:**
1535
1536```ts
1537import { BusinessError } from '@kit.BasicServicesKit';
1538
1539try {
1540  let deviceInfo: audio.AudioDeviceDescriptors = audioRenderer.getCurrentOutputDevicesSync();
1541  for (let i = 0; i < deviceInfo.length; i++) {
1542    console.info(`DeviceInfo id: ${deviceInfo[i].id}`);
1543    console.info(`DeviceInfo type: ${deviceInfo[i].deviceType}`);
1544    console.info(`DeviceInfo role: ${deviceInfo[i].deviceRole}`);
1545    console.info(`DeviceInfo name: ${deviceInfo[i].name}`);
1546    console.info(`DeviceInfo address: ${deviceInfo[i].address}`);
1547    console.info(`DeviceInfo samplerate: ${deviceInfo[i].sampleRates[0]}`);
1548    console.info(`DeviceInfo channelcount: ${deviceInfo[i].channelCounts[0]}`);
1549    console.info(`DeviceInfo channelmask: ${deviceInfo[i].channelMasks[0]}`);
1550  }
1551} catch (err) {
1552  let error = err as BusinessError;
1553  console.error(`Get current output devices Fail: ${error}`);
1554}
1555```
1556## setChannelBlendMode<sup>11+</sup>
1557
1558setChannelBlendMode(mode: ChannelBlendMode): void
1559
1560设置单双声道混合模式。同步返回结果。
1561
1562**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1563
1564**参数:**
1565
1566| 参数名     | 类型                                | 必填 | 说明                                                     |
1567| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
1568| mode | [ChannelBlendMode](arkts-apis-audio-e.md#channelblendmode11) | 是   | 声道混合模式类型。                                             |
1569
1570**错误码:**
1571
1572以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
1573
1574| 错误码ID | 错误信息 |
1575| ------- | --------------------------------------------|
1576| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
1577| 6800101 | Parameter verification failed. |
1578| 6800103 | Operation not permit at current state.    |
1579
1580**示例:**
1581
1582```ts
1583let mode = audio.ChannelBlendMode.MODE_DEFAULT;
1584
1585audioRenderer.setChannelBlendMode(mode);
1586console.info(`BlendMode: ${mode}`);
1587```
1588## setVolumeWithRamp<sup>11+</sup>
1589
1590setVolumeWithRamp(volume: number, duration: number): void
1591
1592在指定时间范围内设置音量渐变模式。同步返回结果。
1593
1594**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1595
1596**参数:**
1597
1598| 参数名     | 类型                                | 必填 | 说明                                                     |
1599| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
1600| volume     | number | 是   | 渐变目标音量值,音量范围为[0.0, 1.0]。                                             |
1601| duration     | number | 是   | 渐变持续时间,单位为ms。                                             |
1602
1603**错误码:**
1604
1605以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
1606
1607| 错误码ID | 错误信息 |
1608| ------- | --------------------------------------------|
1609| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
1610| 6800101 | Parameter verification failed. |
1611
1612**示例:**
1613
1614```ts
1615let volume = 0.5;
1616let duration = 1000;
1617
1618audioRenderer.setVolumeWithRamp(volume, duration);
1619console.info(`setVolumeWithRamp: ${volume}`);
1620```
1621
1622## setSilentModeAndMixWithOthers<sup>12+</sup>
1623
1624setSilentModeAndMixWithOthers(on: boolean): void
1625
1626设置静音并发播放模式。
1627
1628当设置为true,打开静音并发播放模式,系统将让此音频流静音播放,并且不会打断其他音频流。设置为false,将关闭静音并发播放,音频流可根据系统焦点策略抢占焦点。
1629
1630**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1631
1632**参数:**
1633
1634| 参数名 | 类型                                     | 必填 | 说明                   |
1635| ------ | ---------------------------------------- | ---- |----------------------|
1636| on | boolean | 是   | 打开/关闭静音并发播放模式。true表示设置当前播放的音频流静音播放,并且不会打断其它音频流播放。false表示取消当前播放的音频流静音播放,音频流可根据系统焦点策略抢占焦点。 |
1637
1638**示例:**
1639
1640```ts
1641audioRenderer.setSilentModeAndMixWithOthers(true);
1642```
1643
1644## getSilentModeAndMixWithOthers<sup>12+</sup>
1645
1646getSilentModeAndMixWithOthers(): boolean
1647
1648获取静音并发播放模式。
1649
1650**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1651
1652**返回值:**
1653
1654| 类型                                              | 说明        |
1655| ------------------------------------------------- |-----------|
1656| boolean | 静音并发播放模式状态。返回true表示打开,返回false表示关闭。 |
1657
1658**示例:**
1659
1660```ts
1661let on = audioRenderer.getSilentModeAndMixWithOthers();
1662```
1663
1664## setDefaultOutputDevice<sup>12+</sup>
1665
1666setDefaultOutputDevice(deviceType: DeviceType): Promise&lt;void&gt;
1667
1668设置默认发声设备。使用Promise异步回调。
1669
1670> **说明:**
1671>
1672> - 本接口仅适用于[StreamUsage](arkts-apis-audio-e.md#streamusage)为语音消息、VoIP语音通话或者VoIP视频通话的场景,支持听筒、扬声器和系统默认设备。
1673>
1674> - 本接口允许在AudioRenderer创建后随时调用,系统记录应用设置的默认本机内置发声设备。应用启动播放时,若外接设备如蓝牙耳机或有线耳机已接入,系统优先从外接设备发声;否则,系统遵循应用设置的默认本机内置发声设备。
1675>
1676> - 本接口优先级低于[AVCastPicker](../apis-avsession-kit/ohos-multimedia-avcastpicker.md#avcastpicker)。如果使用AVCastPicker切换过发声设备,再次调用本接口切换设备将不生效。
1677
1678**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1679
1680**参数:**
1681
1682| 参数名     | 类型             | 必填   | 说明                                                      |
1683| ---------- |----------------| ------ |---------------------------------------------------------|
1684| deviceType | [DeviceType](arkts-apis-audio-e.md#devicetype) | 是     | 设备类型。<br>仅支持以下设备:EARPIECE(听筒)、SPEAKER(扬声器)和DEFAULT(系统默认设备)。 |
1685
1686**返回值:**
1687
1688| 类型                | 说明                          |
1689| ------------------- | ----------------------------- |
1690| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
1691
1692**错误码:**
1693
1694以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
1695
1696| 错误码ID | 错误信息 |
1697| ------- | --------------------------------------------|
1698| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
1699| 6800101 | Parameter verification failed. |
1700| 6800103 | Operation not permit at current state.    |
1701
1702**示例:**
1703
1704```ts
1705import { BusinessError } from '@kit.BasicServicesKit';
1706
1707// 本接口允许在AudioRenderer创建以后的任何时间被调用。
1708// 未播放时调用,系统会记录应用设置的默认本机内置发声设备,当应用启动播放时从设置的默认本机内置发声设备发声。
1709// 正在播放时调用,在没有外接设备如蓝牙耳机/有线耳机,系统会立即切换到设置的默认本机内置发声设备发声;否则系统会先记录应用设置的默认本机内置发声设备,等外接设备移除后再切换到设置的默认本机内置发声设备发声。
1710audioRenderer.setDefaultOutputDevice(audio.DeviceType.SPEAKER).then(() => {
1711  console.info('setDefaultOutputDevice Success!');
1712}).catch((err: BusinessError) => {
1713  console.error(`setDefaultOutputDevice Fail: ${err}`);
1714});
1715```
1716
1717## on('audioInterrupt')<sup>9+</sup>
1718
1719on(type: 'audioInterrupt', callback: Callback\<InterruptEvent>): void
1720
1721监听音频中断事件(当音频焦点发生变化时触发)。使用callback异步回调。
1722
1723AudioRenderer对象在start事件时获取焦点,在pause、stop等事件时释放焦点,无需开发者主动申请。
1724
1725调用此方法后,如果AudioRenderer对象获取焦点失败或发生中断事件(如被其他音频打断等),会收到[InterruptEvent](arkts-apis-audio-i.md#interruptevent9)。建议应用根据InterruptEvent的信息进行进一步处理。更多信息请参阅文档[音频焦点和音频会话介绍](../../media/audio/audio-playback-concurrency.md)。
1726
1727**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
1728
1729**参数:**
1730
1731| 参数名   | 类型                                         | 必填 | 说明                                                        |
1732| -------- | -------------------------------------------- | ---- | ----------------------------------------------------------- |
1733| type     | string                                       | 是   | 事件回调类型,支持的事件为'audioInterrupt',当音频焦点状态发生变化时,触发该事件。 |
1734| callback | Callback\<[InterruptEvent](arkts-apis-audio-i.md#interruptevent9)\> | 是   | 回调函数,返回中断事件信息。 |
1735
1736**错误码:**
1737
1738以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
1739
1740| 错误码ID | 错误信息 |
1741| ------- | --------------------------------------------|
1742| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
1743| 6800101 | Parameter verification failed. |
1744
1745**示例:**
1746
1747```ts
1748import { audio } from '@kit.AudioKit';
1749
1750let isPlaying: boolean = false; // 标识符,表示是否正在渲染。
1751let isDucked: boolean = false; // 标识符,表示是否被降低音量。
1752
1753audioRenderer.on('audioInterrupt', (interruptEvent: audio.InterruptEvent) => {
1754  // 在发生音频打断事件时,audioRenderer收到interruptEvent回调,此处根据其内容做相应处理。
1755  // 1. 可选:读取interruptEvent.forceType的类型,判断系统是否已强制执行相应操作。
1756  // 注意:默认焦点策略下,INTERRUPT_HINT_RESUME为INTERRUPT_SHARE类型,其余hintType均为INTERRUPT_FORCE类型。因此对forceType可不做判断。
1757  // 2. 必选:读取interruptEvent.hintType的类型,做出相应的处理。
1758  if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_FORCE) {
1759    // 音频焦点事件已由系统强制执行,应用需更新自身状态及显示内容等。
1760    switch (interruptEvent.hintType) {
1761      case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
1762        // 音频流已被暂停,临时失去焦点,待可重获焦点时会收到resume对应的interruptEvent。
1763        console.info('Force paused. Update playing status and stop writing');
1764        isPlaying = false; // 简化处理,代表应用切换至暂停状态的若干操作。
1765        break;
1766      case audio.InterruptHint.INTERRUPT_HINT_STOP:
1767        // 音频流已被停止,永久失去焦点,若想恢复渲染,需用户主动触发。
1768        console.info('Force stopped. Update playing status and stop writing');
1769        isPlaying = false; // 简化处理,代表应用切换至暂停状态的若干操作。
1770        break;
1771      case audio.InterruptHint.INTERRUPT_HINT_DUCK:
1772        // 音频流已被降低音量渲染。
1773        console.info('Force ducked. Update volume status');
1774        isDucked = true; // 简化处理,代表应用更新音量状态的若干操作。
1775        break;
1776      case audio.InterruptHint.INTERRUPT_HINT_UNDUCK:
1777        // 音频流已被恢复正常音量渲染。
1778        console.info('Force unducked. Update volume status');
1779        isDucked = false; // 简化处理,代表应用更新音量状态的若干操作。
1780        break;
1781      default:
1782        console.info('Invalid interruptEvent');
1783        break;
1784    }
1785  } else if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_SHARE) {
1786    // 音频焦点事件需由应用进行操作,应用可以自主选择如何处理该事件,建议应用遵从InterruptHint提示处理。
1787    switch (interruptEvent.hintType) {
1788      case audio.InterruptHint.INTERRUPT_HINT_RESUME:
1789        // 建议应用继续渲染(说明音频流此前被强制暂停,临时失去焦点,现在可以恢复渲染)。
1790        // 由于INTERRUPT_HINT_RESUME操作需要应用主动执行,系统无法强制,故INTERRUPT_HINT_RESUME事件一定为INTERRUPT_SHARE类型。
1791        console.info('Resume force paused renderer or ignore');
1792        // 若选择继续渲染,需在此处主动执行开始渲染的若干操作。
1793        break;
1794      default:
1795        console.info('Invalid interruptEvent');
1796        break;
1797    }
1798  }
1799});
1800```
1801
1802## off('audioInterrupt')<sup>18+</sup>
1803
1804off(type: 'audioInterrupt', callback?: Callback&lt;InterruptEvent&gt;): void
1805
1806取消监听音频中断事件。使用callback异步回调。
1807
1808**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
1809
1810**参数:**
1811
1812| 参数名   | 类型                                         | 必填 | 说明                                                         |
1813| -------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
1814| type     | string | 是   | 事件回调类型,支持的事件为'audioInterrupt',当取消监听音频中断事件时,触发该事件。 |
1815| callback | Callback\<[InterruptEvent](arkts-apis-audio-i.md#interruptevent9)\> | 否 |  回调函数,返回中断事件信息。 |
1816
1817**错误码:**
1818
1819以下错误码的详细介绍请参见[Audio错误码](errorcode-audio.md)。
1820
1821| 错误码ID | 错误信息 |
1822| ------- | --------------------------------------------|
1823| 6800101 | Parameter verification failed. |
1824
1825**示例:**
1826
1827```ts
1828// 取消该事件的所有监听。
1829audioRenderer.off('audioInterrupt');
1830
1831// 同一监听事件中,on方法和off方法传入callback参数一致,off方法取消对应on方法订阅的监听。
1832let isPlaying: boolean; // 标识符,表示是否正在渲染。
1833let isDucked: boolean; // 标识符,表示是否被降低音量。
1834
1835let audioInterruptCallback = (interruptEvent: audio.InterruptEvent) => {
1836  // 在发生音频打断事件时,audioRenderer收到interruptEvent回调,此处根据其内容做相应处理。
1837  // 1. 可选:读取interruptEvent.forceType的类型,判断系统是否已强制执行相应操作。
1838  // 注意:默认焦点策略下,INTERRUPT_HINT_RESUME为INTERRUPT_SHARE类型,其余hintType均为INTERRUPT_FORCE类型。因此对forceType可不做判断。
1839  // 2. 必选:读取interruptEvent.hintType的类型,做出相应的处理。
1840  if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_FORCE) {
1841    // 音频焦点事件已由系统强制执行,应用需更新自身状态及显示内容等。
1842    switch (interruptEvent.hintType) {
1843      case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
1844        // 音频流已被暂停,临时失去焦点,待可重获焦点时会收到resume对应的interruptEvent。
1845        console.info('Force paused. Update playing status and stop writing');
1846        isPlaying = false; // 简化处理,代表应用切换至暂停状态的若干操作。
1847        break;
1848      case audio.InterruptHint.INTERRUPT_HINT_STOP:
1849        // 音频流已被停止,永久失去焦点,若想恢复渲染,需用户主动触发。
1850        console.info('Force stopped. Update playing status and stop writing');
1851        isPlaying = false; // 简化处理,代表应用切换至暂停状态的若干操作。
1852        break;
1853      case audio.InterruptHint.INTERRUPT_HINT_DUCK:
1854        // 音频流已被降低音量渲染。
1855        console.info('Force ducked. Update volume status');
1856        isDucked = true; // 简化处理,代表应用更新音量状态的若干操作。
1857        break;
1858      case audio.InterruptHint.INTERRUPT_HINT_UNDUCK:
1859        // 音频流已被恢复正常音量渲染。
1860        console.info('Force unducked. Update volume status');
1861        isDucked = false; // 简化处理,代表应用更新音量状态的若干操作。
1862        break;
1863      default:
1864        console.info('Invalid interruptEvent');
1865        break;
1866    }
1867  } else if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_SHARE) {
1868    // 音频焦点事件需由应用进行操作,应用可以自主选择如何处理该事件,建议应用遵从InterruptHint提示处理。
1869    switch (interruptEvent.hintType) {
1870      case audio.InterruptHint.INTERRUPT_HINT_RESUME:
1871        // 建议应用继续渲染(说明音频流此前被强制暂停,临时失去焦点,现在可以恢复渲染)。
1872        // 由于INTERRUPT_HINT_RESUME操作需要应用主动执行,系统无法强制,故INTERRUPT_HINT_RESUME事件一定为INTERRUPT_SHARE类型。
1873        console.info('Resume force paused renderer or ignore');
1874        // 若选择继续渲染,需在此处主动执行开始渲染的若干操作。
1875        break;
1876      default:
1877        console.info('Invalid interruptEvent');
1878        break;
1879    }
1880  }
1881};
1882
1883audioRenderer.on('audioInterrupt', audioInterruptCallback);
1884
1885audioRenderer.off('audioInterrupt', audioInterruptCallback);
1886```
1887
1888## on('markReach')<sup>8+</sup>
1889
1890on(type: 'markReach', frame: number, callback: Callback&lt;number&gt;): void
1891
1892监听标记到达事件(当渲染的帧数到达frame参数的值时触发,仅调用一次)。使用callback异步回调。
1893
1894如果将frame设置为100,当渲染帧数到达第100帧时,系统将上报信息。
1895
1896**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1897
1898**参数:**
1899
1900| 参数名   | 类型                     | 必填 | 说明                                      |
1901| :------- | :----------------------- | :--- | :---------------------------------------- |
1902| type     | string                   | 是   | 事件回调类型,支持的事件为'markReach',当渲染的帧数到达frame参数的值时,触发该事件。 |
1903| frame    | number                   | 是   | 触发事件的帧数。该值必须大于0。         |
1904| callback | Callback\<number>         | 是   | 回调函数,返回frame参数的值。 |
1905
1906**示例:**
1907
1908```ts
1909audioRenderer.on('markReach', 1000, (position: number) => {
1910  if (position == 1000) {
1911    console.info('ON Triggered successfully');
1912  }
1913});
1914```
1915
1916
1917## off('markReach')<sup>8+</sup>
1918
1919off(type: 'markReach', callback?: Callback&lt;number&gt;): void
1920
1921取消监听标记到达事件。使用callback异步回调。
1922
1923**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1924
1925**参数:**
1926
1927| 参数名 | 类型   | 必填 | 说明                                              |
1928| :----- | :----- | :--- | :------------------------------------------------ |
1929| type   | string | 是   | 事件回调类型,支持的事件为'markReach',当取消监听标记到达事件时,触发该事件。 |
1930| callback<sup>18+</sup> | Callback\<number>         | 否  | 回调函数,返回frame参数的值。 |
1931
1932**示例:**
1933
1934```ts
1935// 取消该事件的所有监听。
1936audioRenderer.off('markReach');
1937
1938// 同一监听事件中,on方法和off方法传入callback参数一致,off方法取消对应on方法订阅的监听。
1939let markReachCallback = (position: number) => {
1940  if (position == 1000) {
1941    console.info('ON Triggered successfully');
1942  }
1943};
1944
1945audioRenderer.on('markReach', 1000, markReachCallback);
1946
1947audioRenderer.off('markReach', markReachCallback);
1948```
1949
1950## on('periodReach')<sup>8+</sup>
1951
1952on(type: 'periodReach', frame: number, callback: Callback&lt;number&gt;): void
1953
1954监听标记到达事件(每当渲染的帧数达到frame参数的值时触发,即按周期上报信息)。使用callback异步回调。
1955
1956如果将frame设置为10,每渲染10帧数据均会上报信息(例如:第10帧、第20帧、第30帧......)。
1957
1958**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1959
1960**参数:**
1961
1962| 参数名   | 类型                     | 必填 | 说明                                        |
1963| :------- | :----------------------- | :--- | :------------------------------------------ |
1964| type     | string                   | 是   | 事件回调类型,支持的事件为'periodReach',当渲染的帧数达到frame参数的值时,触发该事件。 |
1965| frame    | number                   | 是   | 触发事件的帧数。该值必须大于 0。           |
1966| callback | Callback\<number>         | 是   | 回调函数,返回frame参数的值。 |
1967
1968**示例:**
1969
1970```ts
1971audioRenderer.on('periodReach', 1000, (position: number) => {
1972  if (position == 1000) {
1973    console.info('ON Triggered successfully');
1974  }
1975});
1976```
1977
1978## off('periodReach')<sup>8+</sup>
1979
1980off(type: 'periodReach', callback?: Callback&lt;number&gt;): void
1981
1982取消监听标记到达事件。使用callback异步回调。
1983
1984**系统能力:** SystemCapability.Multimedia.Audio.Renderer
1985
1986**参数:**
1987
1988| 参数名 | 类型   | 必填 | 说明                                                |
1989| :----- | :----- | :--- | :-------------------------------------------------- |
1990| type   | string | 是   | 事件回调类型,支持的事件为'periodReach',当取消监听标记到达事件时,触发该事件。 |
1991| callback<sup>18+</sup> | Callback\<number>         | 否  | 回调函数,返回frame参数的值。 |
1992
1993**示例:**
1994
1995```ts
1996// 取消该事件的所有监听。
1997audioRenderer.off('periodReach');
1998
1999// 同一监听事件中,on方法和off方法传入callback参数一致,off方法取消对应on方法订阅的监听。
2000let periodReachCallback = (position: number) => {
2001  if (position == 1000) {
2002    console.info('ON Triggered successfully');
2003  }
2004};
2005
2006audioRenderer.on('periodReach', 1000, periodReachCallback);
2007
2008audioRenderer.off('periodReach', periodReachCallback);
2009```
2010
2011## on('stateChange')<sup>8+</sup>
2012
2013on(type: 'stateChange', callback: Callback<AudioState\>): void
2014
2015监听状态变化事件(当AudioRenderer的状态发生变化时触发)。使用callback异步回调。
2016
2017**系统能力:** SystemCapability.Multimedia.Audio.Renderer
2018
2019**参数:**
2020
2021| 参数名   | 类型                       | 必填 | 说明                                        |
2022| :------- | :------------------------- | :--- | :------------------------------------------ |
2023| type     | string                     | 是   | 事件回调类型,支持的事件为'stateChange',当AudioRenderer的状态发生变化时,触发该事件。 |
2024| callback | Callback\<[AudioState](arkts-apis-audio-e.md#audiostate8)> | 是   | 回调函数,返回当前音频的状态。 |
2025
2026**示例:**
2027
2028```ts
2029audioRenderer.on('stateChange', (state: audio.AudioState) => {
2030  if (state == 1) {
2031    console.info('audio renderer state is: STATE_PREPARED');
2032  }
2033  if (state == 2) {
2034    console.info('audio renderer state is: STATE_RUNNING');
2035  }
2036});
2037```
2038
2039## off('stateChange')<sup>18+</sup>
2040
2041off(type: 'stateChange', callback?: Callback&lt;AudioState&gt;): void
2042
2043取消监听到达标记事件。使用callback异步回调。
2044
2045**系统能力:** SystemCapability.Multimedia.Audio.Renderer
2046
2047**参数:**
2048
2049| 参数名 | 类型   | 必填 | 说明                                                |
2050| :----- | :----- | :--- | :-------------------------------------------------- |
2051| type   | string | 是   | 事件回调类型,支持的事件为'stateChange',当取消监听到达标记事件时,触发该事件。 |
2052| callback | Callback\<[AudioState](arkts-apis-audio-e.md#audiostate8)> | 否 | 回调函数,返回当前音频的状态。 |
2053
2054**错误码:**
2055
2056以下错误码的详细介绍请参见[Audio错误码](errorcode-audio.md)。
2057
2058| 错误码ID | 错误信息 |
2059| ------- | --------------------------------------------|
2060| 6800101 | Parameter verification failed. |
2061
2062**示例:**
2063
2064```ts
2065// 取消该事件的所有监听。
2066audioRenderer.off('stateChange');
2067
2068// 同一监听事件中,on方法和off方法传入callback参数一致,off方法取消对应on方法订阅的监听。
2069let stateChangeCallback = (state: audio.AudioState) => {
2070  if (state == 1) {
2071    console.info('audio renderer state is: STATE_PREPARED');
2072  }
2073  if (state == 2) {
2074    console.info('audio renderer state is: STATE_RUNNING');
2075  }
2076};
2077
2078audioRenderer.on('stateChange', stateChangeCallback);
2079
2080audioRenderer.off('stateChange', stateChangeCallback);
2081```
2082
2083## on('outputDeviceChange')<sup>10+</sup>
2084
2085on(type: 'outputDeviceChange', callback: Callback\<AudioDeviceDescriptors>): void
2086
2087监听音频输出设备变化事件(当音频输出设备发生变化时触发)。使用callback异步回调。
2088
2089**系统能力:** SystemCapability.Multimedia.Audio.Device
2090
2091**参数:**
2092
2093| 参数名   | 类型                       | 必填 | 说明                                        |
2094| :------- | :------------------------- | :--- | :------------------------------------------ |
2095| type     | string                     | 是   | 事件回调类型,支持的事件为'outputDeviceChange',当音频输出设备发生变化时,触发该事件。 |
2096| callback | Callback\<[AudioDeviceDescriptors](arkts-apis-audio-t.md#audiodevicedescriptors)> | 是   | 回调函数,返回当前音频流的输出设备描述信息。 |
2097
2098**错误码:**
2099
2100以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
2101
2102| 错误码ID | 错误信息 |
2103| ------- | --------------------------------------------|
2104| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
2105| 6800101 | Parameter verification failed. |
2106
2107**示例:**
2108
2109```ts
2110audioRenderer.on('outputDeviceChange', (deviceInfo: audio.AudioDeviceDescriptors) => {
2111  console.info(`DeviceInfo id: ${deviceInfo[0].id}`);
2112  console.info(`DeviceInfo name: ${deviceInfo[0].name}`);
2113  console.info(`DeviceInfo address: ${deviceInfo[0].address}`);
2114});
2115```
2116
2117## off('outputDeviceChange')<sup>10+</sup>
2118
2119off(type: 'outputDeviceChange', callback?: Callback\<AudioDeviceDescriptors>): void
2120
2121取消监听音频输出设备变化事件。使用callback异步回调。
2122
2123**系统能力:** SystemCapability.Multimedia.Audio.Device
2124
2125**参数:**
2126
2127| 参数名   | 类型                       | 必填 | 说明                                        |
2128| :------- | :------------------------- | :--- | :------------------------------------------ |
2129| type     | string                     | 是   | 事件回调类型,支持的事件为'outputDeviceChange',当取消监听音频输出设备变化事件时,触发该事件。 |
2130| callback | Callback\<[AudioDeviceDescriptors](arkts-apis-audio-t.md#audiodevicedescriptors)> | 否   | 回调函数,返回当前音频流的输出设备描述信息。 |
2131
2132**错误码:**
2133
2134以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
2135
2136| 错误码ID | 错误信息 |
2137| ------- | --------------------------------------------|
2138| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
2139| 6800101 | Parameter verification failed. |
2140
2141**示例:**
2142
2143```ts
2144// 取消该事件的所有监听。
2145audioRenderer.off('outputDeviceChange');
2146
2147// 同一监听事件中,on方法和off方法传入callback参数一致,off方法取消对应on方法订阅的监听。
2148let outputDeviceChangeCallback = (deviceInfo: audio.AudioDeviceDescriptors) => {
2149  console.info(`DeviceInfo id: ${deviceInfo[0].id}`);
2150  console.info(`DeviceInfo name: ${deviceInfo[0].name}`);
2151  console.info(`DeviceInfo address: ${deviceInfo[0].address}`);
2152};
2153
2154audioRenderer.on('outputDeviceChange', outputDeviceChangeCallback);
2155
2156audioRenderer.off('outputDeviceChange', outputDeviceChangeCallback);
2157```
2158
2159## on('outputDeviceChangeWithInfo')<sup>11+</sup>
2160
2161on(type: 'outputDeviceChangeWithInfo', callback: Callback\<AudioStreamDeviceChangeInfo>): void
2162
2163监听音频流输出设备变化及原因事件(当音频输出设备发生变化时触发)。使用callback异步回调。
2164
2165**系统能力:** SystemCapability.Multimedia.Audio.Device
2166
2167**参数:**
2168
2169| 参数名   | 类型                                                                       | 必填 | 说明                                          |
2170| :------- |:-------------------------------------------------------------------------| :--- |:--------------------------------------------|
2171| type     | string                                                                   | 是   | 事件回调类型,支持的事件为'outputDeviceChangeWithInfo',当音频输出设备发生变化时,触发该事件。 |
2172| callback | Callback\<[AudioStreamDeviceChangeInfo](arkts-apis-audio-i.md#audiostreamdevicechangeinfo11)> | 是   | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 |
2173
2174**错误码:**
2175
2176以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
2177
2178| 错误码ID | 错误信息 |
2179| ------- | --------------------------------------------|
2180| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
2181| 6800101 | Parameter verification failed. |
2182
2183**示例:**
2184
2185```ts
2186audioRenderer.on('outputDeviceChangeWithInfo', (deviceChangeInfo: audio.AudioStreamDeviceChangeInfo) => {
2187  console.info(`DeviceInfo id: ${deviceChangeInfo.devices[0].id}`);
2188  console.info(`DeviceInfo name: ${deviceChangeInfo.devices[0].name}`);
2189  console.info(`DeviceInfo address: ${deviceChangeInfo.devices[0].address}`);
2190  console.info(`Device change reason: ${deviceChangeInfo.changeReason}`);
2191});
2192```
2193
2194## off('outputDeviceChangeWithInfo')<sup>11+</sup>
2195
2196off(type: 'outputDeviceChangeWithInfo', callback?: Callback\<AudioStreamDeviceChangeInfo>): void
2197
2198取消监听音频流输出设备变化及原因事件。使用callback异步回调。
2199
2200**系统能力:** SystemCapability.Multimedia.Audio.Device
2201
2202**参数:**
2203
2204| 参数名   | 类型                                                                       | 必填 | 说明                                          |
2205| :------- |:-------------------------------------------------------------------------| :--- |:--------------------------------------------|
2206| type     | string | 是   | 事件回调类型,支持的事件为'outputDeviceChangeWithInfo',当取消监听音频流输出设备变化及原因事件时,触发该事件。 |
2207| callback | Callback\<[AudioStreamDeviceChangeInfo](arkts-apis-audio-i.md#audiostreamdevicechangeinfo11)> | 否   | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 |
2208
2209**错误码:**
2210
2211以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
2212
2213| 错误码ID | 错误信息 |
2214| ------- | --------------------------------------------|
2215| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
2216| 6800101 | Parameter verification failed. |
2217
2218**示例:**
2219
2220```ts
2221// 取消该事件的所有监听。
2222audioRenderer.off('outputDeviceChangeWithInfo');
2223
2224// 同一监听事件中,on方法和off方法传入callback参数一致,off方法取消对应on方法订阅的监听。
2225let outputDeviceChangeWithInfoCallback = (deviceChangeInfo: audio.AudioStreamDeviceChangeInfo) => {
2226  console.info(`DeviceInfo id: ${deviceChangeInfo.devices[0].id}`);
2227  console.info(`DeviceInfo name: ${deviceChangeInfo.devices[0].name}`);
2228  console.info(`DeviceInfo address: ${deviceChangeInfo.devices[0].address}`);
2229  console.info(`Device change reason: ${deviceChangeInfo.changeReason}`);
2230};
2231
2232audioRenderer.on('outputDeviceChangeWithInfo', outputDeviceChangeWithInfoCallback);
2233
2234audioRenderer.off('outputDeviceChangeWithInfo', outputDeviceChangeWithInfoCallback);
2235```
2236
2237## on('writeData')<sup>11+</sup>
2238
2239on(type: 'writeData', callback: AudioRendererWriteDataCallback): void
2240
2241监听音频数据写入回调事件(当需要写入音频数据时触发),使用 callback 方式返回结果。
2242
2243回调函数仅用来写入音频数据,请勿在回调函数中调用AudioRenderer相关接口。
2244
2245**系统能力:** SystemCapability.Multimedia.Audio.Renderer
2246
2247**参数:**
2248
2249| 参数名   | 类型                             | 必填 | 说明                                  |
2250| :------- |:--------------------------------| :--- |:--------------------------------------|
2251| type     | string                           | 是   | 事件回调类型,支持的事件为'writeData',当需要写入音频数据时,触发该事件。 |
2252| callback | [AudioRendererWriteDataCallback](arkts-apis-audio-t.md#audiorendererwritedatacallback12)   | 是   | 回调函数,入参代表应用接收待写入的数据缓冲区。<br>API version 11 不支持返回回调结果,从 API version 12 开始支持返回回调结果[AudioDataCallbackResult](arkts-apis-audio-e.md#audiodatacallbackresult12)。        |
2253
2254**错误码:**
2255
2256以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
2257
2258| 错误码ID | 错误信息 |
2259| ------- | --------------------------------------------|
2260| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
2261| 6800101 | Parameter verification failed. |
2262
2263**示例:**
2264
2265```ts
2266import { BusinessError } from '@kit.BasicServicesKit';
2267import {fileIo as fs} from '@kit.CoreFileKit';
2268import { common } from '@kit.AbilityKit';
2269
2270class Options {
2271  offset?: number;
2272  length?: number;
2273}
2274
2275let bufferSize: number = 0;
2276// 请在组件内获取context,确保this.getUIContext().getHostContext()返回结果为UIAbilityContext。
2277let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
2278let path = context.cacheDir;
2279// 确保该沙箱路径下存在该资源。
2280let filePath = path + '/StarWars10s-2C-48000-4SW.pcm';
2281let file: fs.File = fs.openSync(filePath, fs.OpenMode.READ_ONLY);
2282let writeDataCallback = (buffer: ArrayBuffer) => {
2283  let options: Options = {
2284    offset: bufferSize,
2285    length: buffer.byteLength
2286  };
2287
2288  try {
2289    fs.readSync(file.fd, buffer, options);
2290    bufferSize += buffer.byteLength;
2291    // API version 11 不支持返回回调结果,从 API version 12 开始支持返回回调结果。
2292    return audio.AudioDataCallbackResult.VALID;
2293  } catch (error) {
2294    console.error('Error reading file:', error);
2295    // API version 11 不支持返回回调结果,从 API version 12 开始支持返回回调结果。
2296    return audio.AudioDataCallbackResult.INVALID;
2297  }
2298};
2299
2300audioRenderer.on('writeData', writeDataCallback);
2301audioRenderer.start().then(() => {
2302  console.info('Renderer started');
2303}).catch((err: BusinessError) => {
2304  console.error(`ERROR: ${err}`);
2305});
2306```
2307
2308## off('writeData')<sup>11+</sup>
2309
2310off(type: 'writeData', callback?: AudioRendererWriteDataCallback): void
2311
2312取消监听音频数据写入回调事件。使用callback异步回调。
2313
2314**系统能力:** SystemCapability.Multimedia.Audio.Renderer
2315
2316**参数:**
2317
2318| 参数名   | 类型                             | 必填 | 说明                                  |
2319| :------- |:--------------------------------| :--- |:--------------------------------------|
2320| type     | string                           | 是   | 事件回调类型,支持的事件为'writeData',当取消监听音频数据写入回调事件时,触发该事件。 |
2321| callback | [AudioRendererWriteDataCallback](arkts-apis-audio-t.md#audiorendererwritedatacallback12)   | 否   | 回调函数,入参代表应用接收待写入的数据缓冲区。<br>API version 11 不支持返回回调结果,从 API version 12 开始支持返回回调结果[AudioDataCallbackResult](arkts-apis-audio-e.md#audiodatacallbackresult12)。 |
2322
2323**错误码:**
2324
2325以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
2326
2327| 错误码ID | 错误信息 |
2328| ------- | --------------------------------------------|
2329| 401     | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
2330| 6800101 | Parameter verification failed. |
2331
2332**示例:**
2333
2334```ts
2335// 取消该事件的所有监听。
2336audioRenderer.off('writeData');
2337
2338// 同一监听事件中,on方法和off方法传入callback参数一致,off方法取消对应on方法订阅的监听。
2339let writeDataCallback = (data: ArrayBuffer) => {
2340    console.info(`write data: ${data}`);
2341};
2342
2343audioRenderer.on('writeData', writeDataCallback);
2344
2345audioRenderer.off('writeData', writeDataCallback);
2346```
2347## write<sup>(deprecated)</sup>
2348
2349write(buffer: ArrayBuffer, callback: AsyncCallback\<number>): void
2350
2351写入缓冲区。使用callback异步回调。
2352
2353> **说明:**
2354> 从API version 8开始支持,从API version 11开始废弃,建议使用[on('writeData')](#onwritedata11)替代。
2355
2356**系统能力:** SystemCapability.Multimedia.Audio.Renderer
2357
2358**参数:**
2359
2360| 参数名   | 类型                   | 必填 | 说明                                                |
2361| -------- | ---------------------- | ---- | --------------------------------------------------- |
2362| buffer   | ArrayBuffer            | 是   | 要写入缓冲区的数据。                                |
2363| callback | AsyncCallback\<number> | 是   | 回调函数。当写入缓冲区成功,err为undefined,data为获取到的写入的字节数;否则为错误对象。 |
2364
2365**示例:**
2366
2367```ts
2368import { BusinessError } from '@kit.BasicServicesKit';
2369import { fileIo as fs } from '@kit.CoreFileKit';
2370import { common } from '@kit.AbilityKit';
2371
2372let bufferSize: number;
2373class Options {
2374  offset?: number;
2375  length?: number;
2376}
2377audioRenderer.getBufferSize().then((data: number)=> {
2378  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
2379  bufferSize = data;
2380  console.info(`Buffer size: ${bufferSize}`);
2381  // 请在组件内获取context,确保this.getUIContext().getHostContext()返回结果为UIAbilityContext。
2382  let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
2383  let path = context.cacheDir;
2384  let filePath = path + '/StarWars10s-2C-48000-4SW.pcm';
2385  let file: fs.File = fs.openSync(filePath, fs.OpenMode.READ_ONLY);
2386  fs.stat(filePath).then(async (stat: fs.Stat) => {
2387    let buf = new ArrayBuffer(bufferSize);
2388    let len = stat.size % bufferSize == 0 ? Math.floor(stat.size / bufferSize) : Math.floor(stat.size / bufferSize + 1);
2389    for (let i = 0;i < len; i++) {
2390      let options: Options = {
2391        offset: i * bufferSize,
2392        length: bufferSize
2393      };
2394      await fs.read(file.fd, buf, options);
2395      await new Promise((resolve,reject)=>{
2396        audioRenderer.write(buf,(err: BusinessError, writeSize: number)=>{
2397          if(err){
2398            reject(err)
2399          }else{
2400            resolve(writeSize)
2401          }
2402        })
2403      })
2404    }
2405  });
2406  }).catch((err: BusinessError) => {
2407    console.error(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
2408});
2409```
2410
2411## write<sup>(deprecated)</sup>
2412
2413write(buffer: ArrayBuffer): Promise\<number>
2414
2415写入缓冲区。使用Promise异步回调。
2416
2417> **说明:**
2418> 从API version 8开始支持,从API version 11开始废弃,建议使用[on('writeData')](#onwritedata11)替代。
2419
2420**系统能力:** SystemCapability.Multimedia.Audio.Renderer
2421
2422**参数:**
2423
2424| 参数名   | 类型                   | 必填 | 说明                                                |
2425| -------- | ---------------------- | ---- | --------------------------------------------------- |
2426| buffer   | ArrayBuffer            | 是   | 要写入缓冲区的数据。                                |
2427
2428**返回值:**
2429
2430| 类型             | 说明                                                         |
2431| ---------------- | ------------------------------------------------------------ |
2432| Promise\<number> | Promise对象,返回写入的字节数。 |
2433
2434**示例:**
2435
2436```ts
2437import { BusinessError } from '@kit.BasicServicesKit';
2438import { fileIo as fs } from '@kit.CoreFileKit';
2439import { common } from '@kit.AbilityKit';
2440
2441let bufferSize: number;
2442class Options {
2443  offset?: number;
2444  length?: number;
2445}
2446audioRenderer.getBufferSize().then((data: number) => {
2447  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
2448  bufferSize = data;
2449  console.info(`BufferSize: ${bufferSize}`);
2450  // 请在组件内获取context,确保this.getUIContext().getHostContext()返回结果为UIAbilityContext。
2451  let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
2452  let path = context.cacheDir;
2453  let filePath = path + '/StarWars10s-2C-48000-4SW.pcm';
2454  let file: fs.File = fs.openSync(filePath, fs.OpenMode.READ_ONLY);
2455  fs.stat(filePath).then(async (stat: fs.Stat) => {
2456    let buf = new ArrayBuffer(bufferSize);
2457    let len = stat.size % bufferSize == 0 ? Math.floor(stat.size / bufferSize) : Math.floor(stat.size / bufferSize + 1);
2458    for (let i = 0;i < len; i++) {
2459      let options: Options = {
2460        offset: i * bufferSize,
2461        length: bufferSize
2462      };
2463      await fs.read(file.fd, buf, options);
2464      try{
2465        await audioRenderer.write(buf);
2466      } catch(err) {
2467        let error = err as BusinessError;
2468        console.error(`audioRenderer.write err: ${error}`);
2469      }
2470    }
2471  });
2472}).catch((err: BusinessError) => {
2473  console.error(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
2474});
2475```
2476
2477## setRenderRate<sup>(deprecated)</sup>
2478
2479setRenderRate(rate: AudioRendererRate, callback: AsyncCallback\<void>): void
2480
2481设置音频渲染速率。使用callback异步回调。
2482
2483> **说明:**
2484> 从API version 8开始支持,从API version 11开始废弃,建议使用[setSpeed](#setspeed11)替代。
2485
2486**系统能力:** SystemCapability.Multimedia.Audio.Renderer
2487
2488**参数:**
2489
2490| 参数名   | 类型                                     | 必填 | 说明                     |
2491| -------- | ---------------------------------------- | ---- | ------------------------ |
2492| rate     | [AudioRendererRate](arkts-apis-audio-e.md#audiorendererrate8) | 是   | 渲染的速率。             |
2493| callback | AsyncCallback\<void>                     | 是   | 回调函数。当设置音频渲染速率成功,err为undefined,否则为错误对象。 |
2494
2495**示例:**
2496
2497```ts
2498import { BusinessError } from '@kit.BasicServicesKit';
2499
2500audioRenderer.setRenderRate(audio.AudioRendererRate.RENDER_RATE_NORMAL, (err: BusinessError) => {
2501  if (err) {
2502    console.error('Failed to set params');
2503  } else {
2504    console.info('Callback invoked to indicate a successful render rate setting.');
2505  }
2506});
2507```
2508
2509## setRenderRate<sup>(deprecated)</sup>
2510
2511setRenderRate(rate: AudioRendererRate): Promise\<void>
2512
2513设置音频渲染速率。使用Promise异步回调。
2514
2515> **说明:**
2516> 从API version 8开始支持,从API version 11开始废弃,建议使用[setSpeed](#setspeed11)替代。
2517
2518**系统能力:** SystemCapability.Multimedia.Audio.Renderer
2519
2520**参数:**
2521
2522| 参数名 | 类型                                     | 必填 | 说明         |
2523| ------ | ---------------------------------------- | ---- | ------------ |
2524| rate   | [AudioRendererRate](arkts-apis-audio-e.md#audiorendererrate8) | 是   | 渲染的速率。 |
2525
2526**返回值:**
2527
2528| 类型           | 说明                      |
2529| -------------- | ------------------------- |
2530| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
2531
2532**示例:**
2533
2534```ts
2535import { BusinessError } from '@kit.BasicServicesKit';
2536
2537audioRenderer.setRenderRate(audio.AudioRendererRate.RENDER_RATE_NORMAL).then(() => {
2538  console.info('setRenderRate SUCCESS');
2539}).catch((err: BusinessError) => {
2540  console.error(`ERROR: ${err}`);
2541});
2542```
2543
2544## getRenderRate<sup>(deprecated)</sup>
2545
2546getRenderRate(callback: AsyncCallback\<AudioRendererRate>): void
2547
2548获取音频渲染速率。使用callback异步回调。
2549
2550> **说明:**
2551> 从API version 8开始支持,从API version 11开始废弃,建议使用[getSpeed](#getspeed11)替代。
2552
2553**系统能力:** SystemCapability.Multimedia.Audio.Renderer
2554
2555**参数:**
2556
2557| 参数名   | 类型                                                    | 必填 | 说明               |
2558| -------- | ------------------------------------------------------- | ---- | ------------------ |
2559| callback | AsyncCallback<[AudioRendererRate](arkts-apis-audio-e.md#audiorendererrate8)> | 是   | 回调函数。当获取当前渲染速率成功,err为undefined,data为获取到的当前渲染速率;否则为错误对象。 |
2560
2561**示例:**
2562
2563```ts
2564import { BusinessError } from '@kit.BasicServicesKit';
2565
2566audioRenderer.getRenderRate((err: BusinessError, renderRate: audio.AudioRendererRate) => {
2567  console.info(`getRenderRate: ${renderRate}`);
2568});
2569```
2570
2571## getRenderRate<sup>(deprecated)</sup>
2572
2573getRenderRate(): Promise\<AudioRendererRate>
2574
2575获取音频渲染速率。使用Promise异步回调。
2576
2577> **说明:**
2578> 从API version 8开始支持,从API version 11开始废弃,建议使用[getSpeed](#getspeed11)替代。
2579
2580**系统能力:** SystemCapability.Multimedia.Audio.Renderer
2581
2582**返回值:**
2583
2584| 类型                                              | 说明                      |
2585| ------------------------------------------------- | ------------------------- |
2586| Promise<[AudioRendererRate](arkts-apis-audio-e.md#audiorendererrate8)> | Promise对象,返回渲染速率。 |
2587
2588**示例:**
2589
2590```ts
2591import { BusinessError } from '@kit.BasicServicesKit';
2592
2593audioRenderer.getRenderRate().then((renderRate: audio.AudioRendererRate) => {
2594  console.info(`getRenderRate: ${renderRate}`);
2595}).catch((err: BusinessError) => {
2596  console.error(`ERROR: ${err}`);
2597});
2598```
2599
2600## getRenderRateSync<sup>(deprecated)</sup>
2601
2602getRenderRateSync(): AudioRendererRate
2603
2604获取音频渲染速率。同步返回结果。
2605
2606> **说明:**
2607> 从API version 10开始支持,从API version 11开始废弃,建议使用[getSpeed](#getspeed11)替代。
2608
2609**系统能力:** SystemCapability.Multimedia.Audio.Renderer
2610
2611**返回值:**
2612
2613| 类型                                              | 说明                      |
2614| ------------------------------------------------- | ------------------------- |
2615| [AudioRendererRate](arkts-apis-audio-e.md#audiorendererrate8) | 返回渲染速率。 |
2616
2617**示例:**
2618
2619```ts
2620import { BusinessError } from '@kit.BasicServicesKit';
2621
2622try {
2623  let renderRate: audio.AudioRendererRate = audioRenderer.getRenderRateSync();
2624  console.info(`getRenderRate: ${renderRate}`);
2625} catch (err) {
2626  let error = err as BusinessError;
2627  console.error(`ERROR: ${error}`);
2628}
2629```
2630
2631## setLoudnessGain<sup>20+</sup>
2632
2633setLoudnessGain(loudnessGain: number): Promise\<void>
2634
2635设置播放响度。使用Promise异步回调。
2636
2637> **说明:**
2638>
2639> - 该接口仅支持类型为[STREAM_USAGE_MUSIC](../../reference/apis-audio-kit/arkts-apis-audio-e.md#streamusage)、[STREAM_USAGE_MOVIE](../../reference/apis-audio-kit/arkts-apis-audio-e.md#streamusage)或[STREAM_USAGE_AUDIOBOOK](../../reference/apis-audio-kit/arkts-apis-audio-e.md#streamusage)的音频流。
2640> - 该接口不支持高清通路的响度设置。
2641> - 由于音频框架与硬件之间存在缓冲区,响度调节实际生效存在延迟,时长取决于缓冲区长度。
2642> - 建议在不同音频开始播放前预先设置响度,以实现最佳均衡效果。
2643
2644**系统能力:** SystemCapability.Multimedia.Audio.Renderer
2645
2646**参数:**
2647
2648| 参数名       | 类型    | 必填 | 说明                                      |
2649| ------------ | -------| ---- |------------------------------------------ |
2650| loudnessGain | number | 是   | 设置播放的响度值,单位为dB,响度范围为[-90.0, 24.0]。默认值为0.0dB。|
2651
2652**返回值:**
2653
2654| 类型           | 说明                      |
2655| -------------- | ------------------------- |
2656| Promise\<void> | Promise对象,无返回结果。  |
2657
2658**错误码:**
2659
2660以下错误码的详细介绍请参见[Audio错误码](errorcode-audio.md)。
2661
2662| 错误码ID | 错误信息 |
2663| ------- | --------------------------------------------|
2664| 6800101 | Parameter verification failed. |
2665| 6800104 | Operation is not supported on this renderer, e.g. the stream usage of this renderer is not one of [STREAM_USAGE_MUSIC](../../reference/apis-audio-kit/arkts-apis-audio-e.md#streamusage), <br>[STREAM_USAGE_MOVIE](../../reference/apis-audio-kit/arkts-apis-audio-e.md#streamusage), or [STREAM_USAGE_AUDIOBOOK](../../reference/apis-audio-kit/arkts-apis-audio-e.md#streamusage), or this renderer is routed through the high-resolution playback path. |
2666
2667**示例:**
2668
2669```ts
2670audioRenderer.setLoudnessGain(1.0);
2671```
2672
2673## getLoudnessGain<sup>20+</sup>
2674
2675getLoudnessGain(): number
2676
2677获取播放响度。
2678
2679**系统能力:** SystemCapability.Multimedia.Audio.Renderer
2680
2681**返回值:**
2682
2683| 类型    | 说明             |
2684|------- |-----------------  |
2685| number | 返回播放的响度值。 |
2686
2687**示例:**
2688
2689```ts
2690let loudnessGain = audioRenderer.getLoudnessGain();
2691```