1# Functions 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 13## 导入模块 14 15```ts 16import { audio } from '@kit.AudioKit'; 17``` 18 19## audio.getAudioManager 20 21getAudioManager(): AudioManager 22 23获取音频管理器。 24 25**系统能力:** SystemCapability.Multimedia.Audio.Core 26 27**返回值:** 28 29| 类型 | 说明 | 30| ----------------------------- | ------------ | 31| [AudioManager](arkts-apis-audio-AudioManager.md) | 音频管理器对象。 | 32 33**示例:** 34```ts 35import { audio } from '@kit.AudioKit'; 36 37let audioManager = audio.getAudioManager(); 38``` 39 40## audio.createAudioRenderer<sup>8+</sup> 41 42createAudioRenderer(options: AudioRendererOptions, callback: AsyncCallback\<AudioRenderer>): void 43 44获取音频渲染器。使用callback异步回调。 45 46**系统能力:** SystemCapability.Multimedia.Audio.Renderer 47 48**参数:** 49 50| 参数名 | 类型 | 必填 | 说明 | 51| -------- | ----------------------------------------------- | ---- | ---------------- | 52| options | [AudioRendererOptions](arkts-apis-audio-i.md#audiorendereroptions8) | 是 | 配置渲染器。 | 53| callback | AsyncCallback<[AudioRenderer](arkts-apis-audio-AudioRenderer.md)> | 是 | 回调函数。当获取音频渲染器成功,err为undefined,data为获取到的音频渲染器对象;否则为错误对象。 | 54 55**示例:** 56 57```ts 58import { audio } from '@kit.AudioKit'; 59 60let audioStreamInfo: audio.AudioStreamInfo = { 61 samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_48000, // 采样率。 62 channels: audio.AudioChannel.CHANNEL_2, // 通道。 63 sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, // 采样格式。 64 encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW // 编码格式。 65}; 66 67let audioRendererInfo: audio.AudioRendererInfo = { 68 usage: audio.StreamUsage.STREAM_USAGE_MUSIC, // 音频流使用类型:音乐。根据业务场景配置,参考StreamUsage。 69 rendererFlags: 0 // 音频渲染器标志。 70}; 71 72let audioRendererOptions: audio.AudioRendererOptions = { 73 streamInfo: audioStreamInfo, 74 rendererInfo: audioRendererInfo 75}; 76 77let audioRenderer: audio.AudioRenderer; 78 79audio.createAudioRenderer(audioRendererOptions,(err, data) => { 80 if (err) { 81 console.error(`AudioRenderer Created: Error: ${err}`); 82 } else { 83 console.info('AudioRenderer Created: SUCCESS'); 84 audioRenderer = data; 85 } 86}); 87``` 88 89## audio.createAudioRenderer<sup>8+</sup> 90 91createAudioRenderer(options: AudioRendererOptions): Promise<AudioRenderer\> 92 93获取音频渲染器。使用Promise异步回调。 94 95**系统能力:** SystemCapability.Multimedia.Audio.Renderer 96 97**参数:** 98 99| 参数名 | 类型 | 必填 | 说明 | 100| :------ | :--------------------------------------------- | :--- | :----------- | 101| options | [AudioRendererOptions](arkts-apis-audio-i.md#audiorendereroptions8) | 是 | 配置渲染器。 | 102 103**返回值:** 104 105| 类型 | 说明 | 106| ----------------------------------------- | ---------------- | 107| Promise<[AudioRenderer](arkts-apis-audio-AudioRenderer.md)> | Promise对象,返回音频渲染器对象。 | 108 109**示例:** 110 111```ts 112import { audio } from '@kit.AudioKit'; 113import { BusinessError } from '@kit.BasicServicesKit'; 114 115let audioStreamInfo: audio.AudioStreamInfo = { 116 samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_48000, // 采样率。 117 channels: audio.AudioChannel.CHANNEL_2, // 通道。 118 sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, // 采样格式。 119 encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW // 编码格式。 120}; 121 122let audioRendererInfo: audio.AudioRendererInfo = { 123 usage: audio.StreamUsage.STREAM_USAGE_MUSIC, // 音频流使用类型:音乐。根据业务场景配置,参考StreamUsage。 124 rendererFlags: 0 // 音频渲染器标志。 125}; 126 127let audioRendererOptions: audio.AudioRendererOptions = { 128 streamInfo: audioStreamInfo, 129 rendererInfo: audioRendererInfo 130}; 131 132let audioRenderer: audio.AudioRenderer; 133 134audio.createAudioRenderer(audioRendererOptions).then((data) => { 135 audioRenderer = data; 136 console.info('AudioFrameworkRenderLog: AudioRenderer Created : SUCCESS'); 137}).catch((err: BusinessError) => { 138 console.error(`AudioFrameworkRenderLog: AudioRenderer Created : ERROR : ${err}`); 139}); 140``` 141 142## audio.createAudioCapturer<sup>8+</sup> 143 144createAudioCapturer(options: AudioCapturerOptions, callback: AsyncCallback<AudioCapturer\>): void 145 146获取音频采集器。使用callback异步回调。 147 148**系统能力:** SystemCapability.Multimedia.Audio.Capturer 149 150**需要权限:** ohos.permission.MICROPHONE 151 152当设置Mic音频源(即[SourceType](arkts-apis-audio-e.md#sourcetype8)为SOURCE_TYPE_MIC、SOURCE_TYPE_VOICE_RECOGNITION、SOURCE_TYPE_VOICE_COMMUNICATION、SOURCE_TYPE_VOICE_MESSAGE、SOURCE_TYPE_CAMCORDER)时需要该权限。 153 154**参数:** 155 156| 参数名 | 类型 | 必填 | 说明 | 157| :------- | :---------------------------------------------- | :--- | :--------------- | 158| options | [AudioCapturerOptions](arkts-apis-audio-i.md#audiocaptureroptions8) | 是 | 配置音频采集器。 | 159| callback | AsyncCallback<[AudioCapturer](arkts-apis-audio-AudioCapturer.md)> | 是 | 回调函数。当获取音频采集器成功,err为undefined,data为获取到的音频采集器对象;否则为错误对象。异常将返回error对象:<br>错误码6800301:表示参数校验异常、权限校验异常或系统处理异常(具体错误查看系统日志)。<br>错误码6800101:表示必选参数为空或参数类型错误。 | 160 161**示例:** 162 163```ts 164import { audio } from '@kit.AudioKit'; 165 166let audioStreamInfo: audio.AudioStreamInfo = { 167 samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_48000, // 采样率。 168 channels: audio.AudioChannel.CHANNEL_2, // 通道。 169 sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, // 采样格式。 170 encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW // 编码格式。 171}; 172 173let audioCapturerInfo: audio.AudioCapturerInfo = { 174 source: audio.SourceType.SOURCE_TYPE_MIC, // 音源类型:Mic音频源。根据业务场景配置,参考SourceType。 175 capturerFlags: 0 // 音频采集器标志。 176}; 177 178let audioCapturerOptions: audio.AudioCapturerOptions = { 179 streamInfo: audioStreamInfo, 180 capturerInfo: audioCapturerInfo 181}; 182 183let audioCapturer: audio.AudioCapturer; 184 185audio.createAudioCapturer(audioCapturerOptions, (err, data) => { 186 if (err) { 187 console.error(`AudioCapturer Created : Error: ${err}`); 188 } else { 189 console.info('AudioCapturer Created : SUCCESS'); 190 audioCapturer = data; 191 } 192}); 193``` 194 195## audio.createAudioCapturer<sup>8+</sup> 196 197createAudioCapturer(options: AudioCapturerOptions): Promise<AudioCapturer\> 198 199获取音频采集器。使用Promise异步回调。 200 201**系统能力:** SystemCapability.Multimedia.Audio.Capturer 202 203**需要权限:** ohos.permission.MICROPHONE 204 205当设置Mic音频源(即[SourceType](arkts-apis-audio-e.md#sourcetype8)为SOURCE_TYPE_MIC、SOURCE_TYPE_VOICE_RECOGNITION、SOURCE_TYPE_VOICE_COMMUNICATION、SOURCE_TYPE_VOICE_MESSAGE、SOURCE_TYPE_CAMCORDER)时需要该权限。 206 207**参数:** 208 209| 参数名 | 类型 | 必填 | 说明 | 210| :------ | :--------------------------------------------- | :--- | :--------------- | 211| options | [AudioCapturerOptions](arkts-apis-audio-i.md#audiocaptureroptions8) | 是 | 配置音频采集器。 | 212 213**返回值:** 214 215| 类型 | 说明 | 216| ----------------------------------------- |----------------------| 217| Promise<[AudioCapturer](arkts-apis-audio-AudioCapturer.md)> | Promise对象,成功将返回音频采集器对象,异常将返回error对象:<br>错误码6800301:表示参数校验异常、权限校验异常或系统处理异常(具体错误查看系统日志)。<br>错误码6800101:表示必选参数为空或参数类型错误。 | 218 219**示例:** 220 221```ts 222import { audio } from '@kit.AudioKit'; 223import { BusinessError } from '@kit.BasicServicesKit'; 224 225let audioStreamInfo: audio.AudioStreamInfo = { 226 samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_48000, // 采样率。 227 channels: audio.AudioChannel.CHANNEL_2, // 通道。 228 sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, // 采样格式。 229 encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW // 编码格式。 230}; 231 232let audioCapturerInfo: audio.AudioCapturerInfo = { 233 source: audio.SourceType.SOURCE_TYPE_MIC, // 音源类型:Mic音频源。根据业务场景配置,参考SourceType。 234 capturerFlags: 0 // 音频采集器标志。 235}; 236 237let audioCapturerOptions:audio.AudioCapturerOptions = { 238 streamInfo: audioStreamInfo, 239 capturerInfo: audioCapturerInfo 240}; 241 242let audioCapturer: audio.AudioCapturer; 243 244audio.createAudioCapturer(audioCapturerOptions).then((data) => { 245 audioCapturer = data; 246 console.info('AudioCapturer Created : SUCCESS'); 247}).catch((err: BusinessError) => { 248 console.error(`AudioCapturer Created : ERROR : ${err}`); 249}); 250``` 251 252## audio.createAudioLoopback<sup>20+</sup> 253 254createAudioLoopback(mode: AudioLoopbackMode): Promise<AudioLoopback\> 255 256创建音频返听器。使用Promise异步回调。 257 258在使用createAudioLoopback接口之前,需先通过[isAudioLoopbackSupported](arkts-apis-audio-AudioStreamManager.md#isaudioloopbacksupported20)查询系统返听能力。 259 260 261**系统能力:** SystemCapability.Multimedia.Audio.Capturer 262 263**需要权限:** ohos.permission.MICROPHONE 264 265**参数:** 266 267| 参数名 | 类型 | 必填 | 说明 | 268| :------ | :--------------------------------------------- | :--- | :--------------- | 269| mode | [AudioLoopbackMode](arkts-apis-audio-e.md#audioloopbackmode20) | 是 | 音频返听模式。 | 270 271**返回值:** 272 273| 类型 | 说明 | 274| ----------------------------------------- |----------------------| 275| Promise<[AudioLoopback](arkts-apis-audio-AudioLoopback.md)> | Promise对象,成功将返回音频返听器对象,异常将返回error对象。 | 276 277**错误码:** 278 279以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。 280 281| 错误码ID | 错误信息 | 282| ------- | -------------------------------| 283| 201 | Permission denied. | 284| 801 | Unsupported API. | 285| 6800101 | Parameter verification failed. | 286| 6800104 | Loopback mode is unsupported. | 287 288**示例:** 289 290```ts 291import { audio } from '@kit.AudioKit'; 292import { BusinessError } from '@kit.BasicServicesKit'; 293 294let audioLoopback: audio.AudioLoopback; 295 296audio.createAudioLoopback(audio.AudioLoopbackMode.HARDWARE).then((data) => { 297 audioLoopback = data; 298 console.info('AudioLoopback Created : SUCCESS'); 299}).catch((err: BusinessError) => { 300 console.error(`AudioLoopback Created : ERROR : ${err}`); 301}); 302``` 303