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<void> 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<void> | 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<void> 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<void> | 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<number>): void 1209 1210获取音频流的最小音量。使用callback异步回调。 1211 1212**系统能力:** SystemCapability.Multimedia.Audio.Renderer 1213 1214**参数:** 1215 1216| 参数名 | 类型 | 必填 | 说明 | 1217| ------- | -----------| ------ | ------------------- | 1218|callback |AsyncCallback<number> | 是 |回调函数。当获取音频流的最小音量成功,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<number> 1236 1237获取音频流的最小音量。使用Promise异步回调。 1238 1239**系统能力:** SystemCapability.Multimedia.Audio.Renderer 1240 1241**返回值:** 1242 1243| 类型 | 说明 | 1244| ------------------- | ----------------------------- | 1245| Promise<number>| 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<number>): void 1290 1291获取音频流的最大音量。使用callback异步回调。 1292 1293**系统能力:** SystemCapability.Multimedia.Audio.Renderer 1294 1295**参数:** 1296 1297| 参数名 | 类型 | 必填 | 说明 | 1298| ------- | -----------| ------ | ------------------- | 1299|callback | AsyncCallback<number> | 是 |回调函数。当获取音频流的最大音量成功,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<number> 1317 1318获取音频流的最大音量。使用Promise异步回调。 1319 1320**系统能力:** SystemCapability.Multimedia.Audio.Renderer 1321 1322**返回值:** 1323 1324| 类型 | 说明 | 1325| ------------------- | ----------------------------- | 1326| Promise<number>| 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<number>): void 1371 1372获取当前播放音频流的欠载音频帧数量。使用callback异步回调。 1373 1374**系统能力:** SystemCapability.Multimedia.Audio.Renderer 1375 1376**参数:** 1377 1378| 参数名 | 类型 | 必填 | 说明 | 1379| ------- | -----------| ------ | ------------------- | 1380|callback | AsyncCallback<number> | 是 |回调函数。当获取当前播放音频流的欠载音频帧数量成功,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<number> 1398 1399获取当前播放音频流的欠载音频帧数量。使用Promise异步回调。 1400 1401**系统能力:** SystemCapability.Multimedia.Audio.Renderer 1402 1403**返回值:** 1404 1405| 类型 | 说明 | 1406| ------------------- | ----------------------------- | 1407| Promise<number>| 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<AudioDeviceDescriptors>): 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<AudioDeviceDescriptors> 1488 1489获取音频流输出设备信息。使用Promise异步回调。 1490 1491**系统能力:** SystemCapability.Multimedia.Audio.Device 1492 1493**返回值:** 1494 1495| 类型 | 说明 | 1496| ------------------- | ----------------------------- | 1497| Promise<[AudioDeviceDescriptors](arkts-apis-audio-t.md#audiodevicedescriptors)>| 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<void> 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<void> | 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<InterruptEvent>): 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<number>): 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<number>): 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<number>): 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<number>): 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<AudioState>): 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```