js-apis-audio.md 220.5 KB
Newer Older
Z
zengyawen 已提交
1
# 音频管理
2

Z
zengyawen 已提交
3
音频管理提供管理音频的一些基础能力,包括对音频音量、音频设备的管理,以及对音频数据的采集和渲染等。
Z
zengyawen 已提交
4 5 6 7

该模块提供以下音频相关的常用功能:

- [AudioManager](#audiomanager):音频管理。
L
lwx1059628 已提交
8
- [AudioRenderer](#audiorenderer8):音频渲染,用于播放PCM(Pulse Code Modulation)音频数据。
9
- [AudioCapturer](#audiocapturer8):音频采集,用于录制PCM音频数据。
10
- [TonePlayer](#toneplayer9):用于管理和播放DTMF(Dual Tone Multi Frequency,双音多频)音调,如拨号音、通话回铃音等。
Z
zengyawen 已提交
11

12 13 14
>  **说明:**
>  本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

Z
zengyawen 已提交
15
## 导入模块
M
mamingshuai 已提交
16

J
jiao_yanlin 已提交
17
```js
M
mamingshuai 已提交
18 19 20
import audio from '@ohos.multimedia.audio';
```

21 22
## 常量

23
**系统接口:** 该接口为系统接口
24 25

**系统能力:** SystemCapability.Multimedia.Audio.Device
26

27 28 29 30
| 名称                                    | 类型      | 可读  | 可写 | 说明               |
| --------------------------------------- | ----------| ---- | ---- | ------------------ |
| LOCAL_NETWORK_ID<sup>9+</sup>           | string    | 是   | 否   | 本地设备网络id。<br> **系统能力:** SystemCapability.Multimedia.Audio.Device |
| DEFAULT_VOLUME_GROUP_ID<sup>9+</sup>    | number    | 是   | 否   | 默认音量组id。<br> **系统能力:** SystemCapability.Multimedia.Audio.Volume       |
31
| DEFAULT_INTERRUPT_GROUP_ID<sup>9+</sup> | number | 是   | 否   | 默认音频中断组id。<br> **系统能力:** SystemCapability.Multimedia.Audio.Interrupt       |
32 33 34 35 36 37 38

**示例:**

```js
import audio from '@ohos.multimedia.audio';

const localNetworkId = audio.LOCAL_NETWORK_ID;
39 40 41 42
const defaultVolumeGroupId = audio.DEFAULT_VOLUME_GROUP_ID;
const defaultInterruptGroupId = audio.DEFAULT_INTERRUPT_GROUP_ID;
```

Z
zengyawen 已提交
43
## audio.getAudioManager
Z
zengyawen 已提交
44 45

getAudioManager(): AudioManager
M
mamingshuai 已提交
46 47 48

获取音频管理器。

Z
zengyawen 已提交
49 50
**系统能力:** SystemCapability.Multimedia.Audio.Core

M
mamingshuai 已提交
51
**返回值:**
52

Z
zengyawen 已提交
53 54
| 类型                          | 说明         |
| ----------------------------- | ------------ |
Z
zengyawen 已提交
55
| [AudioManager](#audiomanager) | 音频管理类。 |
M
mamingshuai 已提交
56 57

**示例:**
J
jiao_yanlin 已提交
58
```js
J
jiao_yanlin 已提交
59
let audioManager = audio.getAudioManager();
M
mamingshuai 已提交
60 61
```

Z
zengyawen 已提交
62 63
## audio.createAudioRenderer<sup>8+</sup>

M
magekkkk 已提交
64
createAudioRenderer(options: AudioRendererOptions, callback: AsyncCallback\<AudioRenderer>): void
Z
zengyawen 已提交
65

66
获取音频渲染器。使用callback方式异步返回结果。
Z
zengyawen 已提交
67 68 69

**系统能力:** SystemCapability.Multimedia.Audio.Renderer

70
**参数:**
Z
zengyawen 已提交
71

H
update  
HelloCrease 已提交
72 73 74
| 参数名   | 类型                                            | 必填 | 说明             |
| -------- | ----------------------------------------------- | ---- | ---------------- |
| options  | [AudioRendererOptions](#audiorendereroptions8)  | 是   | 配置渲染器。     |
M
magekkkk 已提交
75
| callback | AsyncCallback<[AudioRenderer](#audiorenderer8)> | 是   | 音频渲染器对象。 |
L
lwx1059628 已提交
76 77 78

**示例:**

J
jiao_yanlin 已提交
79
```js
L
lwx1059628 已提交
80
import audio from '@ohos.multimedia.audio';
J
jiao_yanlin 已提交
81
let audioStreamInfo = {
J
jiao_yanlin 已提交
82 83 84 85
  samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
  channels: audio.AudioChannel.CHANNEL_1,
  sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
  encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
L
lwx1059628 已提交
86 87
}

J
jiao_yanlin 已提交
88
let audioRendererInfo = {
J
jiao_yanlin 已提交
89 90
  content: audio.ContentType.CONTENT_TYPE_SPEECH,
  usage: audio.StreamUsage.STREAM_USAGE_VOICE_COMMUNICATION,
J
jiao_yanlin 已提交
91
  rendererFlags: 0
L
lwx1059628 已提交
92 93
}

J
jiao_yanlin 已提交
94
let audioRendererOptions = {
J
jiao_yanlin 已提交
95 96
  streamInfo: audioStreamInfo,
  rendererInfo: audioRendererInfo
L
lwx1059628 已提交
97 98 99
}

audio.createAudioRenderer(audioRendererOptions,(err, data) => {
J
jiao_yanlin 已提交
100
  if (err) {
101
    console.error(`AudioRenderer Created: Error: ${err}`);
J
jiao_yanlin 已提交
102
  } else {
103
    console.info('AudioRenderer Created: Success: SUCCESS');
J
jiao_yanlin 已提交
104 105
    let audioRenderer = data;
  }
L
lwx1059628 已提交
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
});
```

## audio.createAudioRenderer<sup>8+</sup>

createAudioRenderer(options: AudioRendererOptions): Promise<AudioRenderer\>

获取音频渲染器。使用Promise方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Renderer

**参数:**

| 参数名  | 类型                                           | 必填 | 说明         |
| :------ | :--------------------------------------------- | :--- | :----------- |
| options | [AudioRendererOptions](#audiorendereroptions8) | 是   | 配置渲染器。 |

**返回值:**

| 类型                                      | 说明             |
| ----------------------------------------- | ---------------- |
127
| Promise<[AudioRenderer](#audiorenderer8)> | 音频渲染器对象。 |
Z
zengyawen 已提交
128 129 130

**示例:**

J
jiao_yanlin 已提交
131
```js
L
lwx1059628 已提交
132 133
import audio from '@ohos.multimedia.audio';

J
jiao_yanlin 已提交
134
let audioStreamInfo = {
J
jiao_yanlin 已提交
135 136 137 138
  samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
  channels: audio.AudioChannel.CHANNEL_1,
  sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
  encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
Z
zengyawen 已提交
139 140
}

J
jiao_yanlin 已提交
141
let audioRendererInfo = {
J
jiao_yanlin 已提交
142 143
  content: audio.ContentType.CONTENT_TYPE_SPEECH,
  usage: audio.StreamUsage.STREAM_USAGE_VOICE_COMMUNICATION,
J
jiao_yanlin 已提交
144
  rendererFlags: 0
Z
zengyawen 已提交
145 146
}

J
jiao_yanlin 已提交
147
let audioRendererOptions = {
J
jiao_yanlin 已提交
148 149
  streamInfo: audioStreamInfo,
  rendererInfo: audioRendererInfo
Z
zengyawen 已提交
150 151
}

J
jiao_yanlin 已提交
152
let audioRenderer;
L
lwx1059628 已提交
153
audio.createAudioRenderer(audioRendererOptions).then((data) => {
J
jiao_yanlin 已提交
154
  audioRenderer = data;
155
  console.info('AudioFrameworkRenderLog: AudioRenderer Created : Success : Stream Type: SUCCESS');
L
lwx1059628 已提交
156
}).catch((err) => {
157
  console.error(`AudioFrameworkRenderLog: AudioRenderer Created : ERROR : ${err}`);
L
lwx1059628 已提交
158
});
Z
zengyawen 已提交
159
```
Z
zengyawen 已提交
160

L
lwx1059628 已提交
161 162 163 164 165 166 167 168
## audio.createAudioCapturer<sup>8+</sup>

createAudioCapturer(options: AudioCapturerOptions, callback: AsyncCallback<AudioCapturer\>): void

获取音频采集器。使用callback方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Capturer

J
jiao_yanlin 已提交
169 170
**需要权限:** ohos.permission.MICROPHONE

L
lwx1059628 已提交
171 172
**参数:**

H
update  
HelloCrease 已提交
173 174
| 参数名   | 类型                                            | 必填 | 说明             |
| :------- | :---------------------------------------------- | :--- | :--------------- |
Z
zengyawen 已提交
175
| options  | [AudioCapturerOptions](#audiocaptureroptions8)  | 是   | 配置音频采集器。 |
M
magekkkk 已提交
176
| callback | AsyncCallback<[AudioCapturer](#audiocapturer8)> | 是   | 音频采集器对象。 |
L
lwx1059628 已提交
177 178 179

**示例:**

J
jiao_yanlin 已提交
180
```js
L
lwx1059628 已提交
181
import audio from '@ohos.multimedia.audio';
J
jiao_yanlin 已提交
182
let audioStreamInfo = {
J
jiao_yanlin 已提交
183 184 185 186
  samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
  channels: audio.AudioChannel.CHANNEL_2,
  sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
  encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
L
lwx1059628 已提交
187 188
}

J
jiao_yanlin 已提交
189
let audioCapturerInfo = {
J
jiao_yanlin 已提交
190
  source: audio.SourceType.SOURCE_TYPE_MIC,
J
jiao_yanlin 已提交
191
  capturerFlags: 0
L
lwx1059628 已提交
192 193
}

J
jiao_yanlin 已提交
194
let audioCapturerOptions = {
J
jiao_yanlin 已提交
195 196
  streamInfo: audioStreamInfo,
  capturerInfo: audioCapturerInfo
L
lwx1059628 已提交
197 198
}

J
jiao_yanlin 已提交
199
audio.createAudioCapturer(audioCapturerOptions, (err, data) => {
J
jiao_yanlin 已提交
200
  if (err) {
201
    console.error(`AudioCapturer Created : Error: ${err}`);
J
jiao_yanlin 已提交
202
  } else {
203
    console.info('AudioCapturer Created : Success : SUCCESS');
J
jiao_yanlin 已提交
204 205
    let audioCapturer = data;
  }
L
lwx1059628 已提交
206 207 208 209 210 211 212 213 214 215 216
});
```

## audio.createAudioCapturer<sup>8+</sup>

createAudioCapturer(options: AudioCapturerOptions): Promise<AudioCapturer\>

获取音频采集器。使用promise 方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Capturer

J
jiao_yanlin 已提交
217 218
**需要权限:** ohos.permission.MICROPHONE

L
lwx1059628 已提交
219 220
**参数:**

Z
zengyawen 已提交
221 222 223
| 参数名  | 类型                                           | 必填 | 说明             |
| :------ | :--------------------------------------------- | :--- | :--------------- |
| options | [AudioCapturerOptions](#audiocaptureroptions8) | 是   | 配置音频采集器。 |
L
lwx1059628 已提交
224 225 226 227 228

**返回值:**

| 类型                                      | 说明           |
| ----------------------------------------- | -------------- |
M
magekkkk 已提交
229
| Promise<[AudioCapturer](#audiocapturer8)> | 音频采集器对象 |
L
lwx1059628 已提交
230 231 232

**示例:**

J
jiao_yanlin 已提交
233
```js
L
lwx1059628 已提交
234 235
import audio from '@ohos.multimedia.audio';

J
jiao_yanlin 已提交
236
let audioStreamInfo = {
J
jiao_yanlin 已提交
237 238 239 240
  samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
  channels: audio.AudioChannel.CHANNEL_2,
  sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
  encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
L
lwx1059628 已提交
241 242
}

J
jiao_yanlin 已提交
243
let audioCapturerInfo = {
J
jiao_yanlin 已提交
244
  source: audio.SourceType.SOURCE_TYPE_MIC,
J
jiao_yanlin 已提交
245
  capturerFlags: 0
L
lwx1059628 已提交
246 247
}

J
jiao_yanlin 已提交
248
let audioCapturerOptions = {
J
jiao_yanlin 已提交
249 250
  streamInfo: audioStreamInfo,
  capturerInfo: audioCapturerInfo
L
lwx1059628 已提交
251 252
}

J
jiao_yanlin 已提交
253
let audioCapturer;
R
rahul 已提交
254
audio.createAudioCapturer(audioCapturerOptions).then((data) => {
J
jiao_yanlin 已提交
255
  audioCapturer = data;
256
  console.info('AudioCapturer Created : Success : Stream Type: SUCCESS');
L
lwx1059628 已提交
257
}).catch((err) => {
258
  console.error(`AudioCapturer Created : ERROR : ${err}`);
L
lwx1059628 已提交
259
});
L
lwx1059628 已提交
260 261
```

262 263 264 265
## audio.createTonePlayer<sup>9+</sup>

createTonePlayer(options: AudioRendererInfo, callback: AsyncCallback&lt;TonePlayer&gt;): void

266
创建DTMF播放器。使用callback方式异步返回结果。
267 268 269

**系统能力:** SystemCapability.Multimedia.Audio.Tone

270 271
**系统接口:** 该接口为系统接口

272
**参数:**
273 274 275

| 参数名   | 类型                                             | 必填 | 说明            |
| -------- | ----------------------------------------------- | ---- | -------------- |
276 277
| options  | [AudioRendererInfo](#audiorendererinfo8)        | 是   | 配置音频渲染器信息。|
| callback | AsyncCallback<[TonePlayer](#toneplayer9)>       | 是   | 回调函数,回调返回音频渲染器对象。|
278 279 280 281 282 283

**示例:**

```js
import audio from '@ohos.multimedia.audio';

J
jiao_yanlin 已提交
284
let audioRendererInfo = {
285 286 287
  "contentType": audio.ContentType.CONTENT_TYPE_MUSIC,
  "streamUsage": audio.StreamUsage.STREAM_USAGE_MEDIA,
  "rendererFlags": 0
288
}
J
jiao_yanlin 已提交
289
let tonePlayer;
290

291 292 293 294 295 296 297 298 299 300 301 302 303 304 305
audio.createTonePlayer(audioRendererInfo, (err, data) => {
  console.info(`callback call createTonePlayer: audioRendererInfo: ${audioRendererInfo}`);
  if (err) {
    console.error(`callback call createTonePlayer return error: ${err.message}`);
  } else {
    console.info(`callback call createTonePlayer return data: ${data}`);
    tonePlayer = data;
  }
});
```

## audio.createTonePlayer<sup>9+</sup>

createTonePlayer(options: AudioRendererInfo): Promise&lt;TonePlayer&gt;

306
创建DTMF播放器。使用Promise方式异步返回结果。
307 308 309

**系统能力:** SystemCapability.Multimedia.Audio.Tone

310 311
**系统接口:** 该接口为系统接口

312 313 314 315 316 317 318 319
**参数:**

| 参数名  | 类型                                           | 必填 | 说明         |
| :------ | :---------------------------------------------| :--- | :----------- |
| options | [AudioRendererInfo](#audiorendererinfo8)      | 是   | 配置音频渲染器信息。 |

**返回值:**

320 321 322
| 类型                                      | 说明                             |
| ----------------------------------------- | -------------------------------- |
| Promise<[TonePlayer](#toneplayer9)>       | Promise对象,返回音频渲染器对象。   |
323 324 325 326 327

**示例:**

```js
import audio from '@ohos.multimedia.audio';
328
async function createTonePlayer(){
J
jiao_yanlin 已提交
329
  let audioRendererInfo = {
330 331 332 333
    "contentType": audio.ContentType.CONTENT_TYPE_MUSIC,
    "streamUsage": audio.StreamUsage.STREAM_USAGE_MEDIA,
    "rendererFlags": 0
  }
334
  let tonePlayer = await audio.createTonePlayer(audioRendererInfo);
335 336 337
}
```

Z
zengyawen 已提交
338
## AudioVolumeType
M
mamingshuai 已提交
339

340
枚举,音频流类型。
M
mamingshuai 已提交
341

Z
zengyawen 已提交
342 343 344 345 346 347 348 349
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Volume

| 名称                         | 默认值 | 描述       |
| ---------------------------- | ------ | ---------- |
| VOICE_CALL<sup>8+</sup>      | 0      | 语音电话。 |
| RINGTONE                     | 2      | 铃声。     |
| MEDIA                        | 3      | 媒体。     |
| VOICE_ASSISTANT<sup>8+</sup> | 9      | 语音助手。 |
350
| ALL<sup>9+</sup>             | 100    | 所有公共音频流。<br/>此接口为系统接口,三方应用不支持调用。|
Z
zengyawen 已提交
351

352 353 354 355 356 357 358 359 360 361 362 363 364
## InterruptRequestResultType<sup>9+</sup>

枚举,音频中断请求结果类型。

**系统能力:** SystemCapability.Multimedia.Audio.Interrupt

**系统接口:** 该接口为系统接口

| 名称                         | 默认值 | 描述       |
| ---------------------------- | ------ | ---------- |
| INTERRUPT_REQUEST_GRANT      | 0      | 请求音频中断成功。 |
| INTERRUPT_REQUEST_REJECT     | 1      | 请求音频中断失败,可能具有较高优先级类型。 |

365
## InterruptMode<sup>9+</sup>
366

367
枚举,焦点模型。
368

369
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
370 371 372

| 名称                         | 默认值 | 描述       |
| ---------------------------- | ------ | ---------- |
373 374
| SHARE_MODE                   | 0      | 共享焦点模式。 |
| INDEPENDENT_MODE             | 1      | 独立焦点模式。 |
375

Z
zengyawen 已提交
376
## DeviceFlag
M
mamingshuai 已提交
377

378
枚举,可获取的设备种类。
M
mamingshuai 已提交
379

Z
zengyawen 已提交
380 381
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Device

382 383
| 名称                            | 默认值  | 描述                                              |
| ------------------------------- | ------ | ------------------------------------------------- |
384 385 386 387 388 389 390
| NONE_DEVICES_FLAG<sup>9+</sup>  | 0      | 无 <br/>此接口为系统接口,三方应用不支持调用。        |
| OUTPUT_DEVICES_FLAG             | 1      | 输出设备。 |
| INPUT_DEVICES_FLAG              | 2      | 输入设备。 |
| ALL_DEVICES_FLAG                | 3      | 所有设备。 |
| DISTRIBUTED_OUTPUT_DEVICES_FLAG<sup>9+</sup> | 4   | 分布式输出设备。<br/>此接口为系统接口,三方应用不支持调用。  |
| DISTRIBUTED_INPUT_DEVICES_FLAG<sup>9+</sup>  | 8   | 分布式输入设备。<br/>此接口为系统接口,三方应用不支持调用。  |
| ALL_DISTRIBUTED_DEVICES_FLAG<sup>9+</sup>    | 12  | 分布式输入和输出设备。<br/>此接口为系统接口,三方应用不支持调用。  |
Z
zengyawen 已提交
391 392

## DeviceRole
M
mamingshuai 已提交
393

394
枚举,设备角色。
M
mamingshuai 已提交
395

Z
zengyawen 已提交
396 397 398 399 400 401
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Device

| 名称          | 默认值 | 描述           |
| ------------- | ------ | -------------- |
| INPUT_DEVICE  | 1      | 输入设备角色。 |
| OUTPUT_DEVICE | 2      | 输出设备角色。 |
M
mamingshuai 已提交
402

Z
zengyawen 已提交
403 404 405
## DeviceType

枚举,设备类型。
M
magekkkk 已提交
406

Z
zengyawen 已提交
407 408
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Device

409 410 411 412 413 414 415 416 417 418 419 420
| 名称                 | 默认值 | 描述                                                      |
| ---------------------| ------ | --------------------------------------------------------- |
| INVALID              | 0      | 无效设备。                                                |
| EARPIECE             | 1      | 听筒。                                                    |
| SPEAKER              | 2      | 扬声器。                                                  |
| WIRED_HEADSET        | 3      | 有线耳机,带麦克风。                                      |
| WIRED_HEADPHONES     | 4      | 有线耳机,无麦克风。                                      |
| BLUETOOTH_SCO        | 7      | 蓝牙设备SCO(Synchronous Connection Oriented)连接。      |
| BLUETOOTH_A2DP       | 8      | 蓝牙设备A2DP(Advanced Audio Distribution Profile)连接。 |
| MIC                  | 15     | 麦克风。                                                  |
| USB_HEADSET          | 22     | USB耳机,带麦克风。                                       |
| DEFAULT<sup>9+</sup> | 1000   | 默认设备类型。                                            |
M
magekkkk 已提交
421

422
## CommunicationDeviceType<sup>9+</sup>
423 424 425 426 427 428 429 430 431

枚举,用于通信的可用设备类型。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Communication

| 名称          | 默认值 | 描述          |
| ------------- | ------ | -------------|
| SPEAKER       | 2      | 扬声器。      |

Z
zengyawen 已提交
432
## AudioRingMode
433 434 435

枚举,铃声模式。

Z
zengyawen 已提交
436 437 438 439 440 441 442 443 444 445 446 447 448 449
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Communication

| 名称                | 默认值 | 描述       |
| ------------------- | ------ | ---------- |
| RINGER_MODE_SILENT  | 0      | 静音模式。 |
| RINGER_MODE_VIBRATE | 1      | 震动模式。 |
| RINGER_MODE_NORMAL  | 2      | 响铃模式。 |

## AudioSampleFormat<sup>8+</sup>

枚举,音频采样格式。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core

450 451 452 453 454 455 456 457
| 名称                                | 默认值 | 描述                       |
| ---------------------------------- | ------ | -------------------------- |
| SAMPLE_FORMAT_INVALID              | -1     | 无效格式。                 |
| SAMPLE_FORMAT_U8                   | 0      | 无符号8位整数。            |
| SAMPLE_FORMAT_S16LE                | 1      | 带符号的16位整数,小尾数。 |
| SAMPLE_FORMAT_S24LE                | 2      | 带符号的24位整数,小尾数。 <br>由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。|
| SAMPLE_FORMAT_S32LE                | 3      | 带符号的32位整数,小尾数。 <br>由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。|
| SAMPLE_FORMAT_F32LE<sup>9+</sup>   | 4      | 带符号的32位整数,小尾数。 <br>由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。|
Z
zengyawen 已提交
458

459 460 461 462 463 464
## AudioErrors<sup>9+</sup>

枚举,音频错误码。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core

465 466 467 468 469 470 471
| 错误信息              | 错误码   | 错误描述          |
| ---------------------| --------| ----------------- |
| ERROR_INVALID_PARAM  | 6800101 | 无效入参。         |
| ERROR_NO_MEMORY      | 6800102 | 分配内存失败。     |
| ERROR_ILLEGAL_STATE  | 6800103 | 状态不支持。       |
| ERROR_UNSUPPORTED    | 6800104 | 参数选项不支持。    |
| ERROR_TIMEOUT        | 6800105 | 处理超时。         |
472
| ERROR_STREAM_LIMIT   | 6800201 | 音频流数量达到限制。|
473
| ERROR_SYSTEM         | 6800301 | 系统处理异常。     |
474

Z
zengyawen 已提交
475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516
## AudioChannel<sup>8+</sup>

枚举, 音频声道。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core

| 名称      | 默认值   | 描述     |
| --------- | -------- | -------- |
| CHANNEL_1 | 0x1 << 0 | 单声道。 |
| CHANNEL_2 | 0x1 << 1 | 双声道。 |

## AudioSamplingRate<sup>8+</sup>

枚举,音频采样率。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core

| 名称              | 默认值 | 描述            |
| ----------------- | ------ | --------------- |
| SAMPLE_RATE_8000  | 8000   | 采样率为8000。  |
| SAMPLE_RATE_11025 | 11025  | 采样率为11025。 |
| SAMPLE_RATE_12000 | 12000  | 采样率为12000。 |
| SAMPLE_RATE_16000 | 16000  | 采样率为16000。 |
| SAMPLE_RATE_22050 | 22050  | 采样率为22050。 |
| SAMPLE_RATE_24000 | 24000  | 采样率为24000。 |
| SAMPLE_RATE_32000 | 32000  | 采样率为32000。 |
| SAMPLE_RATE_44100 | 44100  | 采样率为44100。 |
| SAMPLE_RATE_48000 | 48000  | 采样率为48000。 |
| SAMPLE_RATE_64000 | 64000  | 采样率为64000。 |
| SAMPLE_RATE_96000 | 96000  | 采样率为96000。 |

## AudioEncodingType<sup>8+</sup>

枚举,音频编码类型。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core

| 名称                  | 默认值 | 描述      |
| --------------------- | ------ | --------- |
| ENCODING_TYPE_INVALID | -1     | 无效。    |
| ENCODING_TYPE_RAW     | 0      | PCM编码。 |

L
lwx1059628 已提交
517
## ContentType
Z
zengyawen 已提交
518 519 520 521 522

枚举,音频内容类型。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core

L
lwx1059628 已提交
523 524 525 526 527 528 529 530
| 名称                               | 默认值 | 描述       |
| ---------------------------------- | ------ | ---------- |
| CONTENT_TYPE_UNKNOWN               | 0      | 未知类型。 |
| CONTENT_TYPE_SPEECH                | 1      | 语音。     |
| CONTENT_TYPE_MUSIC                 | 2      | 音乐。     |
| CONTENT_TYPE_MOVIE                 | 3      | 电影。     |
| CONTENT_TYPE_SONIFICATION          | 4      | 加密类型。 |
| CONTENT_TYPE_RINGTONE<sup>8+</sup> | 5      | 铃声。     |
Z
zengyawen 已提交
531

L
lwx1059628 已提交
532
## StreamUsage
Z
zengyawen 已提交
533 534 535 536 537

枚举,音频流使用类型。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core

538 539 540 541 542 543 544
| 名称                                      | 默认值 | 描述       |
| ------------------------------------------| ------ | ---------- |
| STREAM_USAGE_UNKNOWN                      | 0      | 未知类型。 |
| STREAM_USAGE_MEDIA                        | 1      | 音频。     |
| STREAM_USAGE_VOICE_COMMUNICATION          | 2      | 语音通信。 |
| STREAM_USAGE_VOICE_ASSISTANT<sup>9+</sup> | 3      | 语音播报。 |
| STREAM_USAGE_NOTIFICATION_RINGTONE        | 6      | 通知铃声。 |
Z
zengyawen 已提交
545

546
## InterruptRequestType<sup>9+</sup>
547

548
枚举,音频中断请求类型。
549

550 551
**系统接口:** 该接口为系统接口

552
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
553

554 555 556
| 名称                               | 默认值  | 描述                       |
| ---------------------------------- | ------ | ------------------------- |
| INTERRUPT_REQUEST_TYPE_DEFAULT     | 0      |  默认类型,可中断音频请求。  |
557

Z
zengyawen 已提交
558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575
## AudioState<sup>8+</sup>

枚举,音频状态。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core

| 名称           | 默认值 | 描述             |
| -------------- | ------ | ---------------- |
| STATE_INVALID  | -1     | 无效状态。       |
| STATE_NEW      | 0      | 创建新实例状态。 |
| STATE_PREPARED | 1      | 准备状态。       |
| STATE_RUNNING  | 2      | 可运行状态。     |
| STATE_STOPPED  | 3      | 停止状态。       |
| STATE_RELEASED | 4      | 释放状态。       |
| STATE_PAUSED   | 5      | 暂停状态。       |

## AudioRendererRate<sup>8+</sup>

L
lwx1059628 已提交
576
枚举,音频渲染速度。
Z
zengyawen 已提交
577 578 579 580 581 582 583 584 585

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Renderer

| 名称               | 默认值 | 描述       |
| ------------------ | ------ | ---------- |
| RENDER_RATE_NORMAL | 0      | 正常速度。 |
| RENDER_RATE_DOUBLE | 1      | 2倍速。    |
| RENDER_RATE_HALF   | 2      | 0.5倍数。  |

L
lwx1059628 已提交
586
## InterruptType
Z
zengyawen 已提交
587 588 589 590

枚举,中断类型。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
591

Z
zengyawen 已提交
592 593 594 595 596
| 名称                 | 默认值 | 描述                   |
| -------------------- | ------ | ---------------------- |
| INTERRUPT_TYPE_BEGIN | 1      | 音频播放中断事件开始。 |
| INTERRUPT_TYPE_END   | 2      | 音频播放中断事件结束。 |

L
lwx1059628 已提交
597
## InterruptForceType<sup>9+</sup>
Z
zengyawen 已提交
598 599 600 601 602 603 604 605 606 607

枚举,强制打断类型。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Renderer

| 名称            | 默认值 | 描述                                 |
| --------------- | ------ | ------------------------------------ |
| INTERRUPT_FORCE | 0      | 由系统进行操作,强制打断音频播放。   |
| INTERRUPT_SHARE | 1      | 由应用进行操作,可以选择打断或忽略。 |

L
lwx1059628 已提交
608
## InterruptHint
Z
zengyawen 已提交
609 610 611 612 613

枚举,中断提示。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Renderer

L
lwx1059628 已提交
614 615 616 617 618 619 620 621
| 名称                               | 默认值 | 描述                                         |
| ---------------------------------- | ------ | -------------------------------------------- |
| INTERRUPT_HINT_NONE<sup>8+</sup>   | 0      | 无提示。                                     |
| INTERRUPT_HINT_RESUME              | 1      | 提示音频恢复。                               |
| INTERRUPT_HINT_PAUSE               | 2      | 提示音频暂停。                               |
| INTERRUPT_HINT_STOP                | 3      | 提示音频停止。                               |
| INTERRUPT_HINT_DUCK                | 4      | 提示音频躲避。(躲避:音量减弱,而不会停止) |
| INTERRUPT_HINT_UNDUCK<sup>8+</sup> | 5      | 提示音量恢复。                               |
Z
zengyawen 已提交
622 623 624 625 626 627 628

## AudioStreamInfo<sup>8+</sup>

音频流信息。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core

629 630 631 632 633 634
| 名称         | 类型                                               | 必填 | 说明               |
| ------------ | ------------------------------------------------- | ---- | ------------------ |
| samplingRate | [AudioSamplingRate](#audiosamplingrate8)          | 是   | 音频文件的采样率。 |
| channels     | [AudioChannel](#audiochannel8)                    | 是   | 音频文件的通道数。 |
| sampleFormat | [AudioSampleFormat](#audiosampleformat8)          | 是   | 音频采样格式。     |
| encodingType | [AudioEncodingType](#audioencodingtype8)          | 是   | 音频编码格式。     |
Z
zengyawen 已提交
635 636 637

## AudioRendererInfo<sup>8+</sup>

L
lwx1059628 已提交
638
音频渲染器信息。
Z
zengyawen 已提交
639 640 641

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core

L
lwx1059628 已提交
642 643
| 名称          | 类型                        | 必填 | 说明             |
| ------------- | --------------------------- | ---- | ---------------- |
Z
zengyawen 已提交
644
| content       | [ContentType](#contenttype) | 是   | 媒体类型。       |
L
lwx1059628 已提交
645 646
| usage         | [StreamUsage](#streamusage) | 是   | 音频流使用类型。 |
| rendererFlags | number                      | 是   | 音频渲染器标志。 |
Z
zengyawen 已提交
647

648 649 650 651 652 653 654 655 656 657 658 659 660
## InterruptResult<sup>9+</sup>

音频中断结果。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Interrupt

**系统接口:** 该接口为系统接口

| 名称          | 类型                                                            | 必填 | 说明             |
| --------------| -------------------------------------------------------------- | ---- | ---------------- |
| requestResult | [InterruptRequestResultType](#interruptrequestresulttype9)     | 是   | 表示音频请求中断类型。 |
| interruptNode | number                                                         | 是   | 音频请求中断的节点。 |

Z
zengyawen 已提交
661 662
## AudioRendererOptions<sup>8+</sup>

L
lwx1059628 已提交
663
音频渲染器选项信息。
Z
zengyawen 已提交
664 665 666 667 668 669

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Renderer

| 名称         | 类型                                     | 必填 | 说明             |
| ------------ | ---------------------------------------- | ---- | ---------------- |
| streamInfo   | [AudioStreamInfo](#audiostreaminfo8)     | 是   | 表示音频流信息。 |
L
lwx1059628 已提交
670
| rendererInfo | [AudioRendererInfo](#audiorendererinfo8) | 是   | 表示渲染器信息。 |
Z
zengyawen 已提交
671

L
lwx1059628 已提交
672
## InterruptEvent<sup>9+</sup>
Z
zengyawen 已提交
673 674 675 676 677 678 679

播放中断时,应用接收的中断事件。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Renderer

| 名称      | 类型                                       | 必填 | 说明                                 |
| --------- | ------------------------------------------ | ---- | ------------------------------------ |
L
lwx1059628 已提交
680 681 682
| eventType | [InterruptType](#interrupttype)            | 是   | 中断事件类型,开始或是结束。         |
| forceType | [InterruptForceType](#interruptforcetype9) | 是   | 操作是由系统执行或是由应用程序执行。 |
| hintType  | [InterruptHint](#interrupthint)            | 是   | 中断提示。                           |
Z
zengyawen 已提交
683 684 685 686 687

## VolumeEvent<sup>8+</sup>

音量改变时,应用接收的事件。

688
**系统接口:** 该接口为系统接口
L
lwx1059628 已提交
689

Z
zengyawen 已提交
690 691 692 693 694 695 696
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Volume

| 名称       | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
| volume     | number                              | 是   | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 |
| updateUi   | boolean                             | 是   | 在UI中显示音量变化。                                     |
W
wangtao 已提交
697 698 699
| volumeGroupId<sup>9+</sup>   | number            | 是   | 音量组id。可用于getGroupManager入参                      |
| networkId<sup>9+</sup>    | string               | 是   | 网络id。                                                |

Z
zengyawen 已提交
700 701 702 703 704 705 706 707 708 709
## MicStateChangeEvent<sup>9+</sup>

麦克风状态变化时,应用接收的事件。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Device

| 名称       | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| mute | boolean | 是   | 回调返回系统麦克风静音状态,true为静音,false为非静音。          |

W
wangtao 已提交
710 711 712 713
## ConnectType<sup>9+</sup>

枚举,设备连接类型。

J
jiao_yanlin 已提交
714 715
**系统接口:** 该接口为系统接口

716
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
717 718 719 720 721 722 723 724 725 726

| 名称                            | 默认值 | 描述                   |
| :------------------------------ | :----- | :--------------------- |
| CONNECT_TYPE_LOCAL              | 1      | 本地设备。         |
| CONNECT_TYPE_DISTRIBUTED        | 2      | 分布式设备。            |

## VolumeGroupInfo<sup>9+</sup>

音量组信息。

727
**系统接口:** 该接口为系统接口
W
wangtao 已提交
728 729 730 731 732 733 734 735 736

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Volume

| 名称                        | 类型                       | 可读 | 可写 | 说明       |
| -------------------------- | -------------------------- | ---- | ---- | ---------- |
| networkId<sup>9+</sup>     | string                     | 是   | 否   | 组网络id。  |
| groupId<sup>9+</sup>       | number                     | 是   | 否   | 组设备组id。 |
| mappingId<sup>9+</sup>     | number                     | 是   | 否   | 组映射id。 |
| groupName<sup>9+</sup>     | number                     | 是   | 否   | 组名。 |
737
| type<sup>9+</sup>          | [ConnectType](#connecttype9)| 是   | 否   | 连接设备类型。 |
W
wangtao 已提交
738 739 740 741 742

## VolumeGroupInfos<sup>9+</sup>

音量组信息,数组类型,为[VolumeGroupInfo](#volumegroupinfo9)的数组,只读。

743
**系统接口:** 该接口为系统接口
W
wangtao 已提交
744 745 746 747 748 749 750 751 752 753 754 755 756 757

**系统能力:** SystemCapability.Multimedia.Audio.Volume

**示例:**

```js
import audio from '@ohos.multimedia.audio';

async function getVolumeGroupInfos(){
  let volumegroupinfos = await audio.getAudioManager().getVolumeGroups(audio.LOCAL_NETWORK_ID);
  console.info('Promise returned to indicate that the volumeGroup list is obtained.'+JSON.stringify(volumegroupinfos))
}
getVolumeGroupInfos();
```
Z
zengyawen 已提交
758

L
lwx1059628 已提交
759 760 761 762
## DeviceChangeAction

描述设备连接状态变化和设备信息。

763
**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
764 765 766

| 名称              | 类型                                              | 必填 | 说明               |
| :---------------- | :------------------------------------------------ | :--- | :----------------- |
767 768
| type              | [DeviceChangeType](#devicechangetype)             | 是   | 设备连接状态变化。 |
| deviceDescriptors | [AudioDeviceDescriptors](#audiodevicedescriptors) | 是   | 设备信息。         |
L
lwx1059628 已提交
769 770 771 772 773 774 775 776 777 778 779 780

## DeviceChangeType

枚举,设备连接状态变化。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Device

| 名称       | 默认值 | 描述           |
| :--------- | :----- | :------------- |
| CONNECT    | 0      | 设备连接。     |
| DISCONNECT | 1      | 断开设备连接。 |

Z
zengyawen 已提交
781 782 783 784 785 786 787 788 789
## AudioCapturerOptions<sup>8+</sup>

音频采集器选项信息。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Capturer

| 名称         | 类型                                    | 必填 | 说明             |
| ------------ | --------------------------------------- | ---- | ---------------- |
| streamInfo   | [AudioStreamInfo](#audiostreaminfo8)    | 是   | 表示音频流信息。 |
Z
zengyawen 已提交
790
| capturerInfo | [AudioCapturerInfo](#audiocapturerinfo) | 是   | 表示采集器信息。 |
Z
zengyawen 已提交
791

L
lwx1059628 已提交
792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808
## AudioCapturerInfo<sup>8+</sup><a name="audiocapturerinfo"></a>

描述音频采集器信息。

**系统能力:** SystemCapability.Multimedia.Audio.Core

| 名称          | 类型                      | 必填 | 说明             |
| :------------ | :------------------------ | :--- | :--------------- |
| source        | [SourceType](#sourcetype) | 是   | 音源类型。       |
| capturerFlags | number                    | 是   | 音频采集器标志。 |

## SourceType<sup>8+</sup><a name="sourcetype"></a>

枚举,音源类型。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core

809 810 811 812 813 814
| 名称                                         | 默认值 | 描述                   |
| :------------------------------------------- | :----- | :--------------------- |
| SOURCE_TYPE_INVALID                          | -1     | 无效的音频源。         |
| SOURCE_TYPE_MIC                              | 0      | Mic音频源。            |
| SOURCE_TYPE_VOICE_RECOGNITION<sup>9+</sup>   | 1      | 语音识别源。        |
| SOURCE_TYPE_VOICE_COMMUNICATION              | 7      | 语音通话场景的音频源。 |
L
lwx1059628 已提交
815 816 817 818 819 820 821

## AudioScene<sup>8+</sup><a name="audioscene"></a>

枚举,音频场景。

**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Communication

Z
zengyawen 已提交
822 823 824
| 名称                   | 默认值 | 描述                                          |
| :--------------------- | :----- | :-------------------------------------------- |
| AUDIO_SCENE_DEFAULT    | 0      | 默认音频场景。                                |
825 826
| AUDIO_SCENE_RINGING    | 1      | 响铃模式。<br/>此接口为系统接口,三方应用不支持调用。 |
| AUDIO_SCENE_PHONE_CALL | 2      | 电话模式。<br/>此接口为系统接口,三方应用不支持调用。 |
Z
zengyawen 已提交
827
| AUDIO_SCENE_VOICE_CHAT | 3      | 语音聊天模式。                                |
L
lwx1059628 已提交
828

Z
zengyawen 已提交
829
## AudioManager
M
mamingshuai 已提交
830

Z
zengyawen 已提交
831
管理音频音量和音频设备。在调用AudioManager的接口前,需要先通过[getAudioManager](#audiogetaudiomanager)创建实例。
M
mamingshuai 已提交
832

833
### setAudioParameter
M
mamingshuai 已提交
834

835
setAudioParameter(key: string, value: string, callback: AsyncCallback&lt;void&gt;): void
M
mamingshuai 已提交
836

837
音频参数设置,使用callback方式异步返回结果。
838

839
本接口的使用场景为根据硬件设备支持能力扩展音频配置。在不同的设备平台上,所支持的音频参数会存在差异。示例代码内使用样例参数,实际支持的音频配置参数见具体设备平台的资料描述。
840

841
**需要权限:** ohos.permission.MODIFY_AUDIO_SETTINGS
842

843
**系统能力:** SystemCapability.Multimedia.Audio.Core
Z
zengyawen 已提交
844

M
mamingshuai 已提交
845 846
**参数:**

847 848 849 850 851
| 参数名   | 类型                      | 必填 | 说明                     |
| -------- | ------------------------- | ---- | ------------------------ |
| key      | string                    | 是   | 被设置的音频参数的键。   |
| value    | string                    | 是   | 被设置的音频参数的值。   |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调返回设置成功或失败。 |
852

M
mamingshuai 已提交
853 854
**示例:**

J
jiao_yanlin 已提交
855
```js
856
audioManager.setAudioParameter('key_example', 'value_example', (err) => {
J
jiao_yanlin 已提交
857
  if (err) {
858
    console.error(`Failed to set the audio parameter. ${err}`);
J
jiao_yanlin 已提交
859 860
    return;
  }
861
  console.info('Callback invoked to indicate a successful setting of the audio parameter.');
L
lwx1059628 已提交
862
});
M
mamingshuai 已提交
863 864
```

865
### setAudioParameter
M
mamingshuai 已提交
866

867
setAudioParameter(key: string, value: string): Promise&lt;void&gt;
M
mamingshuai 已提交
868

869
音频参数设置,使用Promise方式异步返回结果。
870

871
本接口的使用场景为根据硬件设备支持能力扩展音频配置。在不同的设备平台上,所支持的音频参数会存在差异。示例代码内使用样例参数,实际支持的音频配置参数见具体设备平台的资料描述。
872

873
**需要权限:** ohos.permission.MODIFY_AUDIO_SETTINGS
874

875
**系统能力:** SystemCapability.Multimedia.Audio.Core
Z
zengyawen 已提交
876

M
mamingshuai 已提交
877 878
**参数:**

879 880 881 882
| 参数名 | 类型   | 必填 | 说明                   |
| ------ | ------ | ---- | ---------------------- |
| key    | string | 是   | 被设置的音频参数的键。 |
| value  | string | 是   | 被设置的音频参数的值。 |
M
mamingshuai 已提交
883 884 885

**返回值:**

886 887 888
| 类型                | 说明                            |
| ------------------- | ------------------------------- |
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |
M
mamingshuai 已提交
889 890 891

**示例:**

J
jiao_yanlin 已提交
892
```js
893 894
audioManager.setAudioParameter('key_example', 'value_example').then(() => {
  console.info('Promise returned to indicate a successful setting of the audio parameter.');
L
lwx1059628 已提交
895
});
M
mamingshuai 已提交
896 897
```

898
### getAudioParameter
Z
zengyawen 已提交
899

900
getAudioParameter(key: string, callback: AsyncCallback&lt;string&gt;): void
M
mamingshuai 已提交
901

902
获取指定音频参数值,使用callback方式异步返回结果。
M
mamingshuai 已提交
903

904
本接口的使用场景为根据硬件设备支持能力扩展音频配置。在不同的设备平台上,所支持的音频参数会存在差异。示例代码内使用样例参数,实际支持的音频配置参数见具体设备平台的资料描述。
905

906
**系统能力:** SystemCapability.Multimedia.Audio.Core
Z
zengyawen 已提交
907

M
mamingshuai 已提交
908 909
**参数:**

910 911 912 913
| 参数名   | 类型                        | 必填 | 说明                         |
| -------- | --------------------------- | ---- | ---------------------------- |
| key      | string                      | 是   | 待获取的音频参数的键。       |
| callback | AsyncCallback&lt;string&gt; | 是   | 回调返回获取的音频参数的值。 |
914

M
mamingshuai 已提交
915 916
**示例:**

J
jiao_yanlin 已提交
917
```js
918
audioManager.getAudioParameter('key_example', (err, value) => {
J
jiao_yanlin 已提交
919
  if (err) {
920
    console.error(`Failed to obtain the value of the audio parameter. ${err}`);
J
jiao_yanlin 已提交
921 922
    return;
  }
923
  console.info(`Callback invoked to indicate that the value of the audio parameter is obtained ${value}.`);
L
lwx1059628 已提交
924
});
M
mamingshuai 已提交
925 926
```

927
### getAudioParameter
Z
zengyawen 已提交
928

929
getAudioParameter(key: string): Promise&lt;string&gt;
M
mamingshuai 已提交
930

931
获取指定音频参数值,使用Promise方式异步返回结果。
M
mamingshuai 已提交
932

933
本接口的使用场景为根据硬件设备支持能力扩展音频配置。在不同的设备平台上,所支持的音频参数会存在差异。示例代码内使用样例参数,实际支持的音频配置参数见具体设备平台的资料描述。
934

935
**系统能力:** SystemCapability.Multimedia.Audio.Core
Z
zengyawen 已提交
936

M
mamingshuai 已提交
937 938
**参数:**

939 940 941
| 参数名 | 类型   | 必填 | 说明                   |
| ------ | ------ | ---- | ---------------------- |
| key    | string | 是   | 待获取的音频参数的键。 |
M
mamingshuai 已提交
942 943 944

**返回值:**

945 946 947
| 类型                  | 说明                                |
| --------------------- | ----------------------------------- |
| Promise&lt;string&gt; | Promise回调返回获取的音频参数的值。 |
M
mamingshuai 已提交
948 949 950

**示例:**

J
jiao_yanlin 已提交
951
```js
952 953
audioManager.getAudioParameter('key_example').then((value) => {
  console.info(`Promise returned to indicate that the value of the audio parameter is obtained ${value}.`);
L
lwx1059628 已提交
954
});
M
mamingshuai 已提交
955 956
```

957
### setAudioScene<sup>8+</sup>
Z
zengyawen 已提交
958

959
setAudioScene\(scene: AudioScene, callback: AsyncCallback<void\>\): void
M
mamingshuai 已提交
960

961
设置音频场景模式,使用callback方式异步返回结果。
M
mamingshuai 已提交
962

963
**系统接口:** 该接口为系统接口
964

965
**系统能力:** SystemCapability.Multimedia.Audio.Communication
Z
zengyawen 已提交
966

M
mamingshuai 已提交
967 968
**参数:**

969 970 971 972
| 参数名   | 类型                                 | 必填 | 说明                 |
| :------- | :----------------------------------- | :--- | :------------------- |
| scene    | <a href="#audioscene">AudioScene</a> | 是   | 音频场景模式。       |
| callback | AsyncCallback<void\>                 | 是   | 用于返回结果的回调。 |
973

M
mamingshuai 已提交
974 975
**示例:**

J
jiao_yanlin 已提交
976
```js
977 978
let audioManager = audio.getAudioManager();
audioManager.setAudioScene(audio.AudioScene.AUDIO_SCENE_PHONE_CALL, (err) => {
J
jiao_yanlin 已提交
979
  if (err) {
980
    console.error(`Failed to set the audio scene mode.​ ${err}`);
J
jiao_yanlin 已提交
981 982
    return;
  }
983
  console.info('Callback invoked to indicate a successful setting of the audio scene mode.');
L
lwx1059628 已提交
984
});
M
mamingshuai 已提交
985 986
```

987
### setAudioScene<sup>8+</sup>
Z
zengyawen 已提交
988

989
setAudioScene\(scene: AudioScene\): Promise<void\>
M
mamingshuai 已提交
990

991
设置音频场景模式,使用Promise方式返回异步结果。
M
mamingshuai 已提交
992

993
**系统接口:** 该接口为系统接口
994

995
**系统能力:** SystemCapability.Multimedia.Audio.Communication
Z
zengyawen 已提交
996

M
mamingshuai 已提交
997 998
**参数:**

999 1000 1001
| 参数名 | 类型                                 | 必填 | 说明           |
| :----- | :----------------------------------- | :--- | :------------- |
| scene  | <a href="#audioscene">AudioScene</a> | 是   | 音频场景模式。 |
M
mamingshuai 已提交
1002 1003 1004

**返回值:**

1005 1006 1007
| 类型           | 说明                 |
| :------------- | :------------------- |
| Promise<void\> | 用于返回结果的回调。 |
M
mamingshuai 已提交
1008 1009 1010

**示例:**

J
jiao_yanlin 已提交
1011
```js
1012 1013 1014 1015 1016
let audioManager = audio.getAudioManager();
audioManager.setAudioScene(audio.AudioScene.AUDIO_SCENE_PHONE_CALL).then(() => {
  console.info('Promise returned to indicate a successful setting of the audio scene mode.');
}).catch ((err) => {
  console.error(`Failed to set the audio scene mode ${err}`);
L
lwx1059628 已提交
1017
});
M
mamingshuai 已提交
1018 1019
```

1020
### getAudioScene<sup>8+</sup>
M
mamingshuai 已提交
1021

1022
getAudioScene\(callback: AsyncCallback<AudioScene\>\): void
M
mamingshuai 已提交
1023

1024
获取音频场景模式,使用callback方式返回异步结果。
1025

1026
**系统能力:** SystemCapability.Multimedia.Audio.Communication
Z
zengyawen 已提交
1027

M
mamingshuai 已提交
1028 1029
**参数:**

1030 1031 1032
| 参数名   | 类型                                                | 必填 | 说明                         |
| :------- | :-------------------------------------------------- | :--- | :--------------------------- |
| callback | AsyncCallback<<a href="#audioscene">AudioScene</a>> | 是   | 用于返回音频场景模式的回调。 |
1033

M
mamingshuai 已提交
1034 1035
**示例:**

J
jiao_yanlin 已提交
1036
```js
1037 1038
let audioManager = audio.getAudioManager();
audioManager.getAudioScene((err, value) => {
J
jiao_yanlin 已提交
1039
  if (err) {
1040
    console.error(`Failed to obtain the audio scene mode.​ ${err}`);
J
jiao_yanlin 已提交
1041 1042
    return;
  }
1043
  console.info(`Callback invoked to indicate that the audio scene mode is obtained ${value}.`);
L
lwx1059628 已提交
1044
});
M
mamingshuai 已提交
1045 1046
```

1047
### getAudioScene<sup>8+</sup>
1048

1049
getAudioScene\(\): Promise<AudioScene\>
Z
zengyawen 已提交
1050

1051
获取音频场景模式,使用Promise方式返回异步结果。
M
mamingshuai 已提交
1052

1053
**系统能力:** SystemCapability.Multimedia.Audio.Communication
M
mamingshuai 已提交
1054 1055 1056

**返回值:**

1057 1058 1059
| 类型                                          | 说明                         |
| :-------------------------------------------- | :--------------------------- |
| Promise<<a href="#audioscene">AudioScene</a>> | 用于返回音频场景模式的回调。 |
M
mamingshuai 已提交
1060 1061 1062

**示例:**

J
jiao_yanlin 已提交
1063
```js
1064 1065 1066 1067 1068
let audioManager = audio.getAudioManager();
audioManager.getAudioScene().then((value) => {
  console.info(`Promise returned to indicate that the audio scene mode is obtained ${value}.`);
}).catch ((err) => {
  console.error(`Failed to obtain the audio scene mode ${err}`);
L
lwx1059628 已提交
1069
});
Z
zengyawen 已提交
1070 1071
```

1072
### getVolumeManager<sup>9+</sup>
1073

1074
getVolumeManager(): AudioVolumeManager
1075

1076
获取音频音量管理器。
1077

Z
zengyawen 已提交
1078 1079
**系统能力:** SystemCapability.Multimedia.Audio.Volume

Z
zengyawen 已提交
1080 1081
**示例:**

J
jiao_yanlin 已提交
1082
```js
1083
let audioVolumeManager = audioManager.getVolumeManager();
1084 1085
```

1086
### getStreamManager<sup>9+</sup>
1087

1088
getStreamManager(): AudioStreamManager
1089

1090
获取音频流管理器。
1091

1092
**系统能力:** SystemCapability.Multimedia.Audio.Core
1093

1094
**示例:**
1095

1096 1097 1098
```js
let audioStreamManager = audioManager.getStreamManager();
```
Z
zengyawen 已提交
1099

1100
### getRoutingManager<sup>9+</sup>
1101

1102
getRoutingManager(): AudioRoutingManager
1103

1104
获取音频路由设备管理器。
1105

1106
**系统能力:** SystemCapability.Multimedia.Audio.Device
1107 1108 1109

**示例:**

J
jiao_yanlin 已提交
1110
```js
1111
let audioRoutingManager = audioManager.getRoutingManager();
1112 1113
```

1114
## AudioVolumeManager<sup>9+</sup>
1115

1116
音量管理。在使用AudioVolumeManager的接口前,需要使用[getVolumeManager](#getvolumemanager9)获取AudioVolumeManager实例。
1117

1118
### getVolumeGroupInfos<sup>9+</sup>
1119

1120 1121 1122 1123 1124
getVolumeGroupInfos(networkId: string, callback: AsyncCallback<VolumeGroupInfos\>\): void

获取音量组信息列表,使用callback方式异步返回结果。

**系统接口:** 该接口为系统接口
1125

Z
zengyawen 已提交
1126 1127
**系统能力:** SystemCapability.Multimedia.Audio.Volume

Z
zengyawen 已提交
1128
**参数:**
1129

1130 1131 1132 1133
| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
| networkId | string                                    | 是   | 设备的网络id。本地设备audio.LOCAL_NETWORK_ID。    |
| callback  | AsyncCallback&lt;[VolumeGroupInfos](#volumegroupinfos9)&gt; | 是   | 回调,返回音量组信息列表。 |
1134 1135

**示例:**
J
jiao_yanlin 已提交
1136
```js
1137
audioVolumeManager.getVolumeGroupInfos(audio.LOCAL_NETWORK_ID, (err, value) => {
J
jiao_yanlin 已提交
1138
  if (err) {
1139
    console.error(`Failed to obtain the volume group infos list. ${err}`);
J
jiao_yanlin 已提交
1140 1141
    return;
  }
1142
  console.info('Callback invoked to indicate that the volume group infos list is obtained.');
L
lwx1059628 已提交
1143
});
Z
zengyawen 已提交
1144 1145
```

1146
### getVolumeGroupInfos<sup>9+</sup>
Z
zengyawen 已提交
1147

1148
getVolumeGroupInfos(networkId: string\): Promise<VolumeGroupInfos\>
Z
zengyawen 已提交
1149

1150
获取音量组信息列表,使用promise方式异步返回结果。
Z
zengyawen 已提交
1151

1152
**系统接口:** 该接口为系统接口
1153

Z
zengyawen 已提交
1154 1155
**系统能力:** SystemCapability.Multimedia.Audio.Volume

Z
zengyawen 已提交
1156 1157
**参数:**

1158 1159 1160
| 参数名     | 类型               | 必填 | 说明                 |
| ---------- | ------------------| ---- | -------------------- |
| networkId | string             | 是   | 设备的网络id。本地设备audio.LOCAL_NETWORK_ID。   |
Z
zengyawen 已提交
1161 1162 1163

**返回值:**

1164 1165 1166
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;[VolumeGroupInfos](#volumegroupinfos9)&gt; | 音量组信息列表。 |
M
mamingshuai 已提交
1167

Z
zengyawen 已提交
1168 1169
**示例:**

J
jiao_yanlin 已提交
1170
```js
1171 1172 1173 1174
async function getVolumeGroupInfos(){
  let volumegroupinfos = await audio.getAudioVolumeManager().getVolumeGroupInfos(audio.LOCAL_NETWORK_ID);
  console.info('Promise returned to indicate that the volumeGroup list is obtained.'+JSON.stringify(volumegroupinfos))
}
Z
zengyawen 已提交
1175 1176
```

1177
### getVolumeGroupManager<sup>9+</sup>
Z
zengyawen 已提交
1178

1179
getVolumeGroupManager(groupId: number, callback: AsyncCallback<AudioVolumeGroupManager\>\): void
1180

1181
获取音频组管理器,使用callback方式异步返回结果。
1182

Z
zengyawen 已提交
1183 1184
**系统能力:** SystemCapability.Multimedia.Audio.Volume

1185 1186
**参数:**

1187 1188 1189 1190
| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
| groupId    | number                                    | 是   | 音量组id。     |
| callback   | AsyncCallback&lt; [AudioVolumeGroupManager](#audiovolumegroupmanager9) &gt; | 是   | 回调,返回一个音量组实例。 |
1191 1192 1193

**示例:**

J
jiao_yanlin 已提交
1194
```js
1195 1196
let groupid = audio.DEFAULT_VOLUME_GROUP_ID;
audioVolumeManager.getVolumeGroupManager(groupid, (err, value) => {
J
jiao_yanlin 已提交
1197
  if (err) {
1198
    console.error(`Failed to obtain the volume group infos list. ${err}`);
J
jiao_yanlin 已提交
1199 1200
    return;
  }
1201
  console.info('Callback invoked to indicate that the volume group infos list is obtained.');
L
lwx1059628 已提交
1202
});
1203

1204
```
Z
zengyawen 已提交
1205

1206
### getVolumeGroupManager<sup>9+</sup>
1207

1208
getVolumeGroupManager(groupId: number\): Promise<AudioVolumeGroupManager\>
1209

1210
获取音频组管理器,使用promise方式异步返回结果。
1211

Z
zengyawen 已提交
1212 1213
**系统能力:** SystemCapability.Multimedia.Audio.Volume

1214 1215
**参数:**

1216 1217 1218
| 参数名     | 类型                                      | 必填 | 说明              |
| ---------- | ---------------------------------------- | ---- | ---------------- |
| groupId    | number                                   | 是   | 音量组id。     |
1219 1220 1221

**返回值:**

1222 1223 1224
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt; [AudioVolumeGroupManager](#audiovolumegroupmanager9) &gt; | 音量组实例。 |
Z
zengyawen 已提交
1225

1226 1227
**示例:**

J
jiao_yanlin 已提交
1228
```js
1229 1230 1231
let groupid = value[0].groupId;
let audioVolumeGroupManager = await audioVolumeManager.getVolumeGroupManager(groupid)
console.info('Callback invoked to indicate that the volume group infos list is obtained.');
1232 1233
```

1234
### on('volumeChange')<sup>9+</sup>
Z
zengyawen 已提交
1235

1236
on(type: 'volumeChange', callback: Callback\<VolumeEvent>): void
1237

1238
监听系统音量变化事件,使用callback方式异步返回结果。
1239

1240
**系统能力:** SystemCapability.Multimedia.Audio.Volume
1241

1242
**参数:**
1243

1244 1245 1246 1247
| 参数名   | 类型                                   | 必填 | 说明                                                         |
| -------- | -------------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                                 | 是   | 事件回调类型,支持的事件为:'volumeChange'。 |
| callback | Callback<[VolumeEvent](#volumeevent8)> | 是   | 回调方法。                                                   |
1248

1249
**错误码:**
Z
zengyawen 已提交
1250

1251
以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)
1252

1253 1254 1255
| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error.             |
1256 1257 1258

**示例:**

J
jiao_yanlin 已提交
1259
```js
1260 1261 1262 1263
audioVolumeManager.on('volumeChange', (volumeEvent) => {
  console.info(`VolumeType of stream: ${volumeEvent.volumeType} `);
  console.info(`Volume level: ${volumeEvent.volume} `);
  console.info(`Whether to updateUI: ${volumeEvent.updateUi} `);
L
lwx1059628 已提交
1264
});
1265 1266
```

1267
## AudioVolumeGroupManager<sup>9+</sup>
Z
zengyawen 已提交
1268

1269
管理音频组音量。在调用AudioVolumeGroupManager的接口前,需要先通过 [getVolumeGroupManager](#getvolumegroupmanager9) 创建实例。
1270

1271
**系统接口:** 该接口为系统接口
1272

1273
**系统能力:** SystemCapability.Multimedia.Audio.Volume
1274

1275
### setVolume<sup>9+</sup>
1276

1277
setVolume(volumeType: AudioVolumeType, volume: number, callback: AsyncCallback&lt;void&gt;): void
1278

1279
设置指定流的音量,使用callback方式异步返回结果。
Z
zengyawen 已提交
1280

1281
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
1282

1283
仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。
1284

1285
**系统接口:** 该接口为系统接口
1286

1287
**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1288

Z
zengyawen 已提交
1289
**参数:**
1290

1291 1292 1293 1294 1295
| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
| volume     | number                              | 是   | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 |
| callback   | AsyncCallback&lt;void&gt;           | 是   | 回调表示成功还是失败。                                   |
1296 1297 1298

**示例:**

J
jiao_yanlin 已提交
1299
```js
1300
audioVolumeGroupManager.setVolume(audio.AudioVolumeType.MEDIA, 10, (err) => {
J
jiao_yanlin 已提交
1301
  if (err) {
1302
    console.error(`Failed to set the volume. ${err}`);
J
jiao_yanlin 已提交
1303 1304
    return;
  }
1305
  console.info('Callback invoked to indicate a successful volume setting.');
L
lwx1059628 已提交
1306
});
1307 1308
```

1309
### setVolume<sup>9+</sup>
1310

1311
setVolume(volumeType: AudioVolumeType, volume: number): Promise&lt;void&gt;
1312

1313
设置指定流的音量,使用Promise方式异步返回结果。
1314

1315
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
1316

1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328
仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。

**系统接口:** 该接口为系统接口

**系统能力:** SystemCapability.Multimedia.Audio.Volume

**参数:**

| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
| volume     | number                              | 是   | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 |
Z
zengyawen 已提交
1329

1330 1331
**返回值:**

1332 1333 1334
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
1335 1336 1337

**示例:**

J
jiao_yanlin 已提交
1338
```js
1339 1340
audioVolumeGroupManager.setVolume(audio.AudioVolumeType.MEDIA, 10).then(() => {
  console.info('Promise returned to indicate a successful volume setting.');
L
lwx1059628 已提交
1341
});
1342 1343
```

1344
### getVolume<sup>9+</sup>
1345

1346
getVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
1347

1348
获取指定流的音量,使用callback方式异步返回结果。
1349

1350
**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1351

1352 1353
**参数:**

1354 1355 1356 1357
| 参数名     | 类型                                | 必填 | 说明               |
| ---------- | ----------------------------------- | ---- | ------------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。       |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回音量大小。 |
1358 1359 1360

**示例:**

J
jiao_yanlin 已提交
1361
```js
1362
audioVolumeGroupManager.getVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
1363
  if (err) {
1364
    console.error(`Failed to obtain the volume. ${err}`);
J
jiao_yanlin 已提交
1365 1366
    return;
  }
1367
  console.info('Callback invoked to indicate that the volume is obtained.');
L
lwx1059628 已提交
1368
});
1369 1370
```

1371
### getVolume<sup>9+</sup>
1372

1373
getVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
1374

1375
获取指定流的音量,使用Promise方式异步返回结果。
1376

1377
**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1378

1379 1380
**参数:**

1381 1382 1383
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
1384 1385 1386

**返回值:**

1387 1388 1389
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回音量大小。 |
1390 1391 1392

**示例:**

J
jiao_yanlin 已提交
1393
```js
1394 1395
audioVolumeGroupManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the volume is obtained ${value}.`);
L
lwx1059628 已提交
1396
});
1397 1398
```

1399
### getMinVolume<sup>9+</sup>
1400

1401
getMinVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
1402

1403
获取指定流的最小音量,使用callback方式异步返回结果。
1404

1405
**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1406

1407 1408
**参数:**

1409 1410 1411 1412
| 参数名     | 类型                                | 必填 | 说明               |
| ---------- | ----------------------------------- | ---- | ------------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。       |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回最小音量。 |
1413 1414 1415

**示例:**

J
jiao_yanlin 已提交
1416
```js
1417
audioVolumeGroupManager.getMinVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
1418
  if (err) {
1419
    console.error(`Failed to obtain the minimum volume. ${err}`);
J
jiao_yanlin 已提交
1420 1421
    return;
  }
1422
  console.info(`Callback invoked to indicate that the minimum volume is obtained. ${value}`);
L
lwx1059628 已提交
1423
});
1424 1425
```

1426
### getMinVolume<sup>9+</sup>
1427

1428
getMinVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
1429

1430
获取指定流的最小音量,使用Promise方式异步返回结果。
1431

1432
**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1433

1434 1435
**参数:**

1436 1437 1438
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
1439 1440 1441

**返回值:**

1442 1443 1444
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回最小音量。 |
1445 1446 1447

**示例:**

J
jiao_yanlin 已提交
1448
```js
1449 1450
audioVolumeGroupManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promised returned to indicate that the minimum volume is obtained ${value}.`);
L
lwx1059628 已提交
1451
});
1452 1453
```

1454
### getMaxVolume<sup>9+</sup>
1455

1456
getMaxVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
1457

1458
获取指定流的最大音量,使用callback方式异步返回结果。
1459

1460
**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1461

1462 1463
**参数:**

1464 1465 1466 1467
| 参数名     | 类型                                | 必填 | 说明                   |
| ---------- | ----------------------------------- | ---- | ---------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。           |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回最大音量大小。 |
1468 1469

**示例:**
1470

J
jiao_yanlin 已提交
1471
```js
1472
audioVolumeGroupManager.getMaxVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
1473
  if (err) {
1474
    console.error(`Failed to obtain the maximum volume. ${err}`);
J
jiao_yanlin 已提交
1475 1476
    return;
  }
1477
  console.info(`Callback invoked to indicate that the maximum volume is obtained. ${value}`);
L
lwx1059628 已提交
1478
});
1479 1480
```

1481
### getMaxVolume<sup>9+</sup>
1482

1483
getMaxVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
1484

1485
获取指定流的最大音量,使用Promise方式异步返回结果。
1486

1487
**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1488

1489 1490
**参数:**

1491 1492 1493
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
1494 1495 1496

**返回值:**

1497 1498 1499
| 类型                  | 说明                          |
| --------------------- | ----------------------------- |
| Promise&lt;number&gt; | Promise回调返回最大音量大小。 |
1500 1501 1502

**示例:**

J
jiao_yanlin 已提交
1503
```js
1504 1505
audioVolumeGroupManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((data) => {
  console.info('Promised returned to indicate that the maximum volume is obtained.');
L
lwx1059628 已提交
1506
});
1507 1508
```

1509
### mute<sup>9+</sup>
Z
zengyawen 已提交
1510

1511
mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback&lt;void&gt;): void
1512

1513
设置指定音量流静音,使用callback方式异步返回结果。
1514

1515
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
1516

1517 1518 1519 1520 1521
仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。

**系统接口:** 该接口为系统接口

**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1522

1523 1524
**参数:**

1525 1526 1527 1528 1529
| 参数名     | 类型                                | 必填 | 说明                                  |
| ---------- | ----------------------------------- | ---- | ------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                          |
| mute       | boolean                             | 是   | 静音状态,true为静音,false为非静音。 |
| callback   | AsyncCallback&lt;void&gt;           | 是   | 回调表示成功还是失败。                |
1530 1531 1532

**示例:**

J
jiao_yanlin 已提交
1533
```js
1534
audioVolumeGroupManager.mute(audio.AudioVolumeType.MEDIA, true, (err) => {
J
jiao_yanlin 已提交
1535
  if (err) {
1536
    console.error(`Failed to mute the stream. ${err}`);
J
jiao_yanlin 已提交
1537 1538
    return;
  }
1539
  console.info('Callback invoked to indicate that the stream is muted.');
L
lwx1059628 已提交
1540
});
1541 1542
```

1543
### mute<sup>9+</sup>
Z
zengyawen 已提交
1544

1545
mute(volumeType: AudioVolumeType, mute: boolean): Promise&lt;void&gt;
1546

1547
设置指定音量流静音,使用Promise方式异步返回结果。
1548

1549
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
1550

1551 1552 1553 1554 1555
仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。

**系统接口:** 该接口为系统接口

**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1556

1557 1558
**参数:**

1559 1560 1561 1562
| 参数名     | 类型                                | 必填 | 说明                                  |
| ---------- | ----------------------------------- | ---- | ------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                          |
| mute       | boolean                             | 是   | 静音状态,true为静音,false为非静音。 |
1563 1564 1565

**返回值:**

1566 1567 1568
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
1569 1570 1571

**示例:**

J
jiao_yanlin 已提交
1572
```js
1573 1574
audioVolumeGroupManager.mute(audio.AudioVolumeType.MEDIA, true).then(() => {
  console.info('Promise returned to indicate that the stream is muted.');
L
lwx1059628 已提交
1575
});
1576 1577
```

1578
### isMute<sup>9+</sup>
1579

1580
isMute(volumeType: AudioVolumeType, callback: AsyncCallback&lt;boolean&gt;): void
1581

1582
获取指定音量流是否被静音,使用callback方式异步返回结果。
1583

1584
**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1585

1586 1587
**参数:**

1588 1589 1590 1591
| 参数名     | 类型                                | 必填 | 说明                                            |
| ---------- | ----------------------------------- | ---- | ----------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                    |
| callback   | AsyncCallback&lt;boolean&gt;        | 是   | 回调返回流静音状态,true为静音,false为非静音。 |
1592 1593 1594

**示例:**

J
jiao_yanlin 已提交
1595
```js
1596
audioVolumeGroupManager.isMute(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
1597
  if (err) {
1598
    console.error(`Failed to obtain the mute status. ${err}`);
J
jiao_yanlin 已提交
1599 1600
    return;
  }
1601
  console.info(`Callback invoked to indicate that the mute status of the stream is obtained ${value}.`);
L
lwx1059628 已提交
1602
});
1603 1604
```

1605
### isMute<sup>9+</sup>
1606

1607
isMute(volumeType: AudioVolumeType): Promise&lt;boolean&gt;
1608

1609
获取指定音量流是否被静音,使用Promise方式异步返回结果。
1610

1611
**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1612

1613 1614
**参数:**

1615 1616 1617
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
1618 1619 1620

**返回值:**

1621 1622 1623
| 类型                   | 说明                                                   |
| ---------------------- | ------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回流静音状态,true为静音,false为非静音。 |
1624 1625 1626

**示例:**

J
jiao_yanlin 已提交
1627
```js
1628 1629
audioVolumeGroupManager.isMute(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the mute status of the stream is obtained ${value}.`);
L
lwx1059628 已提交
1630
});
1631 1632
```

1633
### setRingerMode<sup>9+</sup>
Z
zengyawen 已提交
1634

1635
setRingerMode(mode: AudioRingMode, callback: AsyncCallback&lt;void&gt;): void
1636

1637
设置铃声模式,使用callback方式异步返回结果。
1638

1639
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
1640

1641
仅在静音和非静音状态切换时需要该权限。
1642

1643 1644 1645
**系统接口:** 该接口为系统接口

**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1646

1647 1648
**参数:**

1649 1650 1651 1652
| 参数名   | 类型                            | 必填 | 说明                     |
| -------- | ------------------------------- | ---- | ------------------------ |
| mode     | [AudioRingMode](#audioringmode) | 是   | 音频铃声模式。           |
| callback | AsyncCallback&lt;void&gt;       | 是   | 回调返回设置成功或失败。 |
1653 1654 1655

**示例:**

J
jiao_yanlin 已提交
1656
```js
1657
audioVolumeGroupManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL, (err) => {
J
jiao_yanlin 已提交
1658
  if (err) {
1659
    console.error(`Failed to set the ringer mode.​ ${err}`);
J
jiao_yanlin 已提交
1660 1661
    return;
  }
1662
  console.info('Callback invoked to indicate a successful setting of the ringer mode.');
L
lwx1059628 已提交
1663
});
1664 1665
```

1666
### setRingerMode<sup>9+</sup>
Z
zengyawen 已提交
1667

1668
setRingerMode(mode: AudioRingMode): Promise&lt;void&gt;
1669

1670
设置铃声模式,使用Promise方式异步返回结果。
1671

1672
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
1673

1674
仅在静音和非静音状态切换时需要该权限。
1675

1676 1677 1678
**系统接口:** 该接口为系统接口

**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1679

1680 1681
**参数:**

1682 1683 1684
| 参数名 | 类型                            | 必填 | 说明           |
| ------ | ------------------------------- | ---- | -------------- |
| mode   | [AudioRingMode](#audioringmode) | 是   | 音频铃声模式。 |
1685 1686 1687

**返回值:**

Z
zengyawen 已提交
1688 1689
| 类型                | 说明                            |
| ------------------- | ------------------------------- |
Z
zengyawen 已提交
1690
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |
1691 1692 1693

**示例:**

J
jiao_yanlin 已提交
1694
```js
1695 1696
audioVolumeGroupManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL).then(() => {
  console.info('Promise returned to indicate a successful setting of the ringer mode.');
L
lwx1059628 已提交
1697
});
1698 1699
```

1700
### getRingerMode<sup>9+</sup>
1701

1702
getRingerMode(callback: AsyncCallback&lt;AudioRingMode&gt;): void
1703

1704
获取铃声模式,使用callback方式异步返回结果。
1705

1706
**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1707

1708 1709
**参数:**

1710 1711 1712
| 参数名   | 类型                                                 | 必填 | 说明                     |
| -------- | ---------------------------------------------------- | ---- | ------------------------ |
| callback | AsyncCallback&lt;[AudioRingMode](#audioringmode)&gt; | 是   | 回调返回系统的铃声模式。 |
1713 1714 1715

**示例:**

J
jiao_yanlin 已提交
1716
```js
1717
audioVolumeGroupManager.getRingerMode((err, value) => {
J
jiao_yanlin 已提交
1718
  if (err) {
1719
    console.error(`Failed to obtain the ringer mode.​ ${err}`);
J
jiao_yanlin 已提交
1720 1721
    return;
  }
1722
  console.info(`Callback invoked to indicate that the ringer mode is obtained ${value}.`);
L
lwx1059628 已提交
1723
});
1724 1725
```

1726
### getRingerMode<sup>9+</sup>
1727

1728
getRingerMode(): Promise&lt;AudioRingMode&gt;
1729

1730
获取铃声模式,使用Promise方式异步返回结果。
1731

1732
**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1733

1734 1735
**返回值:**

1736 1737 1738
| 类型                                           | 说明                            |
| ---------------------------------------------- | ------------------------------- |
| Promise&lt;[AudioRingMode](#audioringmode)&gt; | Promise回调返回系统的铃声模式。 |
1739 1740 1741

**示例:**

J
jiao_yanlin 已提交
1742
```js
1743 1744
audioVolumeGroupManager.getRingerMode().then((value) => {
  console.info(`Promise returned to indicate that the ringer mode is obtained ${value}.`);
L
lwx1059628 已提交
1745
});
1746 1747
```

1748
### on('ringerModeChange')<sup>9+</sup>
Z
zengyawen 已提交
1749

1750
on(type: 'ringerModeChange', callback: Callback\<AudioRingMode>): void
1751

1752
监听铃声模式变化事件。
Z
zengyawen 已提交
1753 1754 1755 1756 1757

**系统能力:** SystemCapability.Multimedia.Audio.Volume

**参数:**

1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769
| 参数名   | 类型                                      | 必填 | 说明                                                         |
| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                                    | 是   | 事件回调类型,支持的事件为:'ringerModeChange'(铃声模式变化事件,检测到铃声模式改变时,触发该事件)。 |
| callback | Callback<[AudioRingMode](#audioringmode)> | 是   | 回调方法。                                                   |

**错误码:**

以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error.             |
Z
zengyawen 已提交
1770 1771 1772

**示例:**

J
jiao_yanlin 已提交
1773
```js
1774 1775
audioVolumeGroupManager.on('ringerModeChange', (ringerMode) => {
  console.info(`Updated ringermode: ${ringerMode}`);
L
lwx1059628 已提交
1776
});
Z
zengyawen 已提交
1777
```
1778
### setMicrophoneMute<sup>9+</sup>
Z
zengyawen 已提交
1779

1780
setMicrophoneMute(mute: boolean, callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
1781

1782
设置麦克风静音状态,使用callback方式异步返回结果。
1783

1784
**需要权限:** ohos.permission.MANAGE_AUDIO_CONFIG
L
lwx1059628 已提交
1785

1786
**系统能力:** SystemCapability.Multimedia.Audio.Volume
Z
zengyawen 已提交
1787 1788 1789

**参数:**

1790 1791 1792 1793
| 参数名   | 类型                      | 必填 | 说明                                          |
| -------- | ------------------------- | ---- | --------------------------------------------- |
| mute     | boolean                   | 是   | 待设置的静音状态,true为静音,false为非静音。 |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调返回设置成功或失败。                      |
Z
zengyawen 已提交
1794

L
lwx1059628 已提交
1795 1796
**示例:**

J
jiao_yanlin 已提交
1797
```js
1798 1799 1800 1801 1802 1803
audioVolumeGroupManager.setMicrophoneMute(true, (err) => {
  if (err) {
    console.error(`Failed to mute the microphone. ${err}`);
    return;
  }
  console.info('Callback invoked to indicate that the microphone is muted.');
L
lwx1059628 已提交
1804 1805 1806
});
```

1807
### setMicrophoneMute<sup>9+</sup>
L
lwx1059628 已提交
1808

1809
setMicrophoneMute(mute: boolean): Promise&lt;void&gt;
L
lwx1059628 已提交
1810

1811
设置麦克风静音状态,使用Promise方式异步返回结果。
L
lwx1059628 已提交
1812

1813
**需要权限:** ohos.permission.MANAGE_AUDIO_CONFIG
1814

1815
**系统能力:** SystemCapability.Multimedia.Audio.Volume
L
lwx1059628 已提交
1816 1817 1818

**参数:**

1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829
| 参数名 | 类型    | 必填 | 说明                                          |
| ------ | ------- | ---- | --------------------------------------------- |
| mute   | boolean | 是   | 待设置的静音状态,true为静音,false为非静音。 |

**返回值:**

| 类型                | 说明                            |
| ------------------- | ------------------------------- |
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |

**示例:**
L
lwx1059628 已提交
1830

J
jiao_yanlin 已提交
1831
```js
1832 1833
audioVolumeGroupManager.setMicrophoneMute(true).then(() => {
  console.info('Promise returned to indicate that the microphone is muted.');
L
lwx1059628 已提交
1834 1835 1836
});
```

1837
### isMicrophoneMute<sup>9+</sup>
L
lwx1059628 已提交
1838

1839
isMicrophoneMute(callback: AsyncCallback&lt;boolean&gt;): void
L
lwx1059628 已提交
1840

1841
获取麦克风静音状态,使用callback方式异步返回结果。
1842

1843
**系统能力:** SystemCapability.Multimedia.Audio.Volume
L
lwx1059628 已提交
1844 1845 1846

**参数:**

1847 1848 1849
| 参数名   | 类型                         | 必填 | 说明                                                    |
| -------- | ---------------------------- | ---- | ------------------------------------------------------- |
| callback | AsyncCallback&lt;boolean&gt; | 是   | 回调返回系统麦克风静音状态,true为静音,false为非静音。 |
L
lwx1059628 已提交
1850 1851 1852

**示例:**

J
jiao_yanlin 已提交
1853
```js
1854 1855 1856 1857 1858 1859
audioVolumeGroupManager.isMicrophoneMute((err, value) => {
  if (err) {
    console.error(`Failed to obtain the mute status of the microphone. ${err}`);
    return;
  }
  console.info(`Callback invoked to indicate that the mute status of the microphone is obtained ${value}.`);
L
lwx1059628 已提交
1860 1861 1862
});
```

1863
### isMicrophoneMute<sup>9+</sup>
1864

1865
isMicrophoneMute(): Promise&lt;boolean&gt;
1866

1867
获取麦克风静音状态,使用Promise方式异步返回结果。
1868

1869
**系统能力:** SystemCapability.Multimedia.Audio.Volume
1870

1871
**返回值:**
1872

1873 1874 1875
| 类型                   | 说明                                                         |
| ---------------------- | ------------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回系统麦克风静音状态,true为静音,false为非静音。 |
1876 1877 1878

**示例:**

J
jiao_yanlin 已提交
1879
```js
1880 1881
audioVolumeGroupManager.isMicrophoneMute().then((value) => {
  console.info(`Promise returned to indicate that the mute status of the microphone is obtained ${value}.`);
1882 1883 1884
});
```

1885
### on('micStateChange')<sup>9+</sup>
1886

1887
on(type: 'micStateChange', callback: Callback&lt;MicStateChangeEvent&gt;): void
1888

1889
监听系统麦克风状态更改事件。
1890

1891
目前此订阅接口在单进程多AudioManager实例的使用场景下,仅最后一个实例的订阅生效,其他实例的订阅会被覆盖(即使最后一个实例没有进行订阅),因此推荐使用单一AudioManager实例进行开发。
1892

1893
**系统能力:** SystemCapability.Multimedia.Audio.Volume
1894 1895 1896

**参数:**

1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908
| 参数名   | 类型                                   | 必填 | 说明                                                         |
| -------- | -------------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                                 | 是   | 事件回调类型,支持的事件为:'micStateChange'(系统麦克风状态变化事件,检测到系统麦克风状态改变时,触发该事件)。 |
| callback | Callback<[MicStateChangeEvent](#micstatechangeevent9)> | 是   | 回调方法,返回变更后的麦克风状态。                                                   |

**错误码:**

以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error.             |
1909 1910 1911

**示例:**

J
jiao_yanlin 已提交
1912
```js
1913 1914
audioVolumeGroupManager.on('micStateChange', (micStateChange) => {
  console.info(`Current microphone status is: ${micStateChange.mute} `);
1915 1916 1917
});
```

1918
## AudioStreamManager<sup>9+</sup>
L
lwx1059628 已提交
1919

1920
管理音频流。在使用AudioStreamManager的API前,需要使用[getStreamManager](#getstreammanager9)获取AudioStreamManager实例。
L
lwx1059628 已提交
1921

1922
### getCurrentAudioRendererInfoArray<sup>9+</sup>
L
lwx1059628 已提交
1923

1924
getCurrentAudioRendererInfoArray(callback: AsyncCallback&lt;AudioRendererChangeInfoArray&gt;): void
L
lwx1059628 已提交
1925

1926 1927 1928
获取当前音频渲染器的信息。使用callback异步回调。

**系统能力**: SystemCapability.Multimedia.Audio.Renderer
L
lwx1059628 已提交
1929 1930 1931

**参数:**

1932 1933 1934
| 名称     | 类型                                 | 必填     | 说明                         |
| -------- | ----------------------------------- | -------- | --------------------------- |
| callback | AsyncCallback<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | 是     |  回调函数,返回当前音频渲染器的信息。 |
L
lwx1059628 已提交
1935 1936 1937

**示例:**

J
jiao_yanlin 已提交
1938
```js
1939 1940
audioStreamManager.getCurrentAudioRendererInfoArray(async (err, AudioRendererChangeInfoArray) => {
  console.info('getCurrentAudioRendererInfoArray **** Get Callback Called ****');
J
jiao_yanlin 已提交
1941
  if (err) {
1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964
    console.error(`getCurrentAudioRendererInfoArray :ERROR: ${err}`);
  } else {
    if (AudioRendererChangeInfoArray != null) {
      for (let i = 0; i < AudioRendererChangeInfoArray.length; i++) {
        let AudioRendererChangeInfo = AudioRendererChangeInfoArray[i];
        console.info(`StreamId for ${i} is: ${AudioRendererChangeInfo.streamId}`);
        console.info(`ClientUid for ${i} is: ${AudioRendererChangeInfo.clientUid}`);
        console.info(`Content ${i} is: ${AudioRendererChangeInfo.rendererInfo.content}`);
        console.info(`Stream ${i} is: ${AudioRendererChangeInfo.rendererInfo.usage}`);
        console.info(`Flag ${i} is: ${AudioRendererChangeInfo.rendererInfo.rendererFlags}`); 
        console.info(`State for ${i} is: ${AudioRendererChangeInfo.rendererState}`);  
        for (let j = 0;j < AudioRendererChangeInfo.deviceDescriptors.length; j++) {
          console.info(`Id: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].id}`);
          console.info(`Type: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].deviceType}`);
          console.info(`Role: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].deviceRole}`);
          console.info(`Name: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].name}`);
          console.info(`Address: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].address}`);
          console.info(`SampleRates: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].sampleRates[0]}`);
          console.info(`ChannelCount ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelCounts[0]}`);
          console.info(`ChannelMask: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelMasks}`);
        }
      }
    }
J
jiao_yanlin 已提交
1965
  }
L
lwx1059628 已提交
1966 1967 1968
});
```

1969
### getCurrentAudioRendererInfoArray<sup>9+</sup>
L
lwx1059628 已提交
1970

1971
getCurrentAudioRendererInfoArray(): Promise&lt;AudioRendererChangeInfoArray&gt;
L
lwx1059628 已提交
1972

1973
获取当前音频渲染器的信息。使用Promise异步回调。
L
lwx1059628 已提交
1974

1975
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
L
lwx1059628 已提交
1976 1977 1978

**返回值:**

1979 1980 1981
| 类型                                                                              | 说明                                    |
| ---------------------------------------------------------------------------------| --------------------------------------- |
| Promise<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)>          | Promise对象,返回当前音频渲染器信息。      |
L
lwx1059628 已提交
1982 1983 1984

**示例:**

J
jiao_yanlin 已提交
1985
```js
1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
async function getCurrentAudioRendererInfoArray(){
  await audioStreamManager.getCurrentAudioRendererInfoArray().then( function (AudioRendererChangeInfoArray) {
    console.info(`getCurrentAudioRendererInfoArray ######### Get Promise is called ##########`);
    if (AudioRendererChangeInfoArray != null) {
      for (let i = 0; i < AudioRendererChangeInfoArray.length; i++) {
        let AudioRendererChangeInfo = AudioRendererChangeInfoArray[i];
        console.info(`StreamId for ${i} is: ${AudioRendererChangeInfo.streamId}`);
        console.info(`ClientUid for ${i} is: ${AudioRendererChangeInfo.clientUid}`);
        console.info(`Content ${i} is: ${AudioRendererChangeInfo.rendererInfo.content}`);
        console.info(`Stream ${i} is: ${AudioRendererChangeInfo.rendererInfo.usage}`);
        console.info(`Flag ${i} is: ${AudioRendererChangeInfo.rendererInfo.rendererFlags}`); 
        console.info(`State for ${i} is: ${AudioRendererChangeInfo.rendererState}`);  
        for (let j = 0;j < AudioRendererChangeInfo.deviceDescriptors.length; j++) {
          console.info(`Id: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].id}`);
          console.info(`Type: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].deviceType}`);
          console.info(`Role: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].deviceRole}`);
          console.info(`Name: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].name}`);
          console.info(`Address: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].address}`);
          console.info(`SampleRates: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].sampleRates[0]}`);
          console.info(`ChannelCount ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelCounts[0]}`);
          console.info(`ChannelMask: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelMasks}`);
        }
      }
    }
  }).catch((err) => {
    console.error(`getCurrentAudioRendererInfoArray :ERROR: ${err}`);
  });
}
L
lwx1059628 已提交
2014 2015
```

2016
### getCurrentAudioCapturerInfoArray<sup>9+</sup>
L
lwx1059628 已提交
2017

2018
getCurrentAudioCapturerInfoArray(callback: AsyncCallback&lt;AudioCapturerChangeInfoArray&gt;): void
L
lwx1059628 已提交
2019

2020
获取当前音频采集器的信息。使用callback异步回调。
L
lwx1059628 已提交
2021

2022
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
L
lwx1059628 已提交
2023 2024 2025

**参数:**

2026 2027 2028
| 名称       | 类型                                 | 必填      | 说明                                                      |
| ---------- | ----------------------------------- | --------- | -------------------------------------------------------- |
| callback   | AsyncCallback<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | 是    | 回调函数,返回当前音频采集器的信息。 |
L
lwx1059628 已提交
2029 2030 2031

**示例:**

J
jiao_yanlin 已提交
2032
```js
2033 2034
audioStreamManager.getCurrentAudioCapturerInfoArray(async (err, AudioCapturerChangeInfoArray) => {
  console.info('getCurrentAudioCapturerInfoArray **** Get Callback Called ****');
J
jiao_yanlin 已提交
2035
  if (err) {
2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057
    console.error(`getCurrentAudioCapturerInfoArray :ERROR: ${err}`);
  } else {
    if (AudioCapturerChangeInfoArray != null) {
      for (let i = 0; i < AudioCapturerChangeInfoArray.length; i++) {
        console.info(`StreamId for ${i} is: ${AudioCapturerChangeInfoArray[i].streamId}`);
        console.info(`ClientUid for ${i} is: ${AudioCapturerChangeInfoArray[i].clientUid}`);
        console.info(`Source for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.source}`);
        console.info(`Flag  ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.capturerFlags}`);
        console.info(`State for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerState}`);  
        for (let j = 0; j < AudioCapturerChangeInfoArray[i].deviceDescriptors.length; j++) {
          console.info(`Id: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].id}`);
          console.info(`Type: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].deviceType}`);
          console.info(`Role: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].deviceRole}`);
          console.info(`Name: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].name}`);
          console.info(`Address: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].address}`);
          console.info(`SampleRates: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]}`);
          console.info(`ChannelCounts ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]}`);
          console.info(`ChannelMask: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks}`);
        }
      }
    }
  }
L
lwx1059628 已提交
2058 2059 2060
});
```

2061
### getCurrentAudioCapturerInfoArray<sup>9+</sup>
2062

2063
getCurrentAudioCapturerInfoArray(): Promise&lt;AudioCapturerChangeInfoArray&gt;
2064

2065
获取当前音频采集器的信息。使用Promise异步回调。
2066

2067 2068 2069 2070 2071 2072 2073
**系统能力:** SystemCapability.Multimedia.Audio.Renderer

**返回值:**

| 类型                                                                         | 说明                                 |
| -----------------------------------------------------------------------------| ----------------------------------- |
| Promise<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)>      | Promise对象,返回当前音频渲染器信息。  |
2074 2075 2076 2077

**示例:**

```js
2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103
async function getCurrentAudioCapturerInfoArray(){
  await audioStreamManager.getCurrentAudioCapturerInfoArray().then( function (AudioCapturerChangeInfoArray) {
    console.info('getCurrentAudioCapturerInfoArray **** Get Promise Called ****');
    if (AudioCapturerChangeInfoArray != null) {
      for (let i = 0; i < AudioCapturerChangeInfoArray.length; i++) {
        console.info(`StreamId for ${i} is: ${AudioCapturerChangeInfoArray[i].streamId}`);
        console.info(`ClientUid for ${i} is: ${AudioCapturerChangeInfoArray[i].clientUid}`);
        console.info(`Source for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.source}`);
        console.info(`Flag  ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.capturerFlags}`);
        console.info(`State for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerState}`);  
        for (let j = 0; j < AudioCapturerChangeInfoArray[i].deviceDescriptors.length; j++) {
          console.info(`Id: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].id}`);
          console.info(`Type: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].deviceType}`);
          console.info(`Role: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].deviceRole}`);
          console.info(`Name: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].name}`);
          console.info(`Address: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].address}`);
          console.info(`SampleRates: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]}`);
          console.info(`ChannelCounts ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]}`);
          console.info(`ChannelMask: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks}`);
        }
      }
    }
  }).catch((err) => {
    console.error(`getCurrentAudioCapturerInfoArray :ERROR: ${err}`);
  });
}
2104 2105
```

2106
### on('audioRendererChange')<sup>9+</sup>
2107

2108
on(type: "audioRendererChange", callback: Callback&lt;AudioRendererChangeInfoArray&gt;): void
2109

2110
监听音频渲染器更改事件。
2111

2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127
**系统能力:** SystemCapability.Multimedia.Audio.Renderer

**参数:**

| 名称     | 类型        | 必填      | 说明                                                                     |
| -------- | ---------- | --------- | ------------------------------------------------------------------------ |
| type     | string     | 是        | 事件类型,支持的事件`'audioRendererChange'`:当音频渲染器发生更改时触发。     |
| callback | Callback<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | 是  |  回调函数。        |

**错误码:**

以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error.             |
2128 2129 2130 2131

**示例:**

```js
2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153
audioStreamManager.on('audioRendererChange',  (AudioRendererChangeInfoArray) => {
  for (let i = 0; i < AudioRendererChangeInfoArray.length; i++) {
    let AudioRendererChangeInfo = AudioRendererChangeInfoArray[i];
    console.info(`## RendererChange on is called for ${i} ##`);
    console.info(`StreamId for ${i} is: ${AudioRendererChangeInfo.streamId}`);
    console.info(`ClientUid for ${i} is: ${AudioRendererChangeInfo.clientUid}`);
    console.info(`Content ${i} is: ${AudioRendererChangeInfo.rendererInfo.content}`);
    console.info(`Stream ${i} is: ${AudioRendererChangeInfo.rendererInfo.usage}`);
    console.info(`Flag ${i} is: ${AudioRendererChangeInfo.rendererInfo.rendererFlags}`); 
    console.info(`State for ${i} is: ${AudioRendererChangeInfo.rendererState}`);  
    for (let j = 0;j < AudioRendererChangeInfo.deviceDescriptors.length; j++) {
      console.info(`Id: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].id}`);
      console.info(`Type: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].deviceType}`);
      console.info(`Role: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].deviceRole}`);
      console.info(`Name: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].name}`);
      console.info(`Address: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].address}`);
      console.info(`SampleRates: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].sampleRates[0]}`);
      console.info(`ChannelCount ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelCounts[0]}`);
      console.info(`ChannelMask: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelMasks}`);
    }
  }
});
2154 2155
```

2156
### off('audioRendererChange')<sup>9+</sup>
2157

2158
off(type: "audioRendererChange"): void
2159

2160
取消监听音频渲染器更改事件。
2161

2162
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
2163

2164
**参数:**
2165

2166 2167 2168
| 名称     | 类型     | 必填 | 说明              |
| -------- | ------- | ---- | ---------------- |
| type     | string  | 是   | 事件类型,支持的事件`'audioRendererChange'`:音频渲染器更改事件。 |
2169

2170
**错误码:**
W
wangtao 已提交
2171

2172
以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)
2173

2174 2175 2176
| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error.             |
2177

2178
**示例:**
W
wangtao 已提交
2179

2180 2181 2182 2183
```js
audioStreamManager.off('audioRendererChange');
console.info('######### RendererChange Off is called #########');
```
W
wangtao 已提交
2184

2185
### on('audioCapturerChange')<sup>9+</sup>
W
wangtao 已提交
2186

2187 2188 2189 2190 2191
on(type: "audioCapturerChange", callback: Callback&lt;AudioCapturerChangeInfoArray&gt;): void

监听音频采集器更改事件。

**系统能力:** SystemCapability.Multimedia.Audio.Capturer
W
wangtao 已提交
2192 2193 2194

**参数:**

2195 2196 2197 2198
| 名称     | 类型     | 必填      | 说明                                                                                           |
| -------- | ------- | --------- | ----------------------------------------------------------------------- |
| type     | string  | 是        | 事件类型,支持的事件`'audioCapturerChange'`:当音频采集器发生更改时触发。     |
| callback | Callback<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | 是     | 回调函数。   |
W
wangtao 已提交
2199 2200

**示例:**
2201

W
wangtao 已提交
2202
```js
2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221
audioStreamManager.on('audioCapturerChange', (AudioCapturerChangeInfoArray) =>  {
  for (let i = 0; i < AudioCapturerChangeInfoArray.length; i++) {
    console.info(`## CapChange on is called for element ${i} ##`);
    console.info(`StreamId for ${i} is: ${AudioCapturerChangeInfoArray[i].streamId}`);
    console.info(`ClientUid for ${i} is: ${AudioCapturerChangeInfoArray[i].clientUid}`);
    console.info(`Source for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.source}`);
    console.info(`Flag  ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.capturerFlags}`);
    console.info(`State for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerState}`);  
    let devDescriptor = AudioCapturerChangeInfoArray[i].deviceDescriptors;
    for (let j = 0; j < AudioCapturerChangeInfoArray[i].deviceDescriptors.length; j++) {
      console.info(`Id: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].id}`);
      console.info(`Type: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].deviceType}`);
      console.info(`Role: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].deviceRole}`);
      console.info(`Name: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].name}`);
      console.info(`Address: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].address}`);
      console.info(`SampleRates: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]}`);
      console.info(`ChannelCounts ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]}`);
      console.info(`ChannelMask: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks}`);
    }
W
wangtao 已提交
2222 2223 2224 2225
  }
});
```

2226
### off('audioCapturerChange')<sup>9+</sup>
W
wangtao 已提交
2227

2228
off(type: "audioCapturerChange"): void;
W
wangtao 已提交
2229

2230
取消监听音频采集器更改事件。
W
wangtao 已提交
2231

2232
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
W
wangtao 已提交
2233 2234 2235

**参数:**

2236 2237 2238
| 名称      | 类型     | 必填 | 说明                                                          |
| -------- | -------- | --- | ------------------------------------------------------------- |
| type     | string   |是   | 事件类型,支持的事件`'audioCapturerChange'`:音频采集器更改事件。 |
2239

W
wangtao 已提交
2240 2241 2242
**示例:**

```js
2243 2244 2245
audioStreamManager.off('audioCapturerChange');
console.info('######### CapturerChange Off is called #########');

W
wangtao 已提交
2246 2247
```

2248
### isActive<sup>9+</sup>
W
wangtao 已提交
2249

2250
isActive(volumeType: AudioVolumeType, callback: AsyncCallback&lt;boolean&gt;): void
W
wangtao 已提交
2251

2252
获取指定音量流是否为活跃状态,使用callback方式异步返回结果。
W
wangtao 已提交
2253

2254
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
W
wangtao 已提交
2255 2256 2257

**参数:**

2258 2259 2260 2261
| 参数名     | 类型                                | 必填 | 说明                                              |
| ---------- | ----------------------------------- | ---- | ------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                      |
| callback   | AsyncCallback&lt;boolean&gt;        | 是   | 回调返回流的活跃状态,true为活跃,false为不活跃。 |
W
wangtao 已提交
2262 2263 2264 2265

**示例:**

```js
2266
audioStreamManager.isActive(audio.AudioVolumeType.MEDIA, (err, value) => {
2267
  if (err) {
2268
    console.error(`Failed to obtain the active status of the stream. ${err}`);
2269
    return;
W
wangtao 已提交
2270
  }
2271
  console.info(`Callback invoked to indicate that the active status of the stream is obtained ${value}.`);
2272
});
W
wangtao 已提交
2273 2274
```

2275
### isActive<sup>9+</sup>
W
wangtao 已提交
2276

2277
isActive(volumeType: AudioVolumeType): Promise&lt;boolean&gt;
W
wangtao 已提交
2278

2279
获取指定音量流是否为活跃状态,使用Promise方式异步返回结果。
W
wangtao 已提交
2280

2281
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
W
wangtao 已提交
2282 2283 2284

**参数:**

2285 2286 2287
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
W
wangtao 已提交
2288

2289 2290
**返回值:**

2291 2292 2293
| 类型                   | 说明                                                     |
| ---------------------- | -------------------------------------------------------- |
| Promise&lt;boolean&gt; | Promise回调返回流的活跃状态,true为活跃,false为不活跃。 |
2294

W
wangtao 已提交
2295 2296 2297
**示例:**

```js
2298 2299 2300
audioStreamManager.isActive(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the active status of the stream is obtained ${value}.`);
});
W
wangtao 已提交
2301
```
J
jiao_yanlin 已提交
2302

2303
## AudioRoutingManager<sup>9+</sup>
J
jiao_yanlin 已提交
2304

2305
音频路由管理。在使用AudioRoutingManager的接口前,需要使用[getRoutingManager](#getroutingmanager9)获取AudioRoutingManager实例。
J
jiao_yanlin 已提交
2306

2307
### getDevices<sup>9+</sup>
J
jiao_yanlin 已提交
2308

2309
getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback&lt;AudioDeviceDescriptors&gt;): void
J
jiao_yanlin 已提交
2310

2311
获取音频设备列表,使用callback方式异步返回结果。
2312

2313
**系统能力:** SystemCapability.Multimedia.Audio.Device
2314

2315
**参数:**
2316

2317 2318 2319 2320
| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
| deviceFlag | [DeviceFlag](#deviceflag)                                    | 是   | 设备类型的flag。     |
| callback   | AsyncCallback&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | 是   | 回调,返回设备列表。 |
J
jiao_yanlin 已提交
2321 2322 2323 2324

**示例:**

```js
2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338
let audioManager = audio.getAudioManager();
audioManager.getRoutingManager((err,AudioRoutingManager)=>{
  if (err) {
    console.error(`AudioFrameworkTest:Callback:failed to get RoutingManager ${err}`);
  } else {
    AudioRoutingManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG, (err, value) => {
      if (err) {
        console.error(`Failed to obtain the device list. ${err}`);
        return;
      }
      console.info('Callback invoked to indicate that the device list is obtained.');
    });
  }
})
J
jiao_yanlin 已提交
2339 2340
```

2341
### getDevices<sup>9+</sup>
J
jiao_yanlin 已提交
2342

2343
getDevices(deviceFlag: DeviceFlag): Promise&lt;AudioDeviceDescriptors&gt;
2344

2345
获取音频设备列表,使用Promise方式异步返回结果。
2346

2347
**系统能力:** SystemCapability.Multimedia.Audio.Device
2348

2349
**参数:**
2350

2351 2352 2353
| 参数名     | 类型                      | 必填 | 说明             |
| ---------- | ------------------------- | ---- | ---------------- |
| deviceFlag | [DeviceFlag](#deviceflag) | 是   | 设备类型的flag。 |
2354

2355
**返回值:**
2356

2357 2358 2359
| 类型                                                         | 说明                      |
| ------------------------------------------------------------ | ------------------------- |
| Promise&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | Promise回调返回设备列表。 |
2360 2361 2362 2363

**示例:**

```js
2364 2365
let audioManager = audio.getAudioManager();
audioManager.getRoutingManager((err,AudioRoutingManager)=>{
2366
  if (err) {
2367 2368 2369 2370 2371 2372
    console.error(`AudioFrameworkTest:Callback:failed to get RoutingManager ${err}`);
  }
  else {
    AudioRoutingManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((data) => {
      console.info('Promise returned to indicate that the device list is obtained.');
    });
2373
  }
2374
});
2375 2376
```

2377
### on<sup>9+</sup>
2378

2379
on(type: 'deviceChange', deviceFlag: DeviceFlag, callback: Callback<DeviceChangeAction\>): void
2380

2381
设备更改。音频设备连接状态变化。
2382

2383
**系统能力:** SystemCapability.Multimedia.Audio.Device
2384 2385 2386

**参数:**

2387 2388 2389 2390 2391
| 参数名   | 类型                                                 | 必填 | 说明                                       |
| :------- | :--------------------------------------------------- | :--- | :----------------------------------------- |
| type     | string                                               | 是   | 订阅的事件的类型。支持事件:'deviceChange' |
| deviceFlag | [DeviceFlag](#deviceflag)                                    | 是   | 设备类型的flag。     |
| callback | Callback<[DeviceChangeAction](#devicechangeaction)\> | 是   | 获取设备更新详情。                         |
2392

2393
**错误码:**
2394

2395 2396 2397 2398 2399
以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error.             |
2400 2401 2402 2403

**示例:**

```js
2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416
let audioManager = audio.getAudioManager();
audioManager.getRoutingManager((err,AudioRoutingManager)=>{
  if (err) {
    console.error(`AudioFrameworkTest:Callback:failed to get RoutingManager ${err}`);
  }
  else {
    AudioRoutingManager.on('deviceChange', audio.DeviceFlag.OUTPUT_DEVICES_FLAG, (deviceChanged) => {
      console.info('device change type : ' + deviceChanged.type);
      console.info('device descriptor size : ' + deviceChanged.deviceDescriptors.length);
      console.info('device change descriptor : ' + deviceChanged.deviceDescriptors[0].deviceRole);
      console.info('device change descriptor : ' + deviceChanged.deviceDescriptors[0].deviceType);
    });
  }
2417
});
2418 2419
```

2420
### off<sup>9+</sup>
2421

2422
off(type: 'deviceChange', callback?: Callback<DeviceChangeAction\>): void
2423

2424
取消订阅音频设备连接变化事件。
2425

2426
**系统能力:** SystemCapability.Multimedia.Audio.Device
W
wangtao 已提交
2427 2428 2429

**参数:**

2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441
| 参数名   | 类型                                                | 必填 | 说明                                       |
| -------- | --------------------------------------------------- | ---- | ------------------------------------------ |
| type     | string                                              | 是   | 订阅的事件的类型。支持事件:'deviceChange' |
| callback | Callback<[DeviceChangeAction](#devicechangeaction)> | 否   | 获取设备更新详情。                         |

**错误码:**

以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error.             |
W
wangtao 已提交
2442 2443 2444 2445

**示例:**

```js
2446 2447
let audioManager = audio.getAudioManager();
audioManager.getRoutingManager((err,AudioRoutingManager)=>{
W
wangtao 已提交
2448
  if (err) {
2449 2450 2451 2452 2453
    console.error(`AudioFrameworkTest:Callback:failed to get RoutingManager ${err}`);
  } else {
    AudioRoutingManager.off('deviceChange', (deviceChanged) => {
      console.info('Should be no callback.');
    });
W
wangtao 已提交
2454 2455 2456 2457
  }
});
```

2458
### selectInputDevice<sup>9+</sup>
W
wangtao 已提交
2459

2460
selectInputDevice(inputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback&lt;void&gt;): void
W
wangtao 已提交
2461

2462
选择音频输入设备,当前只能选择一个输入设备,使用callback方式异步返回结果。
W
wangtao 已提交
2463

2464
**系统接口:** 该接口为系统接口
W
wangtao 已提交
2465

2466
**系统能力:** SystemCapability.Multimedia.Audio.Device
W
wangtao 已提交
2467

2468
**参数:**
W
wangtao 已提交
2469

2470 2471 2472 2473
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| inputAudioDevices           | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输入设备类。               |
| callback                    | AsyncCallback&lt;void&gt;                                    | 是   | 回调,返回选择输入设备结果。 |
W
wangtao 已提交
2474 2475 2476

**示例:**
```js
2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495
let audioManager = audio.getAudioManager();
let inputAudioDeviceDescriptor = [{
  "deviceRole":audio.DeviceRole.INPUT_DEVICE,
  "networkId":audio.LOCAL_NETWORK_ID,
  "interruptGroupId":1,
  "volumeGroupId":1 }];
let audioRoutingManager;

async function getRoutingManager(){
  await audioManager.getRoutingManager().then((value) => {
    audioRoutingManager = value;
    audioRoutingManager.selectInputDevice(inputAudioDeviceDescriptor, (err) => {
      if (err) {
        console.error(`Result ERROR: ${err}`);
      } else {
        console.info('Select input devices result callback: SUCCESS'); }
    });
  });
}
W
wangtao 已提交
2496 2497
```

2498
### selectInputDevice<sup>9+</sup>
W
wangtao 已提交
2499

2500
selectInputDevice(inputAudioDevices: AudioDeviceDescriptors): Promise&lt;void&gt;
W
wangtao 已提交
2501

2502
**系统接口:** 该接口为系统接口
W
wangtao 已提交
2503

2504 2505 2506
选择音频输入设备,当前只能选择一个输入设备,使用Promise方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Device
W
wangtao 已提交
2507 2508 2509

**参数:**

2510 2511 2512 2513 2514 2515 2516 2517 2518
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| inputAudioDevices           | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输入设备类。               |

**返回值:**

| 类型                  | 说明                         |
| --------------------- | --------------------------- |
| Promise&lt;void&gt;   | Promise返回选择输入设备结果。 |
W
wangtao 已提交
2519 2520 2521 2522

**示例:**

```js
2523 2524 2525 2526 2527 2528 2529
let audioManager = audio.getAudioManager();
let inputAudioDeviceDescriptor =[{
  "deviceRole":audio.DeviceRole.INPUT_DEVICE,
  "networkId":audio.LOCAL_NETWORK_ID,
  "interruptGroupId":1,
  "volumeGroupId":1 }];
let audioRoutingManager;
W
wangtao 已提交
2530

2531 2532 2533 2534 2535 2536 2537 2538 2539 2540
async function getRoutingManager(){
  await audioManager.getRoutingManager().then((value) => {
    audioRoutingManager = value;
    audioRoutingManager.selectInputDevice(inputAudioDeviceDescriptor).then(() => {
      console.info('Select input devices result promise: SUCCESS');
    }).catch((err) => {
      console.error(`Result ERROR: ${err}`);
    });
  });
}
W
wangtao 已提交
2541 2542
```

2543
### setCommunicationDevice<sup>9+</sup>
W
wangtao 已提交
2544

2545
setCommunicationDevice(deviceType: CommunicationDeviceType, active: boolean, callback: AsyncCallback&lt;void&gt;): void
W
wangtao 已提交
2546

2547
设置通信设备激活状态,使用callback方式异步返回结果。
W
wangtao 已提交
2548

2549
**系统能力:** SystemCapability.Multimedia.Audio.Communication
W
wangtao 已提交
2550 2551 2552

**参数:**

2553 2554 2555 2556 2557
| 参数名     | 类型                                  | 必填 | 说明                     |
| ---------- | ------------------------------------- | ---- | ------------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是   | 音频设备类型。       |
| active     | boolean                               | 是   | 设备激活状态。           |
| callback   | AsyncCallback&lt;void&gt;             | 是   | 回调返回设置成功或失败。 |
W
wangtao 已提交
2558 2559 2560 2561

**示例:**

```js
2562
audioRoutingManager.setCommunicationDevice(audio.ActiveDeviceType.SPEAKER, true, (err) => {
W
wangtao 已提交
2563
  if (err) {
2564
    console.error(`Failed to set the active status of the device. ${err}`);
W
wangtao 已提交
2565 2566
    return;
  }
2567
  console.info('Callback invoked to indicate that the device is set to the active status.');
W
wangtao 已提交
2568 2569 2570
});
```

2571
### setCommunicationDevice<sup>9+</sup>
W
wangtao 已提交
2572

2573
setCommunicationDevice(deviceType: CommunicationDeviceType, active: boolean): Promise&lt;void&gt;
W
wangtao 已提交
2574

2575
设置通信设备激活状态,使用Promise方式异步返回结果。
W
wangtao 已提交
2576

2577
**系统能力:** SystemCapability.Multimedia.Audio.Communication
W
wangtao 已提交
2578 2579 2580

**参数:**

2581 2582 2583 2584
| 参数名     | 类型                                                   | 必填 | 说明               |
| ---------- | ----------------------------------------------------- | ---- | ------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9)  | 是   | 活跃音频设备类型。 |
| active     | boolean                                               | 是   | 设备激活状态。     |
W
wangtao 已提交
2585 2586 2587

**返回值:**

2588 2589 2590
| 类型                | 说明                            |
| ------------------- | ------------------------------- |
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |
W
wangtao 已提交
2591 2592 2593 2594

**示例:**

```js
2595 2596
audioRoutingManager.setCommunicationDevice(audio.ActiveDeviceType.SPEAKER, true).then(() => {
  console.info('Promise returned to indicate that the device is set to the active status.');
W
wangtao 已提交
2597 2598 2599
});
```

2600
### isCommunicationDeviceActive<sup>9+</sup>
2601

2602
isCommunicationDeviceActive(deviceType: CommunicationDeviceType, callback: AsyncCallback&lt;boolean&gt;): void
W
wangtao 已提交
2603

2604
获取指定通信设备的激活状态,使用callback方式异步返回结果。
J
jiao_yanlin 已提交
2605

2606
**系统能力:** SystemCapability.Multimedia.Audio.Communication
W
wangtao 已提交
2607 2608 2609

**参数:**

2610 2611 2612 2613
| 参数名     | 类型                                                  | 必填 | 说明                     |
| ---------- | ---------------------------------------------------- | ---- | ------------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是   | 活跃音频设备类型。       |
| callback   | AsyncCallback&lt;boolean&gt;                         | 是   | 回调返回设备的激活状态。 |
W
wangtao 已提交
2614 2615 2616 2617

**示例:**

```js
2618
audioRoutingManager.isCommunicationDeviceActive(audio.ActiveDeviceType.SPEAKER, (err, value) => {
W
wangtao 已提交
2619
  if (err) {
2620
    console.error(`Failed to obtain the active status of the device. ${err}`);
W
wangtao 已提交
2621 2622
    return;
  }
2623
  console.info('Callback invoked to indicate that the active status of the device is obtained.');
W
wangtao 已提交
2624 2625 2626
});
```

2627
### isCommunicationDeviceActive<sup>9+</sup>
2628

2629
isCommunicationDeviceActive(deviceType: CommunicationDeviceType): Promise&lt;boolean&gt;
W
wangtao 已提交
2630

2631
获取指定通信设备的激活状态,使用Promise方式异步返回结果。
J
jiao_yanlin 已提交
2632

2633
**系统能力:** SystemCapability.Multimedia.Audio.Communication
W
wangtao 已提交
2634 2635 2636

**参数:**

2637 2638 2639
| 参数名     | 类型                                                  | 必填 | 说明               |
| ---------- | ---------------------------------------------------- | ---- | ------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是   | 活跃音频设备类型。 |
W
wangtao 已提交
2640 2641 2642

**返回值:**

2643 2644 2645
| Type                   | Description                     |
| ---------------------- | ------------------------------- |
| Promise&lt;boolean&gt; | Promise回调返回设备的激活状态。 |
W
wangtao 已提交
2646 2647 2648 2649

**示例:**

```js
2650 2651
audioRoutingManager.isCommunicationDeviceActive(audio.ActiveDeviceType.SPEAKER).then((value) => {
  console.info(`Promise returned to indicate that the active status of the device is obtained ${value}.`);
W
wangtao 已提交
2652 2653 2654
});
```

2655
### selectOutputDevice<sup>9+</sup>
W
wangtao 已提交
2656

2657
selectOutputDevice(outputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback&lt;void&gt;): void
W
wangtao 已提交
2658

2659
选择音频输出设备,当前只能选择一个输出设备,使用callback方式异步返回结果。
W
wangtao 已提交
2660

2661 2662 2663
**系统接口:** 该接口为系统接口

**系统能力:** SystemCapability.Multimedia.Audio.Device
W
wangtao 已提交
2664 2665 2666

**参数:**

2667 2668 2669 2670
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| outputAudioDevices          | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输出设备类。               |
| callback                    | AsyncCallback&lt;void&gt;                                    | 是   | 回调,返回获取输出设备结果。 |
W
wangtao 已提交
2671 2672 2673

**示例:**
```js
2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692
let audioManager = audio.getAudioManager();
let outputAudioDeviceDescriptor = [{
  "deviceRole":audio.DeviceRole.OUTPUT_DEVICE,
  "networkId":audio.LOCAL_NETWORK_ID,
  "interruptGroupId":1,
  "volumeGroupId":1 }];
let audioRoutingManager;

async function getRoutingManager(){
  await audioManager.getRoutingManager().then((value) => {
    audioRoutingManager = value;
    audioRoutingManager.selectOutputDevice(outputAudioDeviceDescriptor, (err) => {
      if (err) {
        console.error(`Result ERROR: ${err}`);
      } else {
        console.info('Select output devices result callback: SUCCESS'); }
    });
  });
}
W
wangtao 已提交
2693 2694
```

2695
### selectOutputDevice<sup>9+</sup>
W
wangtao 已提交
2696

2697
selectOutputDevice(outputAudioDevices: AudioDeviceDescriptors): Promise&lt;void&gt;
W
wangtao 已提交
2698

2699
**系统接口:** 该接口为系统接口
W
wangtao 已提交
2700

2701 2702 2703
选择音频输出设备,当前只能选择一个输出设备,使用Promise方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Device
W
wangtao 已提交
2704 2705 2706

**参数:**

2707 2708 2709
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| outputAudioDevices          | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输出设备类。               |
W
wangtao 已提交
2710 2711 2712

**返回值:**

2713 2714 2715
| 类型                  | 说明                         |
| --------------------- | --------------------------- |
| Promise&lt;void&gt;   | Promise返回选择输出设备结果。 |
W
wangtao 已提交
2716 2717 2718 2719

**示例:**

```js
2720 2721 2722 2723 2724 2725 2726
let audioManager = audio.getAudioManager();
let outputAudioDeviceDescriptor =[{
  "deviceRole":audio.DeviceRole.OUTPUT_DEVICE,
  "networkId":audio.LOCAL_NETWORK_ID,
  "interruptGroupId":1,
  "volumeGroupId":1 }];
let audioRoutingManager;
2727

2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738
async function getRoutingManager(){
  await audioManager.getRoutingManager().then((value) => {
    audioRoutingManager = value;
    audioRoutingManager.selectOutputDevice(outputAudioDeviceDescriptor).then(() => {
      console.info('Select output devices result promise: SUCCESS');
    }).catch((err) => {
      console.error(`Result ERROR: ${err}`);
    });
  });
}
```
2739

2740
### selectOutputDeviceByFilter<sup>9+</sup>
2741

2742
selectOutputDeviceByFilter(filter: AudioRendererFilter, outputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback&lt;void&gt;): void
2743 2744 2745

**系统接口:** 该接口为系统接口

2746 2747 2748
根据过滤条件,选择音频输出设备,当前只能选择一个输出设备,使用callback方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Device
2749 2750 2751

**参数:**

2752 2753 2754 2755 2756
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| filter                      | [AudioRendererFilter](#audiorendererfilter9)                 | 是   | 过滤条件类。               |
| outputAudioDevices          | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输出设备类。               |
| callback                    | AsyncCallback&lt;void&gt;                                    | 是   | 回调,返回获取输出设备结果。 |
2757 2758 2759

**示例:**
```js
2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773
let audioManager = audio.getAudioManager();
let outputAudioRendererFilter = {
  "uid":20010041,
  "rendererInfo": {
    "contentType":audio.ContentType.CONTENT_TYPE_MUSIC,
    "streamUsage":audio.StreamUsage.STREAM_USAGE_MEDIA,
    "rendererFlags":0 },
  "rendererId":0 };
let outputAudioDeviceDescriptor = [{
  "deviceRole":audio.DeviceRole.OUTPUT_DEVICE,
  "networkId":audio.LOCAL_NETWORK_ID,
  "interruptGroupId":1,
  "volumeGroupId":1 }];
let audioRoutingManager;
2774

2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786
async function getRoutingManager(){
  await audioManager.getRoutingManager().then((value) => {
    audioRoutingManager = value;
    audioRoutingManager.selectOutputDeviceByFilter(outputAudioRendererFilter, outputAudioDeviceDescriptor, (err) => {
      if (err) {
        console.error(`Result ERROR: ${err}`);
      } else {
        console.info('Select output devices by filter result callback: SUCCESS'); }
    });
  });
}
```
2787

2788
### selectOutputDeviceByFilter<sup>9+</sup>
2789

2790
selectOutputDeviceByFilter(filter: AudioRendererFilter, outputAudioDevices: AudioDeviceDescriptors): Promise&lt;void&gt;
2791 2792 2793

**系统接口:** 该接口为系统接口

2794 2795 2796
根据过滤条件,选择音频输出设备,当前只能选择一个输出设备,使用Promise方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Device
2797 2798 2799

**参数:**

2800 2801 2802 2803
| 参数名                 | 类型                                                         | 必填 | 说明                      |
| ----------------------| ------------------------------------------------------------ | ---- | ------------------------- |
| filter                | [AudioRendererFilter](#audiorendererfilter9)                 | 是   | 过滤条件类。               |
| outputAudioDevices    | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输出设备类。               |
2804 2805 2806

**返回值:**

2807 2808 2809
| 类型                  | 说明                         |
| --------------------- | --------------------------- |
| Promise&lt;void&gt;   | Promise返回选择输出设备结果。 |
2810 2811 2812 2813

**示例:**

```js
2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838
let audioManager = audio.getAudioManager();
let outputAudioRendererFilter = {
  "uid":20010041,
  "rendererInfo": {
    "contentType":audio.ContentType.CONTENT_TYPE_MUSIC,
    "streamUsage":audio.StreamUsage.STREAM_USAGE_MEDIA,
    "rendererFlags":0 },
  "rendererId":0 };
let outputAudioDeviceDescriptor = [{
  "deviceRole":audio.DeviceRole.OUTPUT_DEVICE,
  "networkId":audio.LOCAL_NETWORK_ID,
  "interruptGroupId":1,
  "volumeGroupId":1 }];
let audioRoutingManager;

async function getRoutingManager(){
  await audioManager.getRoutingManager().then((value) => {
    audioRoutingManager = value;
    audioRoutingManager.selectOutputDeviceByFilter(outputAudioRendererFilter, outputAudioDeviceDescriptor).then(() => {
      console.info('Select output devices by filter result promise: SUCCESS');
    }).catch((err) => {
      console.error(`Result ERROR: ${err}`);
    })
  });
}
2839 2840
```

2841
## AudioRendererChangeInfo<sup>9+</sup>
2842

2843
描述音频渲染器更改信息。
2844

2845
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Renderer
2846

2847 2848 2849 2850 2851 2852
| 名称               | 类型                                       | 可读 | 可写 | 说明                          |
| -------------------| ----------------------------------------- | ---- | ---- | ---------------------------- |
| streamId           | number                                    | 是   | 否   | 音频流唯一id。                |
| clientUid          | number                                    | 是   | 否   | 音频渲染器客户端应用程序的Uid。<br/>此接口为系统接口,三方应用不支持调用。 |
| rendererInfo       | [AudioRendererInfo](#audiorendererinfo8)  | 是   | 否   | 音频渲染器信息。               |
| rendererState      | [AudioState](#audiostate)                 | 是   | 否   | 音频状态。<br/>此接口为系统接口,三方应用不支持调用。|
2853

2854
## AudioRendererChangeInfoArray<sup>9+</sup>
2855

2856 2857 2858
AudioRenderChangeInfo数组,只读。

**系统能力:** SystemCapability.Multimedia.Audio.Renderer
2859 2860 2861 2862

**示例:**

```js
2863 2864 2865 2866 2867 2868 2869
import audio from '@ohos.multimedia.audio';

let audioStreamManager;
let resultFlag = false;
let audioManager = audio.getAudioManager();

audioManager.getStreamManager((err, data) => {
2870
  if (err) {
2871 2872 2873 2874
    console.error(`Get AudioStream Manager : ERROR : ${err}`);
  } else {
    audioStreamManager = data;
    console.info('Get AudioStream Manager : Success');
2875 2876 2877
  }
});

2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902
audioStreamManager.on('audioRendererChange',  (AudioRendererChangeInfoArray) => {
  for (let i = 0; i < AudioRendererChangeInfoArray.length; i++) {
    console.info(`## RendererChange on is called for ${i} ##`);
    console.info(`StreamId for ${i} is: ${AudioRendererChangeInfoArray[i].streamId}`);
    console.info(`ClientUid for ${i} is: ${AudioRendererChangeInfoArray[i].clientUid}`);
    console.info(`Content for ${i} is: ${AudioRendererChangeInfoArray[i].rendererInfo.content}`);
    console.info(`Stream for ${i} is: ${AudioRendererChangeInfoArray[i].rendererInfo.usage}`);
    console.info(`Flag ${i} is: ${AudioRendererChangeInfoArray[i].rendererInfo.rendererFlags}`);
    console.info(`State for ${i} is: ${AudioRendererChangeInfoArray[i].rendererState}`);
  	let devDescriptor = AudioRendererChangeInfoArray[i].deviceDescriptors;
  	for (let j = 0; j < AudioRendererChangeInfoArray[i].deviceDescriptors.length; j++) {
  	  console.info(`Id: ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].id}`);
  	  console.info(`Type: ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].deviceType}`);
  	  console.info(`Role: ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].deviceRole}`);
  	  console.info(`Name: ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].name}`);
  	  console.info(`Addr: ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].address}`);
  	  console.info(`SR: ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]}`);
  	  console.info(`C ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]}`);
  	  console.info(`CM: ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].channelMasks}`);
  	}
    if (AudioRendererChangeInfoArray[i].rendererState == 1 && devDescriptor != null) {
      resultFlag = true;
      console.info(`ResultFlag for ${i} is: ${resultFlag}`);
    }
  }
2903 2904 2905
});
```

2906
## AudioCapturerChangeInfo<sup>9+</sup>
2907

2908
描述音频采集器更改信息。
2909

2910
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Capturer
2911

2912 2913 2914 2915 2916 2917
| 名称               | 类型                                       | 可读 | 可写 | 说明                          |
| -------------------| ----------------------------------------- | ---- | ---- | ---------------------------- |
| streamId           | number                                    | 是   | 否   | 音频流唯一id。                |
| clientUid          | number                                    | 是   | 否   | 音频采集器客户端应用程序的Uid。<br/>此接口为系统接口,三方应用不支持调用。 |
| capturerInfo       | [AudioCapturerInfo](#audiocapturerinfo8)   | 是   | 否   | 音频采集器信息。               |
| capturerState      | [AudioState](#audiostate)                 | 是   | 否   | 音频状态。<br/>此接口为系统接口,三方应用不支持调用。|
2918

2919
## AudioCapturerChangeInfoArray<sup>9+</sup>
2920

2921
AudioCapturerChangeInfo数组,只读。
2922

2923
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
2924 2925 2926 2927

**示例:**

```js
2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965
import audio from '@ohos.multimedia.audio';

const audioManager = audio.getAudioManager();
let audioStreamManager;
audioManager.getStreamManager((err, data) => {
  if (err) {
    console.error(`getStreamManager : Error: ${err}`);
  } else {
    console.info('getStreamManager : Success : SUCCESS');
    audioStreamManager = data;
  }
});

let resultFlag = false;
audioStreamManager.on('audioCapturerChange', (AudioCapturerChangeInfoArray) =>  {
  for (let i = 0; i < AudioCapturerChangeInfoArray.length; i++) {
    console.info(`## CapChange on is called for element ${i} ##`);
    console.info(`StrId for  ${i} is: ${AudioCapturerChangeInfoArray[i].streamId}`);
    console.info(`CUid for ${i} is: ${AudioCapturerChangeInfoArray[i].clientUid}`);
    console.info(`Src for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.source}`);
    console.info(`Flag ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.capturerFlags}`);
    console.info(`State for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerState}`);
    let devDescriptor = AudioCapturerChangeInfoArray[i].deviceDescriptors;
    for (let j = 0; j < AudioCapturerChangeInfoArray[i].deviceDescriptors.length; j++) {
      console.info(`Id: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].id}`);
      console.info(`Type: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].deviceType}`);
      console.info(`Role: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].deviceRole}`);
      console.info(`Name: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].name}`);
      console.info(`Addr: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].address}`);
      console.info(`SR: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]}`);
      console.info(`C ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]}`);
      console.info(`CM ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks}`);
    }
    if (AudioCapturerChangeInfoArray[i].capturerState == 1 && devDescriptor != null) {
      resultFlag = true;
      console.info(`ResultFlag for element ${i} is: ${resultFlag}`);
    }
  }
2966 2967 2968
});
```

2969
## AudioDeviceDescriptor
2970

2971
描述音频设备。
2972

2973
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Device
2974

2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987
| 名称                          | 类型                       | 可读 | 可写 | 说明       |
| ----------------------------- | -------------------------- | ---- | ---- | ---------- |
| deviceRole                    | [DeviceRole](#devicerole)  | 是   | 否   | 设备角色。 |
| deviceType                    | [DeviceType](#devicetype)  | 是   | 否   | 设备类型。 |
| id<sup>9+</sup>               | number                     | 是   | 否   | 设备id。  |
| name<sup>9+</sup>             | string                     | 是   | 否   | 设备名称。 |
| address<sup>9+</sup>          | string                     | 是   | 否   | 设备地址。 |
| sampleRates<sup>9+</sup>      | Array&lt;number&gt;        | 是   | 否   | 支持的采样率。 |
| channelCounts<sup>9+</sup>    | Array&lt;number&gt;        | 是   | 否   | 支持的通道数。 |
| channelMasks<sup>9+</sup>     | Array&lt;number&gt;        | 是   | 否   | 支持的通道掩码。 |
| networkId<sup>9+</sup>        | string                     | 是   | 否   | 设备组网的ID。<br/>此接口为系统接口,三方应用不支持调用。 |
| interruptGroupId<sup>9+</sup> | number                     | 是   | 否   | 设备所处的焦点组ID。<br/>此接口为系统接口,三方应用不支持调用。 |
| volumeGroupId<sup>9+</sup>    | number                     | 是   | 否   | 设备所处的音量组ID。<br/>此接口为系统接口,三方应用不支持调用。 |
2988

2989
## AudioDeviceDescriptors
2990

2991
设备属性数组类型,为[AudioDeviceDescriptor](#audiodevicedescriptor)的数组,只读。
2992 2993 2994 2995

**示例:**

```js
2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012
import audio from '@ohos.multimedia.audio';

function displayDeviceProp(value) {
  deviceRoleValue = value.deviceRole;
  deviceTypeValue = value.deviceType;
}

let deviceRoleValue = null;
let deviceTypeValue = null;
const promise = audio.getAudioManager().getDevices(1);
promise.then(function (value) {
  console.info('AudioFrameworkTest: Promise: getDevices OUTPUT_DEVICES_FLAG');
  value.forEach(displayDeviceProp);
  if (deviceTypeValue != null && deviceRoleValue != null){
    console.info('AudioFrameworkTest: Promise: getDevices : OUTPUT_DEVICES_FLAG :  PASS');
  } else {
    console.error('AudioFrameworkTest: Promise: getDevices : OUTPUT_DEVICES_FLAG :  FAIL');
3013 3014 3015 3016
  }
});
```

3017
## AudioRendererFilter<sup>9+</sup>
3018

3019
过滤条件类。在调用selectOutputDeviceByFilter接口前,需要先创建AudioRendererFilter实例。
3020

3021
**系统接口:** 该接口为系统接口
3022

3023 3024 3025 3026 3027
| 名称          | 类型                                     | 必填  | 说明          |
| -------------| ---------------------------------------- | ---- | -------------- |
| uid          | number                                   |  是  | 表示应用ID。<br> **系统能力:** SystemCapability.Multimedia.Audio.Core|
| rendererInfo | [AudioRendererInfo](#audiorendererinfo8) |  否  | 表示渲染器信息。<br> **系统能力:** SystemCapability.Multimedia.Audio.Renderer|
| rendererId   | number                                   |  否  | 音频流唯一id。<br> **系统能力:** SystemCapability.Multimedia.Audio.Renderer|
3028 3029 3030 3031

**示例:**

```js
3032 3033 3034 3035 3036 3037 3038
let outputAudioRendererFilter = {
  "uid":20010041,
  "rendererInfo": {
    "contentType":audio.ContentType.CONTENT_TYPE_MUSIC,
    "streamUsage":audio.StreamUsage.STREAM_USAGE_MEDIA,
    "rendererFlags":0 },
  "rendererId":0 };
3039 3040
```

3041
## AudioRenderer<sup>8+</sup>
3042

3043
提供音频渲染的相关接口。在调用AudioRenderer的接口前,需要先通过[createAudioRenderer](#audiocreateaudiorenderer8)创建实例。
3044

3045
### 属性
3046

3047
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3048

3049 3050 3051
| 名称  | 类型                     | 可读 | 可写 | 说明               |
| ----- | -------------------------- | ---- | ---- | ------------------ |
| state<sup>8+</sup> | [AudioState](#audiostate8) | 是   | 否   | 音频渲染器的状态。 |
3052 3053 3054 3055

**示例:**

```js
3056
let state = audioRenderer.state;
3057 3058
```

3059
### getRendererInfo<sup>8+</sup>
3060

3061
getRendererInfo(callback: AsyncCallback<AudioRendererInfo\>): void
3062

3063
获取当前被创建的音频渲染器的信息,使用callback方式异步返回结果。
3064

3065
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3066

3067
**参数:**
3068

3069 3070 3071
| 参数名   | 类型                                                     | 必填 | 说明                   |
| :------- | :------------------------------------------------------- | :--- | :--------------------- |
| callback | AsyncCallback<[AudioRendererInfo](#audiorendererinfo8)\> | 是   | 返回音频渲染器的信息。 |
3072 3073 3074 3075

**示例:**

```js
3076 3077 3078 3079 3080
audioRenderer.getRendererInfo((err, rendererInfo) => {
  console.info('Renderer GetRendererInfo:');
  console.info(`Renderer content: ${rendererInfo.content}`);
  console.info(`Renderer usage: ${rendererInfo.usage}`);
  console.info(`Renderer flags: ${rendererInfo.rendererFlags}`);
3081 3082 3083
});
```

3084
### getRendererInfo<sup>8+</sup>
3085

3086
getRendererInfo(): Promise<AudioRendererInfo\>
3087

3088
获取当前被创建的音频渲染器的信息,使用Promise方式异步返回结果。
3089

3090
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3091

3092 3093 3094 3095 3096
**返回值:**

| 类型                                               | 说明                            |
| -------------------------------------------------- | ------------------------------- |
| Promise<[AudioRendererInfo](#audiorendererinfo8)\> | Promise用于返回音频渲染器信息。 |
3097 3098 3099 3100

**示例:**

```js
3101 3102 3103 3104 3105 3106 3107
audioRenderer.getRendererInfo().then((rendererInfo) => {
  console.info('Renderer GetRendererInfo:');
  console.info(`Renderer content: ${rendererInfo.content}`);
  console.info(`Renderer usage: ${rendererInfo.usage}`);
  console.info(`Renderer flags: ${rendererInfo.rendererFlags}`)
}).catch((err) => {
  console.error(`AudioFrameworkRenderLog: RendererInfo :ERROR: ${err}`);
3108 3109 3110
});
```

3111
### getStreamInfo<sup>8+</sup>
3112

3113
getStreamInfo(callback: AsyncCallback<AudioStreamInfo\>): void
3114

3115
获取音频流信息,使用callback方式异步返回结果。
3116

3117
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3118

3119
**参数:**
3120

3121 3122 3123
| 参数名   | 类型                                                 | 必填 | 说明                 |
| :------- | :--------------------------------------------------- | :--- | :------------------- |
| callback | AsyncCallback<[AudioStreamInfo](#audiostreaminfo8)\> | 是   | 回调返回音频流信息。 |
3124

3125
**示例:**
J
jiao_yanlin 已提交
3126 3127

```js
3128 3129 3130 3131 3132 3133
audioRenderer.getStreamInfo((err, streamInfo) => {
  console.info('Renderer GetStreamInfo:');
  console.info(`Renderer sampling rate: ${streamInfo.samplingRate}`);
  console.info(`Renderer channel: ${streamInfo.channels}`);
  console.info(`Renderer format: ${streamInfo.sampleFormat}`);
  console.info(`Renderer encoding type: ${streamInfo.encodingType}`);
3134 3135 3136
});
```

3137
### getStreamInfo<sup>8+</sup>
3138

3139
getStreamInfo(): Promise<AudioStreamInfo\>
3140

3141
获取音频流信息,使用Promise方式异步返回结果。
3142

3143
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3144

3145
**返回值:**
3146

3147 3148 3149
| 类型                                           | 说明                   |
| :--------------------------------------------- | :--------------------- |
| Promise<[AudioStreamInfo](#audiostreaminfo8)\> | Promise返回音频流信息. |
3150

3151
**示例:**
J
jiao_yanlin 已提交
3152 3153

```js
3154 3155 3156 3157 3158 3159 3160 3161 3162
audioRenderer.getStreamInfo().then((streamInfo) => {
  console.info('Renderer GetStreamInfo:');
  console.info(`Renderer sampling rate: ${streamInfo.samplingRate}`);
  console.info(`Renderer channel: ${streamInfo.channels}`);
  console.info(`Renderer format: ${streamInfo.sampleFormat}`);
  console.info(`Renderer encoding type: ${streamInfo.encodingType}`);
}).catch((err) => {
  console.error(`ERROR: ${err}`);
});
3163 3164
```

3165
### getAudioStreamId<sup>9+</sup>
3166

3167
getAudioStreamId(callback: AsyncCallback<number\>): void
3168

3169
获取音频流id,使用callback方式异步返回结果。
3170

3171
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3172

3173
**参数:**
3174

3175 3176 3177
| 参数名   | 类型                                                 | 必填 | 说明                 |
| :------- | :--------------------------------------------------- | :--- | :------------------- |
| callback | AsyncCallback<number\> | 是   | 回调返回音频流id。 |
3178

3179
**示例:**
J
jiao_yanlin 已提交
3180 3181

```js
3182 3183
audioRenderer.getAudioStreamId((err, streamid) => {
  console.info(`Renderer GetStreamId: ${streamid}`);
3184 3185 3186
});
```

3187
### getAudioStreamId<sup>9+</sup>
3188

3189
getAudioStreamId(): Promise<number\>
3190

3191
获取音频流id,使用Promise方式异步返回结果。
3192

3193
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3194

3195
**返回值:**
3196

3197 3198 3199
| 类型                                           | 说明                   |
| :--------------------------------------------- | :--------------------- |
| Promise<number\> | Promise返回音频流id。 |
3200

3201
**示例:**
J
jiao_yanlin 已提交
3202 3203

```js
3204 3205 3206 3207 3208
audioRenderer.getAudioStreamId().then((streamid) => {
  console.info(`Renderer getAudioStreamId: ${streamid}`);
}).catch((err) => {
  console.error(`ERROR: ${err}`);
});
3209 3210
```

3211
### start<sup>8+</sup>
3212

3213
start(callback: AsyncCallback<void\>): void
3214

3215
启动音频渲染器。使用callback方式异步返回结果。
3216

3217
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3218

3219
**参数:**
3220

3221 3222 3223
| 参数名   | 类型                 | 必填 | 说明       |
| -------- | -------------------- | ---- | ---------- |
| callback | AsyncCallback\<void> | 是   | 回调函数。 |
3224

3225
**示例:**
J
jiao_yanlin 已提交
3226 3227

```js
3228 3229 3230 3231 3232
audioRenderer.start((err) => {
  if (err) {
    console.error('Renderer start failed.');
  } else {
    console.info('Renderer start success.');
J
jiao_yanlin 已提交
3233
  }
3234 3235 3236
});
```

3237
### start<sup>8+</sup>
3238

3239
start(): Promise<void\>
3240

3241
启动音频渲染器。使用Promise方式异步返回结果。
3242

3243
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3244

3245
**返回值:**
3246

3247 3248 3249
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
3250

3251
**示例:**
J
jiao_yanlin 已提交
3252 3253

```js
3254 3255 3256 3257 3258
audioRenderer.start().then(() => {
  console.info('Renderer started');
}).catch((err) => {
  console.error(`ERROR: ${err}`);
});
3259 3260
```

3261
### pause<sup>8+</sup>
3262

3263
pause(callback: AsyncCallback\<void>): void
3264

3265
暂停渲染。使用callback方式异步返回结果。
3266

3267
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3268

3269
**参数:**
3270

3271 3272 3273
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
3274

3275
**示例:**
J
jiao_yanlin 已提交
3276 3277

```js
3278 3279 3280 3281 3282
audioRenderer.pause((err) => {
  if (err) {
    console.error('Renderer pause failed');
  } else {
    console.info('Renderer paused.');
J
jiao_yanlin 已提交
3283
  }
3284 3285 3286
});
```

3287
### pause<sup>8+</sup>
3288

3289
pause(): Promise\<void>
3290

3291
暂停渲染。使用Promise方式异步返回结果。
3292

3293
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3294

3295
**返回值:**
3296

3297 3298 3299
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
3300 3301 3302 3303

**示例:**

```js
3304 3305 3306 3307 3308
audioRenderer.pause().then(() => {
  console.info('Renderer paused');
}).catch((err) => {
  console.error(`ERROR: ${err}`);
});
3309 3310
```

3311
### drain<sup>8+</sup>
3312

3313
drain(callback: AsyncCallback\<void>): void
3314

3315
检查缓冲区是否已被耗尽。使用callback方式异步返回结果。
3316

3317
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3318 3319 3320

**参数:**

3321 3322 3323
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
3324 3325 3326 3327

**示例:**

```js
3328
audioRenderer.drain((err) => {
3329
  if (err) {
3330 3331 3332
    console.error('Renderer drain failed');
  } else {
    console.info('Renderer drained.');
3333 3334 3335 3336
  }
});
```

3337
### drain<sup>8+</sup>
3338

3339
drain(): Promise\<void>
3340

3341
检查缓冲区是否已被耗尽。使用Promise方式异步返回结果。
3342

3343
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3344 3345 3346

**返回值:**

3347 3348 3349
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
3350 3351 3352 3353

**示例:**

```js
3354 3355 3356 3357
audioRenderer.drain().then(() => {
  console.info('Renderer drained successfully');
}).catch((err) => {
  console.error(`ERROR: ${err}`);
3358 3359 3360
});
```

3361
### stop<sup>8+</sup>
3362

3363
stop(callback: AsyncCallback\<void>): void
3364

3365
停止渲染。使用callback方式异步返回结果。
3366

3367
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3368 3369 3370

**参数:**

3371 3372 3373
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
3374 3375 3376 3377

**示例:**

```js
3378
audioRenderer.stop((err) => {
3379
  if (err) {
3380
    console.error('Renderer stop failed');
J
jiao_yanlin 已提交
3381
  } else {
3382
    console.info('Renderer stopped.');
3383
  }
3384
});
3385 3386
```

3387
### stop<sup>8+</sup>
3388

3389
stop(): Promise\<void>
3390

3391
停止渲染。使用Promise方式异步返回结果。
3392

3393
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3394 3395 3396

**返回值:**

3397 3398 3399
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
3400 3401 3402 3403

**示例:**

```js
3404 3405 3406 3407
audioRenderer.stop().then(() => {
  console.info('Renderer stopped successfully');
}).catch((err) => {
  console.error(`ERROR: ${err}`);
3408 3409 3410
});
```

3411
### release<sup>8+</sup>
3412

3413
release(callback: AsyncCallback\<void>): void
3414

3415
释放音频渲染器。使用callback方式异步返回结果。
3416

3417
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3418 3419 3420

**参数:**

3421 3422 3423
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
3424

3425 3426 3427
**示例:**

```js
3428
audioRenderer.release((err) => {
3429
  if (err) {
3430 3431 3432
    console.error('Renderer release failed');
  } else {
    console.info('Renderer released.');
3433 3434 3435 3436
  }
});
```

3437
### release<sup>8+</sup>
3438

3439
release(): Promise\<void>
3440

3441
释放渲染器。使用Promise方式异步返回结果。
3442

3443
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3444

3445
**返回值:**
3446

3447 3448 3449
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
3450

3451 3452 3453
**示例:**

```js
3454 3455 3456 3457
audioRenderer.release().then(() => {
  console.info('Renderer released successfully');
}).catch((err) => {
  console.error(`ERROR: ${err}`);
3458 3459 3460
});
```

3461
### write<sup>8+</sup>
3462

3463
write(buffer: ArrayBuffer, callback: AsyncCallback\<number>): void
3464

3465
写入缓冲区。使用callback方式异步返回结果。
3466

3467
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3468 3469 3470

**参数:**

3471 3472 3473 3474
| 参数名   | 类型                   | 必填 | 说明                                                |
| -------- | ---------------------- | ---- | --------------------------------------------------- |
| buffer   | ArrayBuffer            | 是   | 要写入缓冲区的数据。                                |
| callback | AsyncCallback\<number> | 是   | 回调如果成功,返回写入的字节数,否则返回errorcode。 |
3475 3476 3477

**示例:**

3478 3479 3480 3481 3482 3483 3484
```js
let bufferSize;
audioRenderer.getBufferSize().then((data)=> {
  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
  bufferSize = data;
  }).catch((err) => {
  console.error(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
3485
  });
3486 3487 3488 3489 3490
console.info(`Buffer size: ${bufferSize}`);
let context = featureAbility.getContext();
let path;
async function getCacheDir(){
  path = await context.getCacheDir();
3491
}
3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502
let filePath = path + '/StarWars10s-2C-48000-4SW.wav';
let ss = fileio.createStreamSync(filePath, 'r');
let buf = new ArrayBuffer(bufferSize);
ss.readSync(buf);
audioRenderer.write(buf, (err, writtenbytes) => {
  if (writtenbytes < 0) {
    console.error('write failed.');
  } else {
    console.info(`Actual written bytes: ${writtenbytes}`);
  }
});
3503 3504
```

3505
### write<sup>8+</sup>
3506

3507
write(buffer: ArrayBuffer): Promise\<number>
3508

3509
写入缓冲区。使用Promise方式异步返回结果。
3510

3511
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3512 3513 3514

**返回值:**

3515 3516 3517
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
| Promise\<number> | Promise返回结果,如果成功,返回写入的字节数,否则返回errorcode。 |
3518 3519 3520 3521

**示例:**

```js
3522 3523 3524 3525 3526 3527
let bufferSize;
audioRenderer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
  bufferSize = data;
  }).catch((err) => {
  console.info(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
3528
  });
3529 3530 3531 3532 3533
console.info(`BufferSize: ${bufferSize}`);
let context = featureAbility.getContext();
let path;
async function getCacheDir(){
  path = await context.getCacheDir();
3534
}
3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547
let filePath = path + '/StarWars10s-2C-48000-4SW.wav';
let ss = fileio.createStreamSync(filePath, 'r');
let buf = new ArrayBuffer(bufferSize);
ss.readSync(buf);
audioRenderer.write(buf).then((writtenbytes) => {
  if (writtenbytes < 0) {
      console.error('write failed.');
  } else {
      console.info(`Actual written bytes: ${writtenbytes}`);
  }
}).catch((err) => {
    console.error(`ERROR: ${err}`);
});
3548 3549
```

3550
### getAudioTime<sup>8+</sup>
3551

3552
getAudioTime(callback: AsyncCallback\<number>): void
3553

3554
获取时间戳(从 1970 年 1 月 1 日开始)。使用callback方式异步返回结果。
3555

3556
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3557 3558 3559

**参数:**

3560 3561 3562
| 参数名   | 类型                   | 必填 | 说明             |
| -------- | ---------------------- | ---- | ---------------- |
| callback | AsyncCallback\<number> | 是   | 回调返回时间戳。 |
3563 3564 3565 3566

**示例:**

```js
3567 3568
audioRenderer.getAudioTime((err, timestamp) => {
  console.info(`Current timestamp: ${timestamp}`);
3569 3570 3571
});
```

3572
### getAudioTime<sup>8+</sup>
3573

3574
getAudioTime(): Promise\<number>
3575

3576
获取时间戳(从 1970 年 1 月 1 日开始)。使用Promise方式异步返回结果。
3577

3578
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3579 3580 3581

**返回值:**

3582 3583 3584
| 类型             | 描述                    |
| ---------------- | ----------------------- |
| Promise\<number> | Promise回调返回时间戳。 |
3585 3586 3587 3588

**示例:**

```js
3589 3590 3591 3592
audioRenderer.getAudioTime().then((timestamp) => {
  console.info(`Current timestamp: ${timestamp}`);
}).catch((err) => {
  console.error(`ERROR: ${err}`);
3593 3594 3595
});
```

3596
### getBufferSize<sup>8+</sup>
3597

3598
getBufferSize(callback: AsyncCallback\<number>): void
3599

3600
获取音频渲染器的最小缓冲区大小。使用callback方式异步返回结果。
3601

3602
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3603 3604 3605

**参数:**

3606 3607 3608
| 参数名   | 类型                   | 必填 | 说明                 |
| -------- | ---------------------- | ---- | -------------------- |
| callback | AsyncCallback\<number> | 是   | 回调返回缓冲区大小。 |
3609 3610 3611 3612

**示例:**

```js
3613
let bufferSize = audioRenderer.getBufferSize(async(err, bufferSize) => {
3614
  if (err) {
3615
    console.error('getBufferSize error');
3616 3617 3618 3619
  }
});
```

3620
### getBufferSize<sup>8+</sup>
3621

3622
getBufferSize(): Promise\<number>
3623

3624
获取音频渲染器的最小缓冲区大小。使用Promise方式异步返回结果。
3625

3626
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3627 3628 3629

**返回值:**

3630 3631 3632
| 类型             | 说明                        |
| ---------------- | --------------------------- |
| Promise\<number> | promise回调返回缓冲区大小。 |
3633 3634 3635 3636

**示例:**

```js
3637 3638 3639 3640 3641 3642
let bufferSize;
audioRenderer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
  bufferSize = data;
}).catch((err) => {
  console.error(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
3643 3644 3645
});
```

3646
### setRenderRate<sup>8+</sup>
3647

3648
setRenderRate(rate: AudioRendererRate, callback: AsyncCallback\<void>): void
3649

3650
设置音频渲染速率。使用callback方式异步返回结果。
3651

3652
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3653 3654 3655

**参数:**

3656 3657 3658 3659
| 参数名   | 类型                                     | 必填 | 说明                     |
| -------- | ---------------------------------------- | ---- | ------------------------ |
| rate     | [AudioRendererRate](#audiorendererrate8) | 是   | 渲染的速率。             |
| callback | AsyncCallback\<void>                     | 是   | 用于返回执行结果的回调。 |
J
jiao_yanlin 已提交
3660

3661
**示例:**
3662

3663 3664 3665 3666 3667 3668 3669 3670 3671
```js
audioRenderer.setRenderRate(audio.AudioRendererRate.RENDER_RATE_NORMAL, (err) => {
  if (err) {
    console.error('Failed to set params');
  } else {
    console.info('Callback invoked to indicate a successful render rate setting.');
  }
});
```
3672

3673
### setRenderRate<sup>8+</sup>
3674

3675
setRenderRate(rate: AudioRendererRate): Promise\<void>
3676

3677
设置音频渲染速率。使用Promise方式异步返回结果。
3678

3679
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3680 3681 3682

**参数:**

3683 3684 3685
| 参数名 | 类型                                     | 必填 | 说明         |
| ------ | ---------------------------------------- | ---- | ------------ |
| rate   | [AudioRendererRate](#audiorendererrate8) | 是   | 渲染的速率。 |
3686 3687 3688

**返回值:**

3689 3690 3691
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise用于返回执行结果。 |
3692 3693 3694 3695

**示例:**

```js
3696 3697 3698 3699 3700
audioRenderer.setRenderRate(audio.AudioRendererRate.RENDER_RATE_NORMAL).then(() => {
  console.info('setRenderRate SUCCESS');
}).catch((err) => {
  console.error(`ERROR: ${err}`);
});
3701 3702
```

3703
### getRenderRate<sup>8+</sup>
3704

3705
getRenderRate(callback: AsyncCallback\<AudioRendererRate>): void
3706

3707
获取当前渲染速率。使用callback方式异步返回结果。
3708

3709
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3710 3711 3712

**参数:**

3713 3714 3715
| 参数名   | 类型                                                    | 必填 | 说明               |
| -------- | ------------------------------------------------------- | ---- | ------------------ |
| callback | AsyncCallback<[AudioRendererRate](#audiorendererrate8)> | 是   | 回调返回渲染速率。 |
3716 3717

**示例:**
J
jiao_yanlin 已提交
3718

3719 3720 3721 3722
```js
audioRenderer.getRenderRate((err, renderrate) => {
  console.info(`getRenderRate: ${renderrate}`);
});
3723 3724
```

3725
### getRenderRate<sup>8+</sup>
3726

3727
getRenderRate(): Promise\<AudioRendererRate>
3728

3729
获取当前渲染速率。使用Promise方式异步返回结果。
3730

3731
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3732 3733 3734

**返回值:**

3735 3736 3737
| 类型                                              | 说明                      |
| ------------------------------------------------- | ------------------------- |
| Promise<[AudioRendererRate](#audiorendererrate8)> | Promise回调返回渲染速率。 |
3738 3739 3740 3741

**示例:**

```js
3742 3743 3744 3745 3746
audioRenderer.getRenderRate().then((renderRate) => {
  console.info(`getRenderRate: ${renderRate}`);
}).catch((err) => {
  console.error(`ERROR: ${err}`);
});
3747
```
3748
### setInterruptMode<sup>9+</sup>
3749

3750
setInterruptMode(mode: InterruptMode): Promise&lt;void&gt;
3751

3752
设置应用的焦点模型。使用Promise异步回调。
3753

3754
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
3755

3756
**参数:**
3757

3758 3759 3760
| 参数名     | 类型                                | 必填   | 说明        |
| ---------- | ---------------------------------- | ------ | ---------- |
| mode       | [InterruptMode](#interruptmode9)    | 是     | 焦点模型。  |
3761

3762
**返回值:**
3763

3764 3765 3766
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | 以Promise对象返回结果,设置成功时返回undefined,否则返回error。 |
3767

3768 3769
**示例:**

J
jiao_yanlin 已提交
3770
```js
3771 3772 3773 3774 3775 3776 3777 3778
let mode = 0;
audioRenderer.setInterruptMode(mode).then(data=>{
  console.info('setInterruptMode Success!');
}).catch((err) => {
  console.error(`setInterruptMode Fail: ${err}`);
});
```
### setInterruptMode<sup>9+</sup>
3779

3780
setInterruptMode(mode: InterruptMode, callback: AsyncCallback\<void>): void
3781

3782
设置应用的焦点模型。使用Callback回调返回执行结果。
3783

3784
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799

**参数:**

| 参数名   | 类型                                | 必填   | 说明            |
| ------- | ----------------------------------- | ------ | -------------- |
|mode     | [InterruptMode](#interruptmode9)     | 是     | 焦点模型。|
|callback | AsyncCallback\<void>                 | 是     |回调返回执行结果。|

**示例:**

```js
let mode = 1;
audioRenderer.setInterruptMode(mode, (err, data)=>{
  if(err){
    console.error(`setInterruptMode Fail: ${err}`);
J
jiao_yanlin 已提交
3800
  }
3801
  console.info('setInterruptMode Success!');
3802 3803 3804
});
```

3805 3806 3807
### setVolume<sup>9+</sup>

setVolume(volume: number): Promise&lt;void&gt;
3808

3809
设置应用的音量。使用Promise异步回调。
3810

3811
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3812

3813
**参数:**
3814

3815 3816 3817
| 参数名     | 类型     | 必填   | 说明        |
| ---------- | ------- | ------ | ---------- |
| volume     | number  | 是     | 音量值。  |
3818

3819
**返回值:**
3820

3821 3822 3823
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | 以Promise对象返回结果,设置成功时返回undefined,否则返回error。 |
3824

3825 3826
**示例:**

J
jiao_yanlin 已提交
3827
```js
3828 3829 3830 3831
audioRenderer.setVolume(10).then(data=>{
  console.info('setVolume Success!');
}).catch((err) => {
  console.error(`setVolume Fail: ${err}`);
J
jiao_yanlin 已提交
3832
});
3833 3834
```
### setVolume<sup>9+</sup>
J
jiao_yanlin 已提交
3835

3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854
setVolume(volume: number, callback: AsyncCallback\<void>): void

设置应用的音量。使用Callback回调返回执行结果。

**系统能力:** SystemCapability.Multimedia.Audio.Renderer

**参数:**

| 参数名   | 类型       | 必填   | 说明            |
| ------- | -----------| ------ | -------------- |
|volume   | number     | 是     | 音量值。|
|callback | AsyncCallback\<void> | 是     |回调返回执行结果。|

**示例:**

```js
audioRenderer.setVolume(10, (err, data)=>{
  if(err){
    console.error(`setVolume Fail: ${err}`);
J
jiao_yanlin 已提交
3855
  }
3856
  console.info('setVolume Success!');
3857 3858 3859
});
```

3860
### on('audioInterrupt')<sup>9+</sup>
3861

3862
on(type: 'audioInterrupt', callback: Callback\<InterruptEvent>): void
3863

3864
监听音频中断事件。使用callback获取中断事件。
Z
zengyawen 已提交
3865

3866
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
Z
zengyawen 已提交
3867

3868
**参数:**
M
mamingshuai 已提交
3869

3870 3871 3872 3873
| 参数名   | 类型                                         | 必填 | 说明                                                         |
| -------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                                       | 是   | 事件回调类型,支持的事件为:'audioInterrupt'(中断事件被触发,音频播放被中断。) |
| callback | Callback<[InterruptEvent](#interruptevent9)> | 是   | 被监听的中断事件的回调。                                     |
Z
zengyawen 已提交
3874

3875
**错误码:**
Z
zengyawen 已提交
3876

3877
以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)
L
lwx1059628 已提交
3878

3879 3880 3881
| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error.             |
Z
zengyawen 已提交
3882

3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928
**示例:**

```js
let isPlay;
let started;
audioRenderer.on('audioInterrupt', async(interruptEvent) => {
  if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_FORCE) {
    switch (interruptEvent.hintType) {
      case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
        console.info('Force paused. Stop writing');
        isPlay = false;
        break;
      case audio.InterruptHint.INTERRUPT_HINT_STOP:
        console.info('Force stopped. Stop writing');
        isPlay = false;
        break;
    }
  } else if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_SHARE) {
    switch (interruptEvent.hintType) {
      case audio.InterruptHint.INTERRUPT_HINT_RESUME:
        console.info('Resume force paused renderer or ignore');
        await audioRenderer.start().then(async function () {
          console.info('AudioInterruptMusic: renderInstant started :SUCCESS ');
          started = true;
        }).catch((err) => {
          console.error(`AudioInterruptMusic: renderInstant start :ERROR : ${err}`);
          started = false;
        });
        if (started) {
          isPlay = true;
          console.info(`AudioInterruptMusic Renderer started : isPlay : ${isPlay}`);
        } else {
          console.error('AudioInterruptMusic Renderer start failed');
        }
        break;
      case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
        console.info('Choose to pause or ignore');
        if (isPlay == true) {
          isPlay == false;
          console.info('AudioInterruptMusic: Media PAUSE : TRUE');
        } else {
          isPlay = true;
          console.info('AudioInterruptMusic: Media PLAY : TRUE');
        }
        break;
    }
J
jiao_yanlin 已提交
3929
  }
L
lwx1059628 已提交
3930
});
Z
zengyawen 已提交
3931 3932
```

3933
### on('markReach')<sup>8+</sup>
3934

3935
on(type: "markReach", frame: number, callback: Callback&lt;number&gt;): void
3936

3937
订阅到达标记的事件。 当渲染的帧数达到 frame 参数的值时,回调被调用。
3938

3939 3940 3941 3942 3943 3944 3945 3946 3947
**系统能力:** SystemCapability.Multimedia.Audio.Renderer

**参数:**

| 参数名   | 类型                     | 必填 | 说明                                      |
| :------- | :----------------------- | :--- | :---------------------------------------- |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'markReach'。 |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于 0。         |
| callback | Callback\<number>         | 是   | 触发事件时调用的回调。                    |
3948 3949 3950 3951

**示例:**

```js
3952 3953 3954 3955 3956
audioRenderer.on('markReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
  }
});
3957 3958
```

Z
zengyawen 已提交
3959

3960
### off('markReach') <sup>8+</sup>
L
lwx1059628 已提交
3961

3962 3963 3964
off(type: 'markReach'): void

取消订阅标记事件。
Z
zengyawen 已提交
3965

3966
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
3967

3968 3969 3970 3971 3972
**参数:**

| 参数名 | 类型   | 必填 | 说明                                              |
| :----- | :----- | :--- | :------------------------------------------------ |
| type   | string | 是   | 要取消订阅事件的类型。支持的事件为:'markReach'。 |
Z
zengyawen 已提交
3973 3974 3975

**示例:**

J
jiao_yanlin 已提交
3976
```js
3977
audioRenderer.off('markReach');
Z
zengyawen 已提交
3978 3979
```

3980
### on('periodReach') <sup>8+</sup>
Z
zengyawen 已提交
3981

3982
on(type: "periodReach", frame: number, callback: Callback&lt;number&gt;): void
Z
zengyawen 已提交
3983

3984
订阅到达标记的事件。 当渲染的帧数达到 frame 参数的值时,回调被循环调用。
Z
zengyawen 已提交
3985

3986
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
3987 3988 3989

**参数:**

3990 3991 3992 3993 3994
| 参数名   | 类型                     | 必填 | 说明                                        |
| :------- | :----------------------- | :--- | :------------------------------------------ |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'periodReach'。 |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于 0。           |
| callback | Callback\<number>         | 是   | 触发事件时调用的回调。                      |
Z
zengyawen 已提交
3995 3996 3997

**示例:**

J
jiao_yanlin 已提交
3998
```js
3999 4000 4001 4002
audioRenderer.on('periodReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
  }
L
lwx1059628 已提交
4003
});
Z
zengyawen 已提交
4004 4005
```

4006
### off('periodReach') <sup>8+</sup>
Z
zengyawen 已提交
4007

4008
off(type: 'periodReach'): void
Z
zengyawen 已提交
4009

4010
取消订阅标记事件。
Z
zengyawen 已提交
4011

4012
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4013

4014
**参数:**
Z
zengyawen 已提交
4015

4016 4017 4018
| 参数名 | 类型   | 必填 | 说明                                                |
| :----- | :----- | :--- | :-------------------------------------------------- |
| type   | string | 是   | 要取消订阅事件的类型。支持的事件为:'periodReach'。 |
Z
zengyawen 已提交
4019 4020 4021

**示例:**

J
jiao_yanlin 已提交
4022
```js
4023
audioRenderer.off('periodReach')
Z
zengyawen 已提交
4024 4025
```

4026
### on('stateChange') <sup>8+</sup>
Z
zengyawen 已提交
4027

4028
on(type: 'stateChange', callback: Callback<AudioState\>): void
Z
zengyawen 已提交
4029

4030
订阅监听状态变化。
Z
zengyawen 已提交
4031

4032
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4033 4034 4035

**参数:**

4036 4037 4038 4039
| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'stateChange'。 |
| callback | [AudioState](#audiostate8) | 是   | 返回监听的状态。                            |
Z
zengyawen 已提交
4040 4041 4042

**示例:**

J
jiao_yanlin 已提交
4043
```js
4044 4045 4046 4047 4048 4049 4050
audioRenderer.on('stateChange', (state) => {
  if (state == 1) {
    console.info('audio renderer state is: STATE_PREPARED');
  }
  if (state == 2) {
    console.info('audio renderer state is: STATE_RUNNING');
  }
L
lwx1059628 已提交
4051
});
Z
zengyawen 已提交
4052 4053
```

4054
## AudioCapturer<sup>8+</sup>
Z
zengyawen 已提交
4055

4056
提供音频采集的相关接口。在调用AudioCapturer的接口前,需要先通过[createAudioCapturer](#audiocreateaudiocapturer8)创建实例。
Z
zengyawen 已提交
4057

4058
### 属性
Z
zengyawen 已提交
4059

4060
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4061

4062 4063 4064
| 名称  | 类型                     | 可读 | 可写 | 说明             |
| :---- | :------------------------- | :--- | :--- | :--------------- |
| state<sup>8+</sup>  | [AudioState](#audiostate8) | 是 | 否   | 音频采集器状态。 |
Z
zengyawen 已提交
4065 4066 4067

**示例:**

J
jiao_yanlin 已提交
4068
```js
4069
let state = audioCapturer.state;
Z
zengyawen 已提交
4070 4071
```

4072
### getCapturerInfo<sup>8+</sup>
4073

4074
getCapturerInfo(callback: AsyncCallback<AudioCapturerInfo\>): void
4075

4076
获取采集器信息。使用callback方式异步返回结果。
4077

4078
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
4079 4080 4081

**参数:**

4082 4083 4084
| 参数名   | 类型                              | 必填 | 说明                                 |
| :------- | :-------------------------------- | :--- | :----------------------------------- |
| callback | AsyncCallback<AudioCapturerInfo\> | 是   | 使用callback方式异步返回采集器信息。 |
4085 4086 4087 4088

**示例:**

```js
4089 4090 4091 4092 4093 4094 4095 4096
audioCapturer.getCapturerInfo((err, capturerInfo) => {
  if (err) {
    console.error('Failed to get capture info');
  } else {
    console.info('Capturer getCapturerInfo:');
    console.info(`Capturer source: ${capturerInfo.source}`);
    console.info(`Capturer flags: ${capturerInfo.capturerFlags}`);
  }
4097 4098 4099 4100
});
```


4101
### getCapturerInfo<sup>8+</sup>
4102

4103
getCapturerInfo(): Promise<AudioCapturerInfo\>
4104

4105 4106 4107
获取采集器信息。使用Promise方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Capturer
4108 4109 4110

**返回值:**

4111 4112 4113
| 类型                                              | 说明                                |
| :------------------------------------------------ | :---------------------------------- |
| Promise<[AudioCapturerInfo](#audiocapturerinfo)\> | 使用Promise方式异步返回采集器信息。 |
4114 4115 4116 4117

**示例:**

```js
4118 4119 4120 4121 4122 4123 4124 4125 4126
audioCapturer.getCapturerInfo().then((audioParamsGet) => {
  if (audioParamsGet != undefined) {
    console.info('AudioFrameworkRecLog: Capturer CapturerInfo:');
    console.info(`AudioFrameworkRecLog: Capturer SourceType: ${audioParamsGet.source}`);
    console.info(`AudioFrameworkRecLog: Capturer capturerFlags: ${audioParamsGet.capturerFlags}`);
  } else {
    console.info(`AudioFrameworkRecLog: audioParamsGet is : ${audioParamsGet}`);
    console.info('AudioFrameworkRecLog: audioParams getCapturerInfo are incorrect');
  }
4127
}).catch((err) => {
4128
  console.error(`AudioFrameworkRecLog: CapturerInfo :ERROR: ${err}`);
4129 4130 4131
});
```

4132
### getStreamInfo<sup>8+</sup>
Z
zengyawen 已提交
4133

4134
getStreamInfo(callback: AsyncCallback<AudioStreamInfo\>): void
Z
zengyawen 已提交
4135

4136
获取采集器流信息。使用callback方式异步返回结果。
Z
zengyawen 已提交
4137

4138
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4139 4140 4141

**参数:**

4142 4143 4144
| 参数名   | 类型                                                 | 必填 | 说明                             |
| :------- | :--------------------------------------------------- | :--- | :------------------------------- |
| callback | AsyncCallback<[AudioStreamInfo](#audiostreaminfo8)\> | 是   | 使用callback方式异步返回流信息。 |
Z
zengyawen 已提交
4145 4146 4147

**示例:**

J
jiao_yanlin 已提交
4148
```js
4149
audioCapturer.getStreamInfo((err, streamInfo) => {
J
jiao_yanlin 已提交
4150
  if (err) {
4151
    console.error('Failed to get stream info');
J
jiao_yanlin 已提交
4152
  } else {
4153 4154 4155 4156 4157
    console.info('Capturer GetStreamInfo:');
    console.info(`Capturer sampling rate: ${streamInfo.samplingRate}`);
    console.info(`Capturer channel: ${streamInfo.channels}`);
    console.info(`Capturer format: ${streamInfo.sampleFormat}`);
    console.info(`Capturer encoding type: ${streamInfo.encodingType}`);
J
jiao_yanlin 已提交
4158
  }
L
lwx1059628 已提交
4159
});
Z
zengyawen 已提交
4160 4161
```

4162
### getStreamInfo<sup>8+</sup>
Z
zengyawen 已提交
4163

4164
getStreamInfo(): Promise<AudioStreamInfo\>
Z
zengyawen 已提交
4165

4166
获取采集器流信息。使用Promise方式异步返回结果。
Z
zengyawen 已提交
4167

4168
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4169 4170 4171

**返回值:**

4172 4173 4174
| 类型                                           | 说明                            |
| :--------------------------------------------- | :------------------------------ |
| Promise<[AudioStreamInfo](#audiostreaminfo8)\> | 使用Promise方式异步返回流信息。 |
Z
zengyawen 已提交
4175 4176 4177

**示例:**

J
jiao_yanlin 已提交
4178
```js
4179 4180 4181 4182 4183 4184
audioCapturer.getStreamInfo().then((audioParamsGet) => {
  console.info('getStreamInfo:');
  console.info(`sampleFormat: ${audioParamsGet.sampleFormat}`);
  console.info(`samplingRate: ${audioParamsGet.samplingRate}`);
  console.info(`channels: ${audioParamsGet.channels}`);
  console.info(`encodingType: ${audioParamsGet.encodingType}`);
L
lwx1059628 已提交
4185
}).catch((err) => {
4186
  console.error(`getStreamInfo :ERROR: ${err}`);
L
lwx1059628 已提交
4187
});
Z
zengyawen 已提交
4188 4189
```

4190
### getAudioStreamId<sup>9+</sup>
Z
zengyawen 已提交
4191

4192
getAudioStreamId(callback: AsyncCallback<number\>): void
Z
zengyawen 已提交
4193

4194
获取音频流id,使用callback方式异步返回结果。
Z
zengyawen 已提交
4195

4196
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4197 4198 4199

**参数:**

4200 4201 4202
| 参数名   | 类型                                                 | 必填 | 说明                 |
| :------- | :--------------------------------------------------- | :--- | :------------------- |
| callback | AsyncCallback<number\> | 是   | 回调返回音频流id。 |
Z
zengyawen 已提交
4203 4204 4205

**示例:**

J
jiao_yanlin 已提交
4206
```js
4207 4208
audioCapturer.getAudioStreamId((err, streamid) => {
  console.info(`audioCapturer GetStreamId: ${streamid}`);
L
lwx1059628 已提交
4209
});
Z
zengyawen 已提交
4210 4211
```

4212
### getAudioStreamId<sup>9+</sup>
Z
zengyawen 已提交
4213

4214
getAudioStreamId(): Promise<number\>
Z
zengyawen 已提交
4215

4216
获取音频流id,使用Promise方式异步返回结果。
Z
zengyawen 已提交
4217

4218
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4219 4220 4221

**返回值:**

4222 4223 4224
| 类型             | 说明                   |
| :----------------| :--------------------- |
| Promise<number\> | Promise返回音频流id。 |
Z
zengyawen 已提交
4225 4226 4227

**示例:**

J
jiao_yanlin 已提交
4228
```js
4229 4230
audioCapturer.getAudioStreamId().then((streamid) => {
  console.info(`audioCapturer getAudioStreamId: ${streamid}`);
L
lwx1059628 已提交
4231
}).catch((err) => {
4232
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
4233
});
Z
zengyawen 已提交
4234 4235
```

4236
### start<sup>8+</sup>
Z
zengyawen 已提交
4237

4238
start(callback: AsyncCallback<void\>): void
Z
zengyawen 已提交
4239

4240
启动音频采集器。使用callback方式异步返回结果。
Z
zengyawen 已提交
4241

4242
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4243 4244 4245

**参数:**

4246 4247 4248
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
Z
zengyawen 已提交
4249 4250 4251

**示例:**

J
jiao_yanlin 已提交
4252
```js
4253
audioCapturer.start((err) => {
J
jiao_yanlin 已提交
4254
  if (err) {
4255
    console.error('Capturer start failed.');
J
jiao_yanlin 已提交
4256
  } else {
4257
    console.info('Capturer start success.');
J
jiao_yanlin 已提交
4258
  }
L
lwx1059628 已提交
4259
});
Z
zengyawen 已提交
4260 4261 4262
```


4263
### start<sup>8+</sup>
Z
zengyawen 已提交
4264

4265
start(): Promise<void\>
Z
zengyawen 已提交
4266

4267 4268 4269
启动音频采集器。使用Promise方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4270 4271 4272

**返回值:**

4273 4274 4275
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
Z
zengyawen 已提交
4276 4277 4278

**示例:**

J
jiao_yanlin 已提交
4279
```js
4280 4281 4282 4283 4284 4285 4286 4287
audioCapturer.start().then(() => {
  console.info('AudioFrameworkRecLog: ---------START---------');
  console.info('AudioFrameworkRecLog: Capturer started: SUCCESS');
  console.info(`AudioFrameworkRecLog: AudioCapturer: STATE: ${audioCapturer.state}`);
  console.info('AudioFrameworkRecLog: Capturer started: SUCCESS');
  if ((audioCapturer.state == audio.AudioState.STATE_RUNNING)) {
    console.info('AudioFrameworkRecLog: AudioCapturer is in Running State');
  }
L
lwx1059628 已提交
4288
}).catch((err) => {
4289
  console.info(`AudioFrameworkRecLog: Capturer start :ERROR : ${err}`);
L
lwx1059628 已提交
4290
});
Z
zengyawen 已提交
4291 4292 4293 4294
```

### stop<sup>8+</sup>

4295
stop(callback: AsyncCallback<void\>): void
Z
zengyawen 已提交
4296

4297
停止采集。使用callback方式异步返回结果。
Z
zengyawen 已提交
4298

4299
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4300 4301 4302

**参数:**

4303 4304 4305
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
Z
zengyawen 已提交
4306 4307 4308

**示例:**

J
jiao_yanlin 已提交
4309
```js
4310
audioCapturer.stop((err) => {
J
jiao_yanlin 已提交
4311
  if (err) {
4312
    console.error('Capturer stop failed');
J
jiao_yanlin 已提交
4313
  } else {
4314
    console.info('Capturer stopped.');
J
jiao_yanlin 已提交
4315
  }
L
lwx1059628 已提交
4316
});
Z
zengyawen 已提交
4317 4318
```

4319

Z
zengyawen 已提交
4320 4321
### stop<sup>8+</sup>

4322
stop(): Promise<void\>
Z
zengyawen 已提交
4323

4324
停止采集。使用Promise方式异步返回结果。
Z
zengyawen 已提交
4325

4326
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4327 4328 4329

**返回值:**

4330 4331 4332
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
Z
zengyawen 已提交
4333 4334 4335

**示例:**

J
jiao_yanlin 已提交
4336
```js
4337 4338 4339 4340 4341 4342
audioCapturer.stop().then(() => {
  console.info('AudioFrameworkRecLog: ---------STOP RECORD---------');
  console.info('AudioFrameworkRecLog: Capturer stopped: SUCCESS');
  if ((audioCapturer.state == audio.AudioState.STATE_STOPPED)){
    console.info('AudioFrameworkRecLog: State is Stopped:');
  }
L
lwx1059628 已提交
4343
}).catch((err) => {
4344
  console.info(`AudioFrameworkRecLog: Capturer stop: ERROR: ${err}`);
L
lwx1059628 已提交
4345
});
Z
zengyawen 已提交
4346 4347 4348 4349
```

### release<sup>8+</sup>

4350
release(callback: AsyncCallback<void\>): void
Z
zengyawen 已提交
4351

4352
释放采集器。使用callback方式异步返回结果。
Z
zengyawen 已提交
4353

4354
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4355 4356 4357

**参数:**

4358 4359 4360
| 参数名   | 类型                 | 必填 | 说明                                |
| :------- | :------------------- | :--- | :---------------------------------- |
| callback | AsyncCallback<void\> | 是   | Callback used to return the result. |
Z
zengyawen 已提交
4361 4362 4363

**示例:**

J
jiao_yanlin 已提交
4364
```js
4365
audioCapturer.release((err) => {
J
jiao_yanlin 已提交
4366
  if (err) {
4367
    console.error('capturer release failed');
J
jiao_yanlin 已提交
4368
  } else {
4369
    console.info('capturer released.');
J
jiao_yanlin 已提交
4370
  }
L
lwx1059628 已提交
4371
});
Z
zengyawen 已提交
4372 4373
```

4374

Z
zengyawen 已提交
4375 4376
### release<sup>8+</sup>

4377
release(): Promise<void\>
Z
zengyawen 已提交
4378

4379
释放采集器。使用Promise方式异步返回结果。
Z
zengyawen 已提交
4380

4381
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4382 4383 4384

**返回值:**

4385 4386 4387
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
Z
zengyawen 已提交
4388 4389 4390

**示例:**

J
jiao_yanlin 已提交
4391
```js
4392 4393 4394 4395 4396 4397
let stateFlag;
audioCapturer.release().then(() => {
  console.info('AudioFrameworkRecLog: ---------RELEASE RECORD---------');
  console.info('AudioFrameworkRecLog: Capturer release : SUCCESS');
  console.info(`AudioFrameworkRecLog: AudioCapturer : STATE : ${audioCapturer.state}`);
  console.info(`AudioFrameworkRecLog: stateFlag : ${stateFlag}`);
L
lwx1059628 已提交
4398
}).catch((err) => {
4399
  console.info(`AudioFrameworkRecLog: Capturer stop: ERROR: ${err}`);
L
lwx1059628 已提交
4400
});
Z
zengyawen 已提交
4401 4402
```

4403
### read<sup>8+</sup>
Z
zengyawen 已提交
4404

4405
read(size: number, isBlockingRead: boolean, callback: AsyncCallback<ArrayBuffer\>): void
Z
zengyawen 已提交
4406

4407
读入缓冲区。使用callback方式异步返回结果。
Z
zengyawen 已提交
4408

4409
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4410 4411 4412

**参数:**

4413 4414 4415 4416 4417
| 参数名         | 类型                        | 必填 | 说明                             |
| :------------- | :-------------------------- | :--- | :------------------------------- |
| size           | number                      | 是   | 读入的字节数。                   |
| isBlockingRead | boolean                     | 是   | 是否阻塞读操作。                 |
| callback       | AsyncCallback<ArrayBuffer\> | 是   | 使用callback方式异步返回缓冲区。 |
Z
zengyawen 已提交
4418 4419 4420

**示例:**

J
jiao_yanlin 已提交
4421
```js
J
jiao_yanlin 已提交
4422
let bufferSize;
4423 4424
audioCapturer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRecLog: getBufferSize: SUCCESS ${data}`);
J
jiao_yanlin 已提交
4425 4426
  bufferSize = data;
  }).catch((err) => {
4427
    console.error(`AudioFrameworkRecLog: getBufferSize: ERROR: ${err}`);
J
jiao_yanlin 已提交
4428
  });
4429 4430 4431
audioCapturer.read(bufferSize, true, async(err, buffer) => {
  if (!err) {
    console.info('Success in reading the buffer data');
J
jiao_yanlin 已提交
4432
  }
L
lwx1059628 已提交
4433
});
Z
zengyawen 已提交
4434 4435
```

4436
### read<sup>8+</sup>
Z
zengyawen 已提交
4437

4438
read(size: number, isBlockingRead: boolean): Promise<ArrayBuffer\>
Z
zengyawen 已提交
4439

4440
读入缓冲区。使用Promise方式异步返回结果。
Z
zengyawen 已提交
4441

4442 4443 4444 4445 4446 4447 4448 4449
**系统能力:** SystemCapability.Multimedia.Audio.Capturer

**参数:**

| 参数名         | 类型    | 必填 | 说明             |
| :------------- | :------ | :--- | :--------------- |
| size           | number  | 是   | 读入的字节数。   |
| isBlockingRead | boolean | 是   | 是否阻塞读操作。 |
Z
zengyawen 已提交
4450 4451 4452

**返回值:**

4453 4454 4455
| 类型                  | 说明                                                   |
| :-------------------- | :----------------------------------------------------- |
| Promise<ArrayBuffer\> | 如果操作成功,返回读取的缓冲区数据;否则返回错误代码。 |
Z
zengyawen 已提交
4456 4457 4458

**示例:**

J
jiao_yanlin 已提交
4459
```js
J
jiao_yanlin 已提交
4460
let bufferSize;
4461 4462
audioCapturer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRecLog: getBufferSize: SUCCESS ${data}`);
J
jiao_yanlin 已提交
4463 4464
  bufferSize = data;
  }).catch((err) => {
4465
  console.info(`AudioFrameworkRecLog: getBufferSize: ERROR ${err}`);
J
jiao_yanlin 已提交
4466
  });
4467 4468 4469
console.info(`Buffer size: ${bufferSize}`);
audioCapturer.read(bufferSize, true).then((buffer) => {
  console.info('buffer read successfully');
L
lwx1059628 已提交
4470
}).catch((err) => {
4471
  console.info(`ERROR : ${err}`);
L
lwx1059628 已提交
4472
});
Z
zengyawen 已提交
4473 4474 4475 4476
```

### getAudioTime<sup>8+</sup>

4477
getAudioTime(callback: AsyncCallback<number\>): void
Z
zengyawen 已提交
4478

4479
获取时间戳(从1970年1月1日开始),单位为纳秒。使用callback方式异步返回结果。
Z
zengyawen 已提交
4480

4481
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4482 4483 4484

**参数:**

4485 4486 4487
| 参数名   | 类型                   | 必填 | 说明                           |
| :------- | :--------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<number\> | 是   | 使用callback方式异步返回结果。 |
Z
zengyawen 已提交
4488 4489 4490

**示例:**

J
jiao_yanlin 已提交
4491
```js
4492
audioCapturer.getAudioTime((err, timestamp) => {
4493
  console.info(`Current timestamp: ${timestamp}`);
L
lwx1059628 已提交
4494
});
Z
zengyawen 已提交
4495 4496 4497 4498
```

### getAudioTime<sup>8+</sup>

4499
getAudioTime(): Promise<number\>
Z
zengyawen 已提交
4500

4501
获取时间戳(从1970年1月1日开始),单位为纳秒。使用Promise方式异步返回结果。
Z
zengyawen 已提交
4502

4503
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4504 4505 4506

**返回值:**

4507 4508 4509
| 类型             | 说明                          |
| :--------------- | :---------------------------- |
| Promise<number\> | 使用Promise方式异步返回结果。 |
Z
zengyawen 已提交
4510 4511 4512

**示例:**

J
jiao_yanlin 已提交
4513
```js
4514 4515
audioCapturer.getAudioTime().then((audioTime) => {
  console.info(`AudioFrameworkRecLog: AudioCapturer getAudioTime : Success ${audioTime}`);
L
lwx1059628 已提交
4516
}).catch((err) => {
4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572
  console.info(`AudioFrameworkRecLog: AudioCapturer Created : ERROR : ${err}`);
});
```

### getBufferSize<sup>8+</sup>

getBufferSize(callback: AsyncCallback<number\>): void

获取采集器合理的最小缓冲区大小。使用callback方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Capturer

**参数:**

| 参数名   | 类型                   | 必填 | 说明                                 |
| :------- | :--------------------- | :--- | :----------------------------------- |
| callback | AsyncCallback<number\> | 是   | 使用callback方式异步返回缓冲区大小。 |

**示例:**

```js
audioCapturer.getBufferSize((err, bufferSize) => {
  if (!err) {
    console.info(`BufferSize : ${bufferSize}`);
    audioCapturer.read(bufferSize, true).then((buffer) => {
      console.info(`Buffer read is ${buffer}`);
    }).catch((err) => {
      console.error(`AudioFrameworkRecLog: AudioCapturer Created : ERROR : ${err}`);
    });
  }
});
```

### getBufferSize<sup>8+</sup>

getBufferSize(): Promise<number\>

获取采集器合理的最小缓冲区大小。使用Promise方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Capturer

**返回值:**

| 类型             | 说明                                |
| :--------------- | :---------------------------------- |
| Promise<number\> | 使用Promise方式异步返回缓冲区大小。 |

**示例:**

```js
let bufferSize;
audioCapturer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRecLog: getBufferSize :SUCCESS ${data}`);
  bufferSize = data;
}).catch((err) => {
  console.info(`AudioFrameworkRecLog: getBufferSize :ERROR : ${err}`);
L
lwx1059628 已提交
4573
});
Z
zengyawen 已提交
4574 4575
```

4576
### on('markReach')<sup>8+</sup>
Z
zengyawen 已提交
4577

4578
on(type: "markReach", frame: number, callback: Callback&lt;number&gt;): void
Z
zengyawen 已提交
4579

4580
订阅标记到达的事件。 当采集的帧数达到 frame 参数的值时,回调被触发。
Z
zengyawen 已提交
4581

4582
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4583 4584 4585

**参数:**

4586 4587 4588 4589 4590
| 参数名   | 类型                     | 必填 | 说明                                       |
| :------- | :----------------------  | :--- | :----------------------------------------- |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'markReach'。  |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于0。           |
| callback | Callback\<number>         | 是   | 使用callback方式异步返回被触发事件的回调。 |
Z
zengyawen 已提交
4591 4592 4593

**示例:**

J
jiao_yanlin 已提交
4594
```js
4595 4596 4597
audioCapturer.on('markReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
J
jiao_yanlin 已提交
4598
  }
L
lwx1059628 已提交
4599
});
Z
zengyawen 已提交
4600 4601
```

4602
### off('markReach')<sup>8+</sup>
Z
zengyawen 已提交
4603

4604
off(type: 'markReach'): void
Z
zengyawen 已提交
4605

4606
取消订阅标记到达的事件。
Z
zengyawen 已提交
4607

4608
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4609

4610
**参数:**
Z
zengyawen 已提交
4611

4612 4613 4614
| 参数名 | 类型   | 必填 | 说明                                          |
| :----- | :----- | :--- | :-------------------------------------------- |
| type   | string | 是   | 取消事件回调类型,支持的事件为:'markReach'。 |
Z
zengyawen 已提交
4615 4616 4617

**示例:**

J
jiao_yanlin 已提交
4618
```js
4619
audioCapturer.off('markReach');
Z
zengyawen 已提交
4620 4621
```

4622
### on('periodReach')<sup>8+</sup>
Z
zengyawen 已提交
4623

4624
on(type: "periodReach", frame: number, callback: Callback&lt;number&gt;): void
Z
zengyawen 已提交
4625

4626
订阅到达标记的事件。 当采集的帧数达到 frame 参数的值时,回调被循环调用。
Z
zengyawen 已提交
4627

4628
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4629 4630 4631

**参数:**

4632 4633 4634 4635 4636
| 参数名   | 类型                     | 必填 | 说明                                        |
| :------- | :----------------------- | :--- | :------------------------------------------ |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'periodReach'。 |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于0。            |
| callback | Callback\<number>         | 是   | 使用callback方式异步返回被触发事件的回调    |
Z
zengyawen 已提交
4637 4638 4639

**示例:**

J
jiao_yanlin 已提交
4640
```js
4641 4642 4643
audioCapturer.on('periodReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
J
jiao_yanlin 已提交
4644
  }
L
lwx1059628 已提交
4645
});
Z
zengyawen 已提交
4646 4647
```

4648
### off('periodReach')<sup>8+</sup>
Z
zengyawen 已提交
4649

4650
off(type: 'periodReach'): void
Z
zengyawen 已提交
4651

4652
取消订阅标记到达的事件。
Z
zengyawen 已提交
4653

4654
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4655 4656 4657

**参数:**

4658 4659 4660
| 参数名 | 类型   | 必填 | 说明                                            |
| :----- | :----- | :--- | :---------------------------------------------- |
| type   | string | 是  | 取消事件回调类型,支持的事件为:'periodReach'。 |
Z
zengyawen 已提交
4661 4662 4663

**示例:**

J
jiao_yanlin 已提交
4664
```js
4665
audioCapturer.off('periodReach')
Z
zengyawen 已提交
4666 4667
```

4668
### on('stateChange') <sup>8+</sup>
Z
zengyawen 已提交
4669

4670
on(type: 'stateChange', callback: Callback<AudioState\>): void
Z
zengyawen 已提交
4671

4672
订阅监听状态变化。
Z
zengyawen 已提交
4673

4674
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
4675 4676 4677

**参数:**

4678 4679 4680 4681
| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'stateChange'。 |
| callback | [AudioState](#audiostate8) | 是   | 返回监听的状态。                            |
Z
zengyawen 已提交
4682 4683 4684

**示例:**

J
jiao_yanlin 已提交
4685
```js
4686 4687 4688 4689 4690 4691 4692
audioCapturer.on('stateChange', (state) => {
  if (state == 1) {
    console.info('audio capturer state is: STATE_PREPARED');
  }
  if (state == 2) {
    console.info('audio capturer state is: STATE_RUNNING');
  }
L
lwx1059628 已提交
4693
});
Z
zengyawen 已提交
4694 4695
```

4696
## ToneType <sup>9+</sup>
Z
zengyawen 已提交
4697

4698
枚举,播放器的音调类型。
Z
zengyawen 已提交
4699

4700 4701
**系统接口:** 该接口为系统接口

4702
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Tone
Z
zengyawen 已提交
4703

4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732
| 名称                                              | 默认值 | 描述                          |
| :------------------------------------------------ | :----- | :----------------------------|
| TONE_TYPE_DIAL_0                                  | 0      | 键0的DTMF音。                 |
| TONE_TYPE_DIAL_1                                  | 1      | 键1的DTMF音。                 |
| TONE_TYPE_DIAL_2                                  | 2      | 键2的DTMF音。                 |
| TONE_TYPE_DIAL_3                                  | 3      | 键3的DTMF音。                 |
| TONE_TYPE_DIAL_4                                  | 4      | 键4的DTMF音。                 |
| TONE_TYPE_DIAL_5                                  | 5      | 键5的DTMF音。                 |
| TONE_TYPE_DIAL_6                                  | 6      | 键6的DTMF音。                 |
| TONE_TYPE_DIAL_7                                  | 7      | 键7的DTMF音。                 |
| TONE_TYPE_DIAL_8                                  | 8      | 键8的DTMF音。                 |
| TONE_TYPE_DIAL_9                                  | 9      | 键9的DTMF音。                 |
| TONE_TYPE_DIAL_S                                  | 10     | 键*的DTMF音。                 |
| TONE_TYPE_DIAL_P                                  | 11     | 键#的DTMF音。                 |
| TONE_TYPE_DIAL_A                                  | 12     | 键A的DTMF音。                 |
| TONE_TYPE_DIAL_B                                  | 13     | 键B的DTMF音。                 |
| TONE_TYPE_DIAL_C                                  | 14     | 键C的DTMF音。                 |
| TONE_TYPE_DIAL_D                                  | 15     | 键D的DTMF音。                 |
| TONE_TYPE_COMMON_SUPERVISORY_DIAL                 | 100    | 呼叫监管音调,拨号音。          |
| TONE_TYPE_COMMON_SUPERVISORY_BUSY                 | 101    | 呼叫监管音调,忙。              |
| TONE_TYPE_COMMON_SUPERVISORY_CONGESTION           | 102    | 呼叫监管音调,拥塞。            |
| TONE_TYPE_COMMON_SUPERVISORY_RADIO_ACK            | 103    | 呼叫监管音调,无线电 ACK。      |
| TONE_TYPE_COMMON_SUPERVISORY_RADIO_NOT_AVAILABLE  | 104    | 呼叫监管音调,无线电不可用。     |
| TONE_TYPE_COMMON_SUPERVISORY_CALL_WAITING         | 106    | 呼叫监管音调,呼叫等待。        |
| TONE_TYPE_COMMON_SUPERVISORY_RINGTONE             | 107    | 呼叫监管音调,铃声。            |
| TONE_TYPE_COMMON_PROPRIETARY_BEEP                 | 200    | 专有声调,一般蜂鸣声。          |
| TONE_TYPE_COMMON_PROPRIETARY_ACK                  | 201    | 专有声调,ACK。                |
| TONE_TYPE_COMMON_PROPRIETARY_PROMPT               | 203    | 专有声调,PROMPT。             |
| TONE_TYPE_COMMON_PROPRIETARY_DOUBLE_BEEP          | 204    | 专有声调,双重蜂鸣声。          |
Z
zengyawen 已提交
4733

4734
## TonePlayer<sup>9+</sup>
Z
zengyawen 已提交
4735

4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753
提供播放和管理DTMF(Dual Tone Multi Frequency,双音多频)音调的方法,包括各种系统监听音调、专有音调,如拨号音、通话回铃音等。

**系统接口:** 该接口为系统接口

### load<sup>9+</sup>

load(type: ToneType, callback: AsyncCallback&lt;void&gt;): void

加载DTMF音调配置。使用callback方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Tone

**参数:**

| 参数名          | 类型                        | 必填  | 说明                            |
| :--------------| :-------------------------- | :-----| :------------------------------ |
| type           | ToneType(#tonetype9)        | 是    | 配置的音调类型。                 |
| callback       | AsyncCallback<void\>        | 是    | 使用callback方式异步返回结果。 |
Z
zengyawen 已提交
4754 4755 4756

**示例:**

J
jiao_yanlin 已提交
4757
```js
4758 4759 4760 4761 4762 4763 4764
tonePlayer.load(audio.ToneType.TONE_TYPE_DIAL_5, (err) => {
  if (err) {
    console.error(`callback call load failed error: ${err.message}`);
    return;
  } else {
    console.info('callback call load success');
  }
L
lwx1059628 已提交
4765
});
Z
zengyawen 已提交
4766
```
4767

4768
### load<sup>9+</sup>
4769

4770
load(type: ToneType): Promise&lt;void&gt;
4771

4772 4773 4774
加载DTMF音调配置。使用Promise方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Tone
4775 4776 4777

**参数:**

4778 4779 4780
| 参数名         | 类型                    | 必填  |  说明             |
| :------------- | :--------------------- | :---  | ---------------- |
| type           | ToneType(#tonetype9)   | 是    | 配置的音调类型。  |
4781 4782 4783

**返回值:**

4784 4785 4786
| 类型            | 说明                        |
| :--------------| :-------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
4787 4788

**示例:**
Z
zengyawen 已提交
4789

J
jiao_yanlin 已提交
4790
```js
4791 4792 4793 4794
tonePlayer.load(audio.ToneType.TONE_TYPE_DIAL_1).then(() => {
  console.info('promise call load ');
}).catch(() => {
  console.error('promise call load fail');
4795
});
Z
zhujie81 已提交
4796 4797
```

4798
### start<sup>9+</sup>
Z
zhujie81 已提交
4799

4800
start(callback: AsyncCallback&lt;void&gt;): void
Z
zhujie81 已提交
4801

4802 4803 4804
启动DTMF音调播放。使用callback方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Tone
Z
zhujie81 已提交
4805 4806

**参数:**
4807

4808 4809 4810
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
Z
zengyawen 已提交
4811

Z
zhujie81 已提交
4812 4813
**示例:**

J
jiao_yanlin 已提交
4814
```js
4815 4816 4817 4818 4819 4820
tonePlayer.start((err) => {
  if (err) {
    console.error(`callback call start failed error: ${err.message}`);
    return;
  } else {
    console.info('callback call start success');
J
jiao_yanlin 已提交
4821
  }
4822
});
4823
```
Z
zengyawen 已提交
4824

4825
### start<sup>9+</sup>
4826

4827
start(): Promise&lt;void&gt;
4828

4829
启动DTMF音调播放。使用Promise方式异步返回结果。
4830

4831
**系统能力:** SystemCapability.Multimedia.Audio.Tone
4832 4833 4834

**返回值:**

4835 4836 4837
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
4838 4839 4840 4841

**示例:**

```js
4842 4843 4844 4845
tonePlayer.start().then(() => {
  console.info('promise call start');
}).catch(() => {
  console.error('promise call start fail');
4846 4847 4848
});
```

4849
### stop<sup>9+</sup>
4850

4851
stop(callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
4852

4853 4854 4855
停止当前正在播放的音调。使用callback方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Tone
Z
zengyawen 已提交
4856 4857 4858

**参数:**

4859 4860 4861
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
4862 4863 4864 4865

**示例:**

```js
4866 4867 4868 4869 4870 4871
tonePlayer.stop((err) => {
  if (err) {
    console.error(`callback call stop error: ${err.message}`);
    return;
  } else {
    console.error('callback call stop success ');
4872 4873 4874 4875
  }
});
```

4876
### stop<sup>9+</sup>
4877

4878
stop(): Promise&lt;void&gt;
4879

4880
停止当前正在播放的音调。使用Promise方式异步返回结果。
Z
zengyawen 已提交
4881

4882
**系统能力:** SystemCapability.Multimedia.Audio.Tone
4883

4884
**返回值:**
4885

4886 4887 4888
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
4889

Z
zengyawen 已提交
4890 4891
**示例:**

J
jiao_yanlin 已提交
4892
```js
4893 4894 4895 4896
tonePlayer.stop().then(() => {
  console.info('promise call stop finish');
}).catch(() => {
  console.error('promise call stop fail');
L
lwx1059628 已提交
4897
});
Z
zengyawen 已提交
4898 4899
```

4900
### release<sup>9+</sup>
L
lwx1059628 已提交
4901

4902
release(callback: AsyncCallback&lt;void&gt;): void
L
lwx1059628 已提交
4903

4904
释放与此TonePlay对象关联的资源。使用callback方式异步返回结果。
L
lwx1059628 已提交
4905

4906
**系统能力:** SystemCapability.Multimedia.Audio.Tone
L
lwx1059628 已提交
4907 4908 4909

**参数:**

4910 4911 4912
| 参数名   | 类型                 | 必填 | 说明                            |
| :------- | :------------------- | :--- | :---------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。  |
L
lwx1059628 已提交
4913 4914 4915

**示例:**

J
jiao_yanlin 已提交
4916
```js
4917 4918 4919 4920 4921 4922
tonePlayer.release((err) => {
  if (err) {
    console.error(`callback call release failed error: ${err.message}`);
    return;
  } else {
    console.info('callback call release success ');
J
jiao_yanlin 已提交
4923
  }
L
lwx1059628 已提交
4924 4925 4926
});
```

4927
### release<sup>9+</sup>
L
lwx1059628 已提交
4928

4929
release(): Promise&lt;void&gt;
L
lwx1059628 已提交
4930

4931
释放与此TonePlay对象关联的资源。使用Promise方式异步返回结果。
L
lwx1059628 已提交
4932

4933
**系统能力:** SystemCapability.Multimedia.Audio.Tone
L
lwx1059628 已提交
4934

4935
**返回值:**
L
lwx1059628 已提交
4936

4937 4938 4939
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
L
lwx1059628 已提交
4940 4941 4942

**示例:**

J
jiao_yanlin 已提交
4943
```js
4944 4945 4946 4947 4948
tonePlayer.release().then(() => {
  console.info('promise call release');
}).catch(() => {
  console.error('promise call release fail');
});
L
lwx1059628 已提交
4949 4950
```

4951
## ActiveDeviceType<sup>(deprecated)</sup>
Z
zengyawen 已提交
4952

4953
枚举,活跃设备类型。
Z
zengyawen 已提交
4954

4955 4956
> **说明:**
> 从 API version 9 开始废弃,建议使用[CommunicationDeviceType](#communicationdevicetype9)替代。
L
lwx1059628 已提交
4957

4958
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
4959

4960 4961 4962 4963
| 名称          | 默认值 | 描述                                                 |
| ------------- | ------ | ---------------------------------------------------- |
| SPEAKER       | 2      | 扬声器。                                             |
| BLUETOOTH_SCO | 7      | 蓝牙设备SCO(Synchronous Connection Oriented)连接。 |
L
lwx1059628 已提交
4964

4965
## InterruptActionType<sup>(deprecated)</sup>
L
lwx1059628 已提交
4966

4967
枚举,中断事件返回类型。
L
lwx1059628 已提交
4968

4969 4970
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃。
L
lwx1059628 已提交
4971

4972
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Renderer
L
lwx1059628 已提交
4973

4974 4975 4976 4977
| 名称           | 默认值 | 描述               |
| -------------- | ------ | ------------------ |
| TYPE_ACTIVATED | 0      | 表示触发焦点事件。 |
| TYPE_INTERRUPT | 1      | 表示音频打断事件。 |
L
lwx1059628 已提交
4978

4979
## AudioInterrupt<sup>(deprecated)</sup>
L
lwx1059628 已提交
4980

4981 4982
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃。
L
lwx1059628 已提交
4983

4984
音频监听事件传入的参数。
L
lwx1059628 已提交
4985

4986
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Renderer
L
lwx1059628 已提交
4987

4988 4989 4990 4991 4992
| 名称            | 类型                        | 必填 | 说明                                                         |
| --------------- | --------------------------- | ---- | ------------------------------------------------------------ |
| streamUsage     | [StreamUsage](#streamusage) | 是   | 音频流使用类型。                                             |
| contentType     | [ContentType](#contenttype) | 是   | 音频打断媒体类型。                                           |
| pauseWhenDucked | boolean                     | 是   | 音频打断时是否可以暂停音频播放(true表示音频播放可以在音频打断期间暂停,false表示相反)。 |
L
lwx1059628 已提交
4993

4994
## InterruptAction<sup>(deprecated)</sup>
L
lwx1059628 已提交
4995

4996 4997
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃。
L
lwx1059628 已提交
4998

4999
音频打断/获取焦点事件的回调方法。
L
lwx1059628 已提交
5000

5001
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Renderer
L
lwx1059628 已提交
5002

5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023
| 名称       | 类型                                        | 必填 | 说明                                                         |
| ---------- | ------------------------------------------- | ---- | ------------------------------------------------------------ |
| actionType | [InterruptActionType](#interruptactiontype) | 是   | 事件返回类型。TYPE_ACTIVATED为焦点触发事件,TYPE_INTERRUPT为音频打断事件。 |
| type       | [InterruptType](#interrupttype)             | 否   | 打断事件类型。                                               |
| hint       | [InterruptHint](#interrupthint)              | 否   | 打断事件提示。                                               |
| activated  | boolean                                     | 否   | 获得/释放焦点。true表示焦点获取/释放成功,false表示焦点获得/释放失败。 |

### setVolume<sup>(deprecated)</sup>

setVolume(volumeType: AudioVolumeType, volume: number, callback: AsyncCallback&lt;void&gt;): void

设置指定流的音量,使用callback方式异步返回结果。

> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[setVolume](#setvolume9)替代。

**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY

仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。

**系统能力:** SystemCapability.Multimedia.Audio.Volume
L
lwx1059628 已提交
5024 5025 5026

**参数:**

5027 5028 5029 5030 5031
| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
| volume     | number                              | 是   | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 |
| callback   | AsyncCallback&lt;void&gt;           | 是   | 回调表示成功还是失败。                                   |
L
lwx1059628 已提交
5032 5033 5034

**示例:**

J
jiao_yanlin 已提交
5035
```js
5036 5037 5038 5039
audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10, (err) => {
  if (err) {
    console.error(`Failed to set the volume. ${err}`);
    return;
J
jiao_yanlin 已提交
5040
  }
5041
  console.info('Callback invoked to indicate a successful volume setting.');
L
lwx1059628 已提交
5042 5043 5044
});
```

5045
### setVolume<sup>(deprecated)</sup>
L
lwx1059628 已提交
5046

5047
setVolume(volumeType: AudioVolumeType, volume: number): Promise&lt;void&gt;
L
lwx1059628 已提交
5048

5049
设置指定流的音量,使用Promise方式异步返回结果。
L
lwx1059628 已提交
5050

5051 5052
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[setVolume](#setvolume9)替代。
L
lwx1059628 已提交
5053

5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY

仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。

**系统能力:** SystemCapability.Multimedia.Audio.Volume

**参数:**

| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
| volume     | number                              | 是   | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 |

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
L
lwx1059628 已提交
5072 5073 5074

**示例:**

J
jiao_yanlin 已提交
5075
```js
5076 5077 5078
audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10).then(() => {
  console.info('Promise returned to indicate a successful volume setting.');
});
L
lwx1059628 已提交
5079 5080
```

5081
### getVolume<sup>(deprecated)</sup>
L
lwx1059628 已提交
5082

5083
getVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
L
lwx1059628 已提交
5084

5085
获取指定流的音量,使用callback方式异步返回结果。
L
lwx1059628 已提交
5086

5087 5088 5089 5090
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getVolume](#getvolume9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Volume
L
lwx1059628 已提交
5091 5092 5093

**参数:**

5094 5095 5096 5097
| 参数名     | 类型                                | 必填 | 说明               |
| ---------- | ----------------------------------- | ---- | ------------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。       |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回音量大小。 |
L
lwx1059628 已提交
5098 5099 5100

**示例:**

J
jiao_yanlin 已提交
5101
```js
5102
audioManager.getVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
5103
  if (err) {
5104 5105
    console.error(`Failed to obtain the volume. ${err}`);
    return;
J
jiao_yanlin 已提交
5106
  }
5107
  console.info('Callback invoked to indicate that the volume is obtained.');
L
lwx1059628 已提交
5108 5109 5110
});
```

5111
### getVolume<sup>(deprecated)</sup>
L
lwx1059628 已提交
5112

5113
getVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
L
lwx1059628 已提交
5114

5115
获取指定流的音量,使用Promise方式异步返回结果。
L
lwx1059628 已提交
5116

5117 5118
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getVolume](#getvolume9)替代。
L
lwx1059628 已提交
5119

5120 5121 5122 5123 5124 5125 5126
**系统能力:** SystemCapability.Multimedia.Audio.Volume

**参数:**

| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
L
lwx1059628 已提交
5127 5128 5129

**返回值:**

5130 5131 5132
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回音量大小。 |
L
lwx1059628 已提交
5133 5134 5135

**示例:**

J
jiao_yanlin 已提交
5136
```js
5137 5138
audioManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the volume is obtained ${value} .`);
L
lwx1059628 已提交
5139 5140 5141
});
```

5142
### getMinVolume<sup>(deprecated)</sup>
L
lwx1059628 已提交
5143

5144
getMinVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
L
lwx1059628 已提交
5145

5146
获取指定流的最小音量,使用callback方式异步返回结果。
L
lwx1059628 已提交
5147

5148 5149 5150 5151
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getMinVolume](#getminvolume9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Volume
L
lwx1059628 已提交
5152 5153 5154

**参数:**

5155 5156 5157 5158
| 参数名     | 类型                                | 必填 | 说明               |
| ---------- | ----------------------------------- | ---- | ------------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。       |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回最小音量。 |
L
lwx1059628 已提交
5159 5160 5161

**示例:**

J
jiao_yanlin 已提交
5162
```js
5163
audioManager.getMinVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
5164
  if (err) {
5165 5166
    console.error(`Failed to obtain the minimum volume. ${err}`);
    return;
J
jiao_yanlin 已提交
5167
  }
5168
  console.info(`Callback invoked to indicate that the minimum volume is obtained. ${value}`);
L
lwx1059628 已提交
5169 5170 5171
});
```

5172
### getMinVolume<sup>(deprecated)</sup>
L
lwx1059628 已提交
5173

5174
getMinVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
L
lwx1059628 已提交
5175

5176
获取指定流的最小音量,使用Promise方式异步返回结果。
L
lwx1059628 已提交
5177

5178 5179 5180 5181 5182 5183 5184 5185 5186 5187
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getMinVolume](#getminvolume9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Volume

**参数:**

| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
L
lwx1059628 已提交
5188 5189 5190

**返回值:**

5191 5192 5193
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回最小音量。 |
L
lwx1059628 已提交
5194 5195 5196

**示例:**

J
jiao_yanlin 已提交
5197
```js
5198 5199
audioManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promised returned to indicate that the minimum volume is obtained. ${value}`);
L
lwx1059628 已提交
5200 5201 5202
});
```

5203
### getMaxVolume<sup>(deprecated)</sup>
5204

5205
getMaxVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
5206

5207
获取指定流的最大音量,使用callback方式异步返回结果。
5208

5209 5210 5211 5212
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getMaxVolume](#getmaxvolume9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Volume
5213 5214 5215

**参数:**

5216 5217 5218 5219
| 参数名     | 类型                                | 必填 | 说明                   |
| ---------- | ----------------------------------- | ---- | ---------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。           |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回最大音量大小。 |
5220 5221 5222 5223

**示例:**

```js
5224 5225 5226 5227 5228 5229
audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
  if (err) {
    console.error(`Failed to obtain the maximum volume. ${err}`);
    return;
  }
  console.info(`Callback invoked to indicate that the maximum volume is obtained. ${value}`);
5230 5231 5232
});
```

5233
### getMaxVolume<sup>(deprecated)</sup>
5234

5235
getMaxVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
5236

5237
获取指定流的最大音量,使用Promise方式异步返回结果。
5238

5239 5240 5241 5242 5243 5244 5245 5246 5247 5248
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getMaxVolume](#getmaxvolume9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Volume

**参数:**

| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
5249 5250 5251

**返回值:**

5252 5253 5254
| 类型                  | 说明                          |
| --------------------- | ----------------------------- |
| Promise&lt;number&gt; | Promise回调返回最大音量大小。 |
5255 5256 5257 5258

**示例:**

```js
5259 5260
audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((data) => {
  console.info('Promised returned to indicate that the maximum volume is obtained.');
5261 5262 5263
});
```

5264
### mute<sup>(deprecated)</sup>
L
lwx1059628 已提交
5265

5266
mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback&lt;void&gt;): void
L
lwx1059628 已提交
5267

5268
设置指定音量流静音,使用callback方式异步返回结果。
L
lwx1059628 已提交
5269

5270 5271 5272 5273 5274 5275 5276 5277
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[mute](#mute9)替代。

**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY

仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。

**系统能力:** SystemCapability.Multimedia.Audio.Volume
L
lwx1059628 已提交
5278

5279
**参数:**
L
lwx1059628 已提交
5280

5281 5282 5283 5284 5285
| 参数名     | 类型                                | 必填 | 说明                                  |
| ---------- | ----------------------------------- | ---- | ------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                          |
| mute       | boolean                             | 是   | 静音状态,true为静音,false为非静音。 |
| callback   | AsyncCallback&lt;void&gt;           | 是   | 回调表示成功还是失败。                |
L
lwx1059628 已提交
5286 5287 5288

**示例:**

J
jiao_yanlin 已提交
5289
```js
5290
audioManager.mute(audio.AudioVolumeType.MEDIA, true, (err) => {
J
jiao_yanlin 已提交
5291
  if (err) {
5292 5293
    console.error(`Failed to mute the stream. ${err}`);
    return;
J
jiao_yanlin 已提交
5294
  }
5295
  console.info('Callback invoked to indicate that the stream is muted.');
L
lwx1059628 已提交
5296 5297 5298
});
```

5299 5300 5301 5302 5303 5304 5305 5306
### mute<sup>(deprecated)</sup>

mute(volumeType: AudioVolumeType, mute: boolean): Promise&lt;void&gt;

设置指定音量流静音,使用Promise方式异步返回结果。

> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[mute](#mute9)替代。
L
lwx1059628 已提交
5307

5308
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
L
lwx1059628 已提交
5309

5310
仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。
L
lwx1059628 已提交
5311

5312
**系统能力:** SystemCapability.Multimedia.Audio.Volume
L
lwx1059628 已提交
5313

5314 5315 5316 5317 5318 5319
**参数:**

| 参数名     | 类型                                | 必填 | 说明                                  |
| ---------- | ----------------------------------- | ---- | ------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                          |
| mute       | boolean                             | 是   | 静音状态,true为静音,false为非静音。 |
L
lwx1059628 已提交
5320 5321 5322

**返回值:**

5323 5324 5325
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
L
lwx1059628 已提交
5326 5327 5328

**示例:**

5329

J
jiao_yanlin 已提交
5330
```js
5331 5332
audioManager.mute(audio.AudioVolumeType.MEDIA, true).then(() => {
  console.info('Promise returned to indicate that the stream is muted.');
L
lwx1059628 已提交
5333 5334 5335
});
```

5336
### isMute<sup>(deprecated)</sup>
L
lwx1059628 已提交
5337

5338
isMute(volumeType: AudioVolumeType, callback: AsyncCallback&lt;boolean&gt;): void
L
lwx1059628 已提交
5339

5340
获取指定音量流是否被静音,使用callback方式异步返回结果。
L
lwx1059628 已提交
5341

5342 5343 5344 5345
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[isMute](#ismute9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Volume
L
lwx1059628 已提交
5346 5347 5348

**参数:**

5349 5350 5351 5352
| 参数名     | 类型                                | 必填 | 说明                                            |
| ---------- | ----------------------------------- | ---- | ----------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                    |
| callback   | AsyncCallback&lt;boolean&gt;        | 是   | 回调返回流静音状态,true为静音,false为非静音。 |
L
lwx1059628 已提交
5353 5354 5355

**示例:**

J
jiao_yanlin 已提交
5356
```js
5357
audioManager.isMute(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
5358
  if (err) {
5359 5360
    console.error(`Failed to obtain the mute status. ${err}`);
    return;
J
jiao_yanlin 已提交
5361
  }
5362
  console.info(`Callback invoked to indicate that the mute status of the stream is obtained. ${value}`);
L
lwx1059628 已提交
5363 5364 5365
});
```

5366
### isMute<sup>(deprecated)</sup>
L
lwx1059628 已提交
5367

5368
isMute(volumeType: AudioVolumeType): Promise&lt;boolean&gt;
L
lwx1059628 已提交
5369

5370
获取指定音量流是否被静音,使用Promise方式异步返回结果。
L
lwx1059628 已提交
5371

5372 5373
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[isMute](#ismute9)替代。
L
lwx1059628 已提交
5374

5375 5376 5377 5378 5379 5380 5381
**系统能力:** SystemCapability.Multimedia.Audio.Volume

**参数:**

| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
L
lwx1059628 已提交
5382 5383 5384

**返回值:**

5385 5386 5387
| 类型                   | 说明                                                   |
| ---------------------- | ------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回流静音状态,true为静音,false为非静音。 |
L
lwx1059628 已提交
5388 5389 5390

**示例:**

J
jiao_yanlin 已提交
5391
```js
5392 5393
audioManager.isMute(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the mute status of the stream is obtained ${value}.`);
L
lwx1059628 已提交
5394 5395 5396
});
```

5397
### isActive<sup>(deprecated)</sup>
L
lwx1059628 已提交
5398

5399
isActive(volumeType: AudioVolumeType, callback: AsyncCallback&lt;boolean&gt;): void
L
lwx1059628 已提交
5400

5401
获取指定音量流是否为活跃状态,使用callback方式异步返回结果。
L
lwx1059628 已提交
5402

5403 5404 5405 5406
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioStreamManager中的[isActive](#isactive9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Volume
L
lwx1059628 已提交
5407 5408 5409

**参数:**

5410 5411 5412 5413
| 参数名     | 类型                                | 必填 | 说明                                              |
| ---------- | ----------------------------------- | ---- | ------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                      |
| callback   | AsyncCallback&lt;boolean&gt;        | 是   | 回调返回流的活跃状态,true为活跃,false为不活跃。 |
L
lwx1059628 已提交
5414 5415 5416

**示例:**

J
jiao_yanlin 已提交
5417
```js
5418
audioManager.isActive(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
5419
  if (err) {
5420 5421
    console.error(`Failed to obtain the active status of the stream. ${err}`);
    return;
J
jiao_yanlin 已提交
5422
  }
5423
  console.info(`Callback invoked to indicate that the active status of the stream is obtained ${value}.`);
L
lwx1059628 已提交
5424 5425 5426
});
```

5427
### isActive<sup>(deprecated)</sup>
L
lwx1059628 已提交
5428

5429
isActive(volumeType: AudioVolumeType): Promise&lt;boolean&gt;
L
lwx1059628 已提交
5430

5431
获取指定音量流是否为活跃状态,使用Promise方式异步返回结果。
L
lwx1059628 已提交
5432

5433 5434
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioStreamManager中的[isActive](#isactive9)替代。
L
lwx1059628 已提交
5435

5436 5437 5438 5439 5440 5441 5442
**系统能力:** SystemCapability.Multimedia.Audio.Volume

**参数:**

| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
L
lwx1059628 已提交
5443 5444 5445

**返回值:**

5446 5447 5448
| 类型                   | 说明                                                     |
| ---------------------- | -------------------------------------------------------- |
| Promise&lt;boolean&gt; | Promise回调返回流的活跃状态,true为活跃,false为不活跃。 |
L
lwx1059628 已提交
5449 5450 5451

**示例:**

J
jiao_yanlin 已提交
5452
```js
5453 5454
audioManager.isActive(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the active status of the stream is obtained ${value}.`);
L
lwx1059628 已提交
5455 5456 5457
});
```

5458
### setRingerMode<sup>(deprecated)</sup>
L
lwx1059628 已提交
5459

5460
setRingerMode(mode: AudioRingMode, callback: AsyncCallback&lt;void&gt;): void
L
lwx1059628 已提交
5461

5462
设置铃声模式,使用callback方式异步返回结果。
L
lwx1059628 已提交
5463

5464 5465 5466 5467 5468 5469 5470 5471
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[setRingerMode](#setringermode9)替代。

**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY

仅在静音和非静音状态切换时需要该权限。

**系统能力:** SystemCapability.Multimedia.Audio.Communication
L
lwx1059628 已提交
5472

5473
**参数:**
L
lwx1059628 已提交
5474

5475 5476 5477 5478
| 参数名   | 类型                            | 必填 | 说明                     |
| -------- | ------------------------------- | ---- | ------------------------ |
| mode     | [AudioRingMode](#audioringmode) | 是   | 音频铃声模式。           |
| callback | AsyncCallback&lt;void&gt;       | 是   | 回调返回设置成功或失败。 |
L
lwx1059628 已提交
5479 5480 5481

**示例:**

J
jiao_yanlin 已提交
5482
```js
5483 5484 5485 5486
audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL, (err) => {
  if (err) {
    console.error(`Failed to set the ringer mode.​ ${err}`);
    return;
J
jiao_yanlin 已提交
5487
  }
5488
  console.info('Callback invoked to indicate a successful setting of the ringer mode.');
J
jiao_yanlin 已提交
5489
});
L
lwx1059628 已提交
5490 5491
```

5492
### setRingerMode<sup>(deprecated)</sup>
L
lwx1059628 已提交
5493

5494
setRingerMode(mode: AudioRingMode): Promise&lt;void&gt;
L
lwx1059628 已提交
5495

5496
设置铃声模式,使用Promise方式异步返回结果。
L
lwx1059628 已提交
5497

5498 5499 5500 5501 5502 5503 5504 5505
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[setRingerMode](#setringermode9)替代。

**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY

仅在静音和非静音状态切换时需要该权限。

**系统能力:** SystemCapability.Multimedia.Audio.Communication
L
lwx1059628 已提交
5506 5507 5508

**参数:**

5509 5510 5511
| 参数名 | 类型                            | 必填 | 说明           |
| ------ | ------------------------------- | ---- | -------------- |
| mode   | [AudioRingMode](#audioringmode) | 是   | 音频铃声模式。 |
L
lwx1059628 已提交
5512 5513 5514

**返回值:**

5515 5516 5517
| 类型                | 说明                            |
| ------------------- | ------------------------------- |
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |
L
lwx1059628 已提交
5518 5519 5520

**示例:**

J
jiao_yanlin 已提交
5521
```js
5522 5523
audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL).then(() => {
  console.info('Promise returned to indicate a successful setting of the ringer mode.');
L
lwx1059628 已提交
5524 5525 5526
});
```

5527
### getRingerMode<sup>(deprecated)</sup>
L
lwx1059628 已提交
5528

5529
getRingerMode(callback: AsyncCallback&lt;AudioRingMode&gt;): void
L
lwx1059628 已提交
5530

5531
获取铃声模式,使用callback方式异步返回结果。
L
lwx1059628 已提交
5532

5533 5534 5535 5536
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getRingerMode](#getringermode9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Communication
L
lwx1059628 已提交
5537 5538 5539

**参数:**

5540 5541 5542
| 参数名   | 类型                                                 | 必填 | 说明                     |
| -------- | ---------------------------------------------------- | ---- | ------------------------ |
| callback | AsyncCallback&lt;[AudioRingMode](#audioringmode)&gt; | 是   | 回调返回系统的铃声模式。 |
L
lwx1059628 已提交
5543 5544 5545

**示例:**

J
jiao_yanlin 已提交
5546
```js
5547 5548 5549 5550 5551 5552
audioManager.getRingerMode((err, value) => {
  if (err) {
    console.error(`Failed to obtain the ringer mode.​ ${err}`);
    return;
  }
  console.info(`Callback invoked to indicate that the ringer mode is obtained ${value}.`);
L
lwx1059628 已提交
5553 5554 5555
});
```

5556
### getRingerMode<sup>(deprecated)</sup>
L
lwx1059628 已提交
5557

5558
getRingerMode(): Promise&lt;AudioRingMode&gt;
L
lwx1059628 已提交
5559

5560 5561 5562 5563
获取铃声模式,使用Promise方式异步返回结果。

> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getRingerMode](#getringermode9)替代。
L
lwx1059628 已提交
5564

5565
**系统能力:** SystemCapability.Multimedia.Audio.Communication
L
lwx1059628 已提交
5566 5567 5568

**返回值:**

5569 5570 5571
| 类型                                           | 说明                            |
| ---------------------------------------------- | ------------------------------- |
| Promise&lt;[AudioRingMode](#audioringmode)&gt; | Promise回调返回系统的铃声模式。 |
L
lwx1059628 已提交
5572 5573 5574

**示例:**

J
jiao_yanlin 已提交
5575
```js
5576 5577
audioManager.getRingerMode().then((value) => {
  console.info(`Promise returned to indicate that the ringer mode is obtained ${value}.`);
L
lwx1059628 已提交
5578 5579 5580
});
```

5581
### getDevices<sup>(deprecated)</sup>
L
lwx1059628 已提交
5582

5583
getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback&lt;AudioDeviceDescriptors&gt;): void
L
lwx1059628 已提交
5584

5585
获取音频设备列表,使用callback方式异步返回结果。
L
lwx1059628 已提交
5586

5587 5588 5589 5590
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[getDevices](#getdevices9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
5591 5592 5593

**参数:**

5594 5595 5596 5597
| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
| deviceFlag | [DeviceFlag](#deviceflag)                                    | 是   | 设备类型的flag。     |
| callback   | AsyncCallback&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | 是   | 回调,返回设备列表。 |
L
lwx1059628 已提交
5598 5599

**示例:**
J
jiao_yanlin 已提交
5600
```js
5601 5602 5603 5604
audioManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG, (err, value) => {
  if (err) {
    console.error(`Failed to obtain the device list. ${err}`);
    return;
J
jiao_yanlin 已提交
5605
  }
5606
  console.info('Callback invoked to indicate that the device list is obtained.');
L
lwx1059628 已提交
5607 5608 5609
});
```

5610
### getDevices<sup>(deprecated)</sup>
L
lwx1059628 已提交
5611

5612
getDevices(deviceFlag: DeviceFlag): Promise&lt;AudioDeviceDescriptors&gt;
L
lwx1059628 已提交
5613

5614
获取音频设备列表,使用Promise方式异步返回结果。
L
lwx1059628 已提交
5615

5616 5617 5618 5619 5620 5621 5622 5623 5624 5625
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[getDevices](#getdevices9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Device

**参数:**

| 参数名     | 类型                      | 必填 | 说明             |
| ---------- | ------------------------- | ---- | ---------------- |
| deviceFlag | [DeviceFlag](#deviceflag) | 是   | 设备类型的flag。 |
L
lwx1059628 已提交
5626 5627 5628

**返回值:**

5629 5630 5631
| 类型                                                         | 说明                      |
| ------------------------------------------------------------ | ------------------------- |
| Promise&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | Promise回调返回设备列表。 |
L
lwx1059628 已提交
5632 5633 5634

**示例:**

J
jiao_yanlin 已提交
5635
```js
5636 5637
audioManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((data) => {
  console.info('Promise returned to indicate that the device list is obtained.');
L
lwx1059628 已提交
5638 5639 5640
});
```

5641
### setDeviceActive<sup>(deprecated)</sup>
L
lwx1059628 已提交
5642

5643
setDeviceActive(deviceType: ActiveDeviceType, active: boolean, callback: AsyncCallback&lt;void&gt;): void
L
lwx1059628 已提交
5644

5645
设置设备激活状态,使用callback方式异步返回结果。
L
lwx1059628 已提交
5646

5647 5648 5649 5650
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[setCommunicationDevice](#setcommunicationdevice9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
5651 5652 5653

**参数:**

5654 5655 5656 5657 5658
| 参数名     | 类型                                  | 必填 | 说明                     |
| ---------- | ------------------------------------- | ---- | ------------------------ |
| deviceType | [ActiveDeviceType](#activedevicetype) | 是   | 活跃音频设备类型。       |
| active     | boolean                               | 是   | 设备激活状态。           |
| callback   | AsyncCallback&lt;void&gt;             | 是   | 回调返回设置成功或失败。 |
L
lwx1059628 已提交
5659 5660 5661

**示例:**

J
jiao_yanlin 已提交
5662
```js
5663 5664 5665 5666
audioManager.setDeviceActive(audio.ActiveDeviceType.SPEAKER, true, (err) => {
  if (err) {
    console.error(`Failed to set the active status of the device. ${err}`);
    return;
J
jiao_yanlin 已提交
5667
  }
5668
  console.info('Callback invoked to indicate that the device is set to the active status.');
L
lwx1059628 已提交
5669 5670 5671
});
```

5672
### setDeviceActive<sup>(deprecated)</sup>
L
lwx1059628 已提交
5673

5674
setDeviceActive(deviceType: ActiveDeviceType, active: boolean): Promise&lt;void&gt;
L
lwx1059628 已提交
5675

5676
设置设备激活状态,使用Promise方式异步返回结果。
L
lwx1059628 已提交
5677

5678 5679 5680 5681
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[setCommunicationDevice](#setcommunicationdevice9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
5682 5683 5684

**参数:**

5685 5686 5687 5688 5689 5690 5691 5692 5693 5694
| 参数名     | 类型                                  | 必填 | 说明               |
| ---------- | ------------------------------------- | ---- | ------------------ |
| deviceType | [ActiveDeviceType](#activedevicetype) | 是   | 活跃音频设备类型。 |
| active     | boolean                               | 是   | 设备激活状态。     |

**返回值:**

| 类型                | 说明                            |
| ------------------- | ------------------------------- |
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |
L
lwx1059628 已提交
5695 5696 5697

**示例:**

5698

J
jiao_yanlin 已提交
5699
```js
5700 5701 5702
audioManager.setDeviceActive(audio.ActiveDeviceType.SPEAKER, true).then(() => {
  console.info('Promise returned to indicate that the device is set to the active status.');
});
L
lwx1059628 已提交
5703 5704
```

5705
### isDeviceActive<sup>(deprecated)</sup>
L
lwx1059628 已提交
5706

5707
isDeviceActive(deviceType: ActiveDeviceType, callback: AsyncCallback&lt;boolean&gt;): void
L
lwx1059628 已提交
5708

5709
获取指定设备的激活状态,使用callback方式异步返回结果。
L
lwx1059628 已提交
5710

5711 5712 5713 5714
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[isCommunicationDeviceActive](#iscommunicationdeviceactive9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
5715 5716 5717

**参数:**

5718 5719 5720 5721
| 参数名     | 类型                                  | 必填 | 说明                     |
| ---------- | ------------------------------------- | ---- | ------------------------ |
| deviceType | [ActiveDeviceType](#activedevicetype) | 是   | 活跃音频设备类型。       |
| callback   | AsyncCallback&lt;boolean&gt;          | 是   | 回调返回设备的激活状态。 |
L
lwx1059628 已提交
5722 5723 5724

**示例:**

J
jiao_yanlin 已提交
5725
```js
5726 5727 5728 5729
audioManager.isDeviceActive(audio.ActiveDeviceType.SPEAKER, (err, value) => {
  if (err) {
    console.error(`Failed to obtain the active status of the device. ${err}`);
    return;
J
jiao_yanlin 已提交
5730
  }
5731
  console.info('Callback invoked to indicate that the active status of the device is obtained.');
L
lwx1059628 已提交
5732 5733 5734
});
```

5735
### isDeviceActive<sup>(deprecated)</sup>
L
lwx1059628 已提交
5736

5737
isDeviceActive(deviceType: ActiveDeviceType): Promise&lt;boolean&gt;
L
lwx1059628 已提交
5738

5739
获取指定设备的激活状态,使用Promise方式异步返回结果。
L
lwx1059628 已提交
5740

5741 5742 5743 5744
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[isCommunicationDeviceActive](#iscommunicationdeviceactive9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
5745 5746 5747

**参数:**

5748 5749 5750 5751 5752 5753 5754 5755 5756
| 参数名     | 类型                                  | 必填 | 说明               |
| ---------- | ------------------------------------- | ---- | ------------------ |
| deviceType | [ActiveDeviceType](#activedevicetype) | 是   | 活跃音频设备类型。 |

**返回值:**

| Type                   | Description                     |
| ---------------------- | ------------------------------- |
| Promise&lt;boolean&gt; | Promise回调返回设备的激活状态。 |
L
lwx1059628 已提交
5757 5758 5759

**示例:**

J
jiao_yanlin 已提交
5760
```js
5761 5762 5763
audioManager.isDeviceActive(audio.ActiveDeviceType.SPEAKER).then((value) => {
  console.info(`Promise returned to indicate that the active status of the device is obtained ${value}.`);
});
L
lwx1059628 已提交
5764 5765
```

5766
### setMicrophoneMute<sup>(deprecated)</sup>
L
lwx1059628 已提交
5767

5768
setMicrophoneMute(mute: boolean, callback: AsyncCallback&lt;void&gt;): void
L
lwx1059628 已提交
5769

5770
设置麦克风静音状态,使用callback方式异步返回结果。
L
lwx1059628 已提交
5771

5772 5773 5774 5775 5776 5777
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[setMicrophoneMute](#setmicrophonemute9)替代。

**需要权限:** ohos.permission.MICROPHONE

**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
5778 5779 5780

**参数:**

5781 5782 5783 5784
| 参数名   | 类型                      | 必填 | 说明                                          |
| -------- | ------------------------- | ---- | --------------------------------------------- |
| mute     | boolean                   | 是   | 待设置的静音状态,true为静音,false为非静音。 |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调返回设置成功或失败。                      |
L
lwx1059628 已提交
5785 5786 5787

**示例:**

J
jiao_yanlin 已提交
5788
```js
5789 5790 5791 5792
audioManager.setMicrophoneMute(true, (err) => {
  if (err) {
    console.error(`Failed to mute the microphone. ${err}`);
    return;
J
jiao_yanlin 已提交
5793
  }
5794
  console.info('Callback invoked to indicate that the microphone is muted.');
L
lwx1059628 已提交
5795
});
5796 5797
```

5798
### setMicrophoneMute<sup>(deprecated)</sup>
5799

5800
setMicrophoneMute(mute: boolean): Promise&lt;void&gt;
5801

5802
设置麦克风静音状态,使用Promise方式异步返回结果。
5803

5804 5805 5806 5807 5808 5809
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[setMicrophoneMute](#setmicrophonemute9)替代。

**需要权限:** ohos.permission.MICROPHONE

**系统能力:** SystemCapability.Multimedia.Audio.Device
5810

5811
**参数:**
5812

5813 5814 5815
| 参数名 | 类型    | 必填 | 说明                                          |
| ------ | ------- | ---- | --------------------------------------------- |
| mute   | boolean | 是   | 待设置的静音状态,true为静音,false为非静音。 |
5816

5817
**返回值:**
5818

5819 5820 5821
| 类型                | 说明                            |
| ------------------- | ------------------------------- |
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |
5822

5823
**示例:**
5824

5825 5826 5827 5828 5829
```js
audioManager.setMicrophoneMute(true).then(() => {
  console.info('Promise returned to indicate that the microphone is muted.');
});
```
5830

5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842
### isMicrophoneMute<sup>(deprecated)</sup>

isMicrophoneMute(callback: AsyncCallback&lt;boolean&gt;): void

获取麦克风静音状态,使用callback方式异步返回结果。

> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[isMicrophoneMute](#ismicrophonemute9)替代。

**需要权限:** ohos.permission.MICROPHONE

**系统能力:** SystemCapability.Multimedia.Audio.Device
5843 5844 5845

**参数:**

5846 5847 5848
| 参数名   | 类型                         | 必填 | 说明                                                    |
| -------- | ---------------------------- | ---- | ------------------------------------------------------- |
| callback | AsyncCallback&lt;boolean&gt; | 是   | 回调返回系统麦克风静音状态,true为静音,false为非静音。 |
5849 5850 5851 5852

**示例:**

```js
5853
audioManager.isMicrophoneMute((err, value) => {
5854
  if (err) {
5855
    console.error(`Failed to obtain the mute status of the microphone. ${err}`);
5856 5857
    return;
  }
5858
  console.info(`Callback invoked to indicate that the mute status of the microphone is obtained ${value}.`);
5859 5860 5861
});
```

5862
### isMicrophoneMute<sup>(deprecated)</sup>
5863

5864
isMicrophoneMute(): Promise&lt;boolean&gt;
5865

5866
获取麦克风静音状态,使用Promise方式异步返回结果。
5867

5868 5869
> **说明:**
>  从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[isMicrophoneMute](#ismicrophonemute9)替代。
5870

5871
**需要权限:** ohos.permission.MICROPHONE
5872

5873
**系统能力:** SystemCapability.Multimedia.Audio.Device
5874 5875 5876

**返回值:**

5877 5878 5879
| 类型                   | 说明                                                         |
| ---------------------- | ------------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回系统麦克风静音状态,true为静音,false为非静音。 |
5880 5881 5882 5883

**示例:**

```js
5884 5885
audioManager.isMicrophoneMute().then((value) => {
  console.info(`Promise returned to indicate that the mute status of the microphone is obtained ${value}.`);
5886 5887 5888
});
```

5889
### on('volumeChange')<sup>(deprecated)</sup>
5890

5891
on(type: 'volumeChange', callback: Callback\<VolumeEvent>): void
5892

5893 5894
> **说明:**
> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeManager中的[on](#on9)替代。
5895

5896 5897 5898 5899 5900 5901 5902
监听系统音量变化事件。

**系统接口:** 该接口为系统接口

目前此订阅接口在单进程多AudioManager实例的使用场景下,仅最后一个实例的订阅生效,其他实例的订阅会被覆盖(即使最后一个实例没有进行订阅),因此推荐使用单一AudioManager实例进行开发。

**系统能力:** SystemCapability.Multimedia.Audio.Volume
5903 5904 5905

**参数:**

5906 5907 5908 5909
| 参数名   | 类型                                   | 必填 | 说明                                                         |
| -------- | -------------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                                 | 是   | 事件回调类型,支持的事件为:'volumeChange'(系统音量变化事件,检测到系统音量改变时,触发该事件)。 |
| callback | Callback<[VolumeEvent](#volumeevent8)> | 是   | 回调方法。                                                   |
5910 5911 5912 5913

**示例:**

```js
5914 5915 5916 5917
audioManager.on('volumeChange', (volumeEvent) => {
  console.info(`VolumeType of stream: ${volumeEvent.volumeType} `);
  console.info(`Volume level: ${volumeEvent.volume} `);
  console.info(`Whether to updateUI: ${volumeEvent.updateUi} `);
5918 5919 5920
});
```

5921
### on('ringerModeChange')<sup>(deprecated)</sup>
5922

5923
on(type: 'ringerModeChange', callback: Callback\<AudioRingMode>): void
5924

5925
监听铃声模式变化事件。
5926

5927
> **说明:**
5928
> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[on('ringerModeChange')](#onringermodechange9)替代。
5929

5930
**系统接口:** 该接口为系统接口
5931

5932 5933 5934 5935 5936 5937 5938 5939
**系统能力:** SystemCapability.Multimedia.Audio.Communication

**参数:**

| 参数名   | 类型                                      | 必填 | 说明                                                         |
| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                                    | 是   | 事件回调类型,支持的事件为:'ringerModeChange'(铃声模式变化事件,检测到铃声模式改变时,触发该事件)。 |
| callback | Callback<[AudioRingMode](#audioringmode)> | 是   | 回调方法。                                                   |
5940 5941 5942 5943

**示例:**

```js
5944 5945
audioManager.on('ringerModeChange', (ringerMode) => {
  console.info(`Updated ringermode: ${ringerMode}`);
5946 5947 5948
});
```

5949
### on('deviceChange')<sup>(deprecated)</sup>
5950

5951
on(type: 'deviceChange', callback: Callback<DeviceChangeAction\>): void
5952

5953
设备更改。音频设备连接状态变化。
5954

5955 5956 5957 5958
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[on](#on9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Device
5959 5960 5961

**参数:**

5962 5963 5964 5965
| 参数名   | 类型                                                 | 必填 | 说明                                       |
| :------- | :--------------------------------------------------- | :--- | :----------------------------------------- |
| type     | string                                               | 是   | 订阅的事件的类型。支持事件:'deviceChange' |
| callback | Callback<[DeviceChangeAction](#devicechangeaction)\> | 是   | 获取设备更新详情。                         |
5966 5967 5968 5969

**示例:**

```js
5970 5971 5972 5973 5974
audioManager.on('deviceChange', (deviceChanged) => {
  console.info(`device change type : ${deviceChanged.type} `);
  console.info(`device descriptor size : ${deviceChanged.deviceDescriptors.length} `);
  console.info(`device change descriptor : ${deviceChanged.deviceDescriptors[0].deviceRole} `);
  console.info(`device change descriptor : ${deviceChanged.deviceDescriptors[0].deviceType} `);
5975 5976 5977
});
```

5978
### off('deviceChange')<sup>(deprecated)</sup>
5979

5980
off(type: 'deviceChange', callback?: Callback<DeviceChangeAction\>): void
5981

5982
取消订阅音频设备连接变化事件。
5983

5984 5985
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[off](#off9)替代。
5986

5987
**系统能力:** SystemCapability.Multimedia.Audio.Device
5988

5989 5990 5991 5992 5993 5994
**参数:**

| 参数名   | 类型                                                | 必填 | 说明                                       |
| -------- | --------------------------------------------------- | ---- | ------------------------------------------ |
| type     | string                                              | 是   | 订阅的事件的类型。支持事件:'deviceChange' |
| callback | Callback<[DeviceChangeAction](#devicechangeaction)> | 否   | 获取设备更新详情。                         |
5995 5996 5997 5998

**示例:**

```js
5999 6000
audioManager.off('deviceChange', (deviceChanged) => {
  console.info('Should be no callback.');
6001 6002 6003
});
```

6004
### on('interrupt')<sup>(deprecated)</sup>
6005

6006
on(type: 'interrupt', interrupt: AudioInterrupt, callback: Callback\<InterruptAction>): void
6007

6008
请求焦点并开始监听音频打断事件(当应用程序的音频被另一个播放事件中断,回调通知此应用程序)。
6009

6010 6011 6012 6013
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃。

**系统能力:** SystemCapability.Multimedia.Audio.Renderer
6014 6015 6016

**参数:**

6017 6018 6019 6020 6021
| 参数名    | 类型                                          | 必填 | 说明                                                         |
| --------- | --------------------------------------------- | ---- | ------------------------------------------------------------ |
| type      | string                                        | 是   | 音频打断事件回调类型,支持的事件为:'interrupt'(多应用之间第二个应用会打断第一个应用,触发该事件)。 |
| interrupt | AudioInterrupt                                | 是   | 音频打断事件类型的参数。                                     |
| callback  | Callback<[InterruptAction](#interruptaction)> | 是   | 音频打断事件回调方法。                                       |
6022 6023 6024 6025

**示例:**

```js
6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038
let interAudioInterrupt = {
  streamUsage:2,
  contentType:0,
  pauseWhenDucked:true
};
audioManager.on('interrupt', interAudioInterrupt, (InterruptAction) => {
  if (InterruptAction.actionType === 0) {
    console.info('An event to gain the audio focus starts.');
    console.info(`Focus gain event: ${InterruptAction} `);
  }
  if (InterruptAction.actionType === 1) {
    console.info('An audio interruption event starts.');
    console.info(`Audio interruption event: ${InterruptAction} `);
6039 6040 6041 6042
  }
});
```

6043
### off('interrupt')<sup>(deprecated)</sup>
6044

6045
off(type: 'interrupt', interrupt: AudioInterrupt, callback?: Callback\<InterruptAction>): void
6046

6047
取消监听音频打断事件(删除监听事件,取消打断)。
6048

6049 6050
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃。
6051

6052
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
6053

6054 6055 6056 6057 6058 6059 6060
**参数:**

| 参数名    | 类型                                          | 必填 | 说明                                                         |
| --------- | --------------------------------------------- | ---- | ------------------------------------------------------------ |
| type      | string                                        | 是   | 音频打断事件回调类型,支持的事件为:'interrupt'(多应用之间第二个应用会打断第一个应用,触发该事件)。 |
| interrupt | AudioInterrupt                                | 是   | 音频打断事件类型的参数。                                     |
| callback  | Callback<[InterruptAction](#interruptaction)> | 否   | 音频打断事件回调方法。                                       |
6061 6062 6063 6064

**示例:**

```js
6065 6066 6067 6068 6069 6070 6071 6072 6073 6074
let interAudioInterrupt = {
  streamUsage:2,
  contentType:0,
  pauseWhenDucked:true
};
audioManager.off('interrupt', interAudioInterrupt, (InterruptAction) => {
  if (InterruptAction.actionType === 0) {
      console.info('An event to release the audio focus starts.');
      console.info(`Focus release event: ${InterruptAction} `);
  }
6075 6076
});
```