js-apis-audio.md 261.6 KB
Newer Older
Z
zengyawen 已提交
1
# @ohos.multimedia.audio (音频管理)
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
> **说明:**
> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
14

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
| LOCAL_NETWORK_ID<sup>9+</sup>           | string    | 是   | 否   | 本地设备网络id。<br/>此接口为系统接口。<br> **系统能力:** SystemCapability.Multimedia.Audio.Device  |
26
| DEFAULT_VOLUME_GROUP_ID<sup>9+</sup>    | number    | 是   | 否   | 默认音量组id。<br> **系统能力:** SystemCapability.Multimedia.Audio.Volume       |
27
| DEFAULT_INTERRUPT_GROUP_ID<sup>9+</sup> | number    | 是   | 否   | 默认音频中断组id。<br> **系统能力:** SystemCapability.Multimedia.Audio.Interrupt       |
28 29 30 31 32 33 34

**示例:**

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

const localNetworkId = audio.LOCAL_NETWORK_ID;
35 36 37 38
const defaultVolumeGroupId = audio.DEFAULT_VOLUME_GROUP_ID;
const defaultInterruptGroupId = audio.DEFAULT_INTERRUPT_GROUP_ID;
```

Z
zengyawen 已提交
39
## audio.getAudioManager
Z
zengyawen 已提交
40 41

getAudioManager(): AudioManager
M
mamingshuai 已提交
42 43 44

获取音频管理器。

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

M
mamingshuai 已提交
47
**返回值:**
48

Z
zengyawen 已提交
49 50
| 类型                          | 说明         |
| ----------------------------- | ------------ |
Z
zengyawen 已提交
51
| [AudioManager](#audiomanager) | 音频管理类。 |
M
mamingshuai 已提交
52 53

**示例:**
J
jiao_yanlin 已提交
54
```js
J
jiao_yanlin 已提交
55
let audioManager = audio.getAudioManager();
M
mamingshuai 已提交
56 57
```

Z
zengyawen 已提交
58 59
## audio.createAudioRenderer<sup>8+</sup>

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

62
获取音频渲染器。使用callback方式异步返回结果。
Z
zengyawen 已提交
63 64 65

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

66
**参数:**
Z
zengyawen 已提交
67

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

**示例:**

J
jiao_yanlin 已提交
75
```js
76
import featureAbility from '@ohos.ability.featureAbility';
77
import fs from '@ohos.file.fs';
L
lwx1059628 已提交
78
import audio from '@ohos.multimedia.audio';
79

J
jiao_yanlin 已提交
80
let audioStreamInfo = {
J
jiao_yanlin 已提交
81 82 83 84
  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 已提交
85 86
}

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

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

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

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

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

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

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

**参数:**

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

**返回值:**

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

**示例:**

J
jiao_yanlin 已提交
130
```js
131
import featureAbility from '@ohos.ability.featureAbility';
132
import fs from '@ohos.file.fs';
L
lwx1059628 已提交
133 134
import audio from '@ohos.multimedia.audio';

J
jiao_yanlin 已提交
135
let audioStreamInfo = {
J
jiao_yanlin 已提交
136 137 138 139
  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 已提交
140 141
}

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

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

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

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

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

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

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

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

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

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

**示例:**

J
jiao_yanlin 已提交
181
```js
L
lwx1059628 已提交
182
import audio from '@ohos.multimedia.audio';
J
jiao_yanlin 已提交
183
let audioStreamInfo = {
J
jiao_yanlin 已提交
184 185 186 187
  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 已提交
188 189
}

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

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

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

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

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

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

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

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

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

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

**返回值:**

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

**示例:**

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

J
jiao_yanlin 已提交
237
let audioStreamInfo = {
J
jiao_yanlin 已提交
238 239 240 241
  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 已提交
242 243
}

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

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

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

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

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

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

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

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

273
**参数:**
274 275 276

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

**示例:**

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

J
jiao_yanlin 已提交
285
let audioRendererInfo = {
J
jiao_yanlin 已提交
286
  content : audio.ContentType.CONTENT_TYPE_SONIFICATION,
J
jiao_yanlin 已提交
287 288
  usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
  rendererFlags : 0
289
}
J
jiao_yanlin 已提交
290
let tonePlayer;
291

292 293 294 295 296 297 298 299 300 301 302 303 304 305 306
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;

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

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

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

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

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

**返回值:**

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

**示例:**

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

Z
zengyawen 已提交
340
## AudioVolumeType
M
mamingshuai 已提交
341

342
枚举,音频流类型。
M
mamingshuai 已提交
343

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

346
| 名称                         | 值      | 说明       |
Z
zengyawen 已提交
347 348 349 350
| ---------------------------- | ------ | ---------- |
| VOICE_CALL<sup>8+</sup>      | 0      | 语音电话。 |
| RINGTONE                     | 2      | 铃声。     |
| MEDIA                        | 3      | 媒体。     |
L
li-yifan2 已提交
351 352
| ALARM<sup>10+</sup>          | 4      | 闹钟。     |
| ACCESSIBILITY<sup>10+</sup>  | 5      | 无障碍。   |
Z
zengyawen 已提交
353
| VOICE_ASSISTANT<sup>8+</sup> | 9      | 语音助手。 |
L
li-yifan2 已提交
354
| ULTRASONIC<sup>10+</sup>     | 10     | 超声波。<br/>此接口为系统接口。|
355
| ALL<sup>9+</sup>             | 100    | 所有公共音频流。<br/>此接口为系统接口。|
Z
zengyawen 已提交
356

357 358 359 360 361 362 363 364
## InterruptRequestResultType<sup>9+</sup>

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

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

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

365
| 名称                         | 值      | 说明       |
366 367 368 369
| ---------------------------- | ------ | ---------- |
| INTERRUPT_REQUEST_GRANT      | 0      | 请求音频中断成功。 |
| INTERRUPT_REQUEST_REJECT     | 1      | 请求音频中断失败,可能具有较高优先级类型。 |

370
## InterruptMode<sup>9+</sup>
371

372
枚举,焦点模型。
373

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

376
| 名称                         | 值      | 说明       |
377
| ---------------------------- | ------ | ---------- |
378 379
| SHARE_MODE                   | 0      | 共享焦点模式。 |
| INDEPENDENT_MODE             | 1      | 独立焦点模式。 |
380

Z
zengyawen 已提交
381
## DeviceFlag
M
mamingshuai 已提交
382

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

385
**系统能力:** SystemCapability.Multimedia.Audio.Device
Z
zengyawen 已提交
386

387
| 名称                            |  值     | 说明                                              |
388
| ------------------------------- | ------ | ------------------------------------------------- |
389
| NONE_DEVICES_FLAG<sup>9+</sup>  | 0      | 无 <br/>此接口为系统接口。        |
390 391 392
| OUTPUT_DEVICES_FLAG             | 1      | 输出设备。 |
| INPUT_DEVICES_FLAG              | 2      | 输入设备。 |
| ALL_DEVICES_FLAG                | 3      | 所有设备。 |
393 394 395
| 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 已提交
396 397

## DeviceRole
M
mamingshuai 已提交
398

399
枚举,设备角色。
M
mamingshuai 已提交
400

401
**系统能力:** SystemCapability.Multimedia.Audio.Device
Z
zengyawen 已提交
402

403
| 名称          |  值    | 说明           |
Z
zengyawen 已提交
404 405 406
| ------------- | ------ | -------------- |
| INPUT_DEVICE  | 1      | 输入设备角色。 |
| OUTPUT_DEVICE | 2      | 输出设备角色。 |
M
mamingshuai 已提交
407

Z
zengyawen 已提交
408 409 410
## DeviceType

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

412
**系统能力:** SystemCapability.Multimedia.Audio.Device
Z
zengyawen 已提交
413

414
| 名称                 | 值     | 说明                                                      |
415 416 417 418 419 420 421 422 423 424 425
| ---------------------| ------ | --------------------------------------------------------- |
| 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 已提交
426

427
## CommunicationDeviceType<sup>9+</sup>
428 429 430

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

431
**系统能力:** SystemCapability.Multimedia.Audio.Communication
432

433
| 名称          | 值     | 说明          |
434 435 436
| ------------- | ------ | -------------|
| SPEAKER       | 2      | 扬声器。      |

Z
zengyawen 已提交
437
## AudioRingMode
438 439 440

枚举,铃声模式。

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

443
| 名称                |  值    | 说明       |
Z
zengyawen 已提交
444 445 446 447 448 449 450 451 452
| ------------------- | ------ | ---------- |
| RINGER_MODE_SILENT  | 0      | 静音模式。 |
| RINGER_MODE_VIBRATE | 1      | 震动模式。 |
| RINGER_MODE_NORMAL  | 2      | 响铃模式。 |

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

枚举,音频采样格式。

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

455
| 名称                                |  值    | 说明                       |
456 457 458 459 460 461
| ---------------------------------- | ------ | -------------------------- |
| 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>由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。|
J
jiao_yanlin 已提交
462
| SAMPLE_FORMAT_F32LE<sup>9+</sup>   | 4      | 带符号的32位浮点数,小尾数。 <br>由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。|
Z
zengyawen 已提交
463

464 465 466 467
## AudioErrors<sup>9+</sup>

枚举,音频错误码。

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

470
| 名称                 | 值      | 说明         |
471 472 473 474 475 476
| ---------------------| --------| ----------------- |
| ERROR_INVALID_PARAM  | 6800101 | 无效入参。         |
| ERROR_NO_MEMORY      | 6800102 | 分配内存失败。     |
| ERROR_ILLEGAL_STATE  | 6800103 | 状态不支持。       |
| ERROR_UNSUPPORTED    | 6800104 | 参数选项不支持。    |
| ERROR_TIMEOUT        | 6800105 | 处理超时。         |
477
| ERROR_STREAM_LIMIT   | 6800201 | 音频流数量达到限制。|
478
| ERROR_SYSTEM         | 6800301 | 系统处理异常。     |
479

Z
zengyawen 已提交
480 481 482 483
## AudioChannel<sup>8+</sup>

枚举, 音频声道。

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

486
| 名称      |  值       | 说明     |
Z
zengyawen 已提交
487
| --------- | -------- | -------- |
J
jiaoyanlin3 已提交
488 489
| CHANNEL_1 | 0x1 << 0 | 第一声道。 |
| CHANNEL_2 | 0x1 << 1 | 第二声道。 |
Z
zengyawen 已提交
490 491 492

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

J
jiao_yanlin 已提交
493
枚举,音频采样率,具体设备支持的采样率规格会存在差异。
Z
zengyawen 已提交
494

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

497
| 名称              |  值    | 说明            |
Z
zengyawen 已提交
498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514
| ----------------- | ------ | --------------- |
| 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>

枚举,音频编码类型。

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

517
| 名称                  |  值    | 说明      |
Z
zengyawen 已提交
518 519 520 521
| --------------------- | ------ | --------- |
| ENCODING_TYPE_INVALID | -1     | 无效。    |
| ENCODING_TYPE_RAW     | 0      | PCM编码。 |

L
lwx1059628 已提交
522
## ContentType
Z
zengyawen 已提交
523 524 525

枚举,音频内容类型。

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

528
| 名称                               |  值    | 说明       |
L
lwx1059628 已提交
529 530 531 532 533
| ---------------------------------- | ------ | ---------- |
| CONTENT_TYPE_UNKNOWN               | 0      | 未知类型。 |
| CONTENT_TYPE_SPEECH                | 1      | 语音。     |
| CONTENT_TYPE_MUSIC                 | 2      | 音乐。     |
| CONTENT_TYPE_MOVIE                 | 3      | 电影。     |
534
| CONTENT_TYPE_SONIFICATION          | 4      | 通知音。   |
L
lwx1059628 已提交
535
| CONTENT_TYPE_RINGTONE<sup>8+</sup> | 5      | 铃声。     |
L
li-yifan2 已提交
536
| CONTENT_TYPE_ULTRASONIC<sup>10+</sup>| 9      | 超声波。<br/>此接口为系统接口。|
L
lwx1059628 已提交
537
## StreamUsage
Z
zengyawen 已提交
538 539 540

枚举,音频流使用类型。

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

543
| 名称                                      |  值    | 说明       |
544 545
| ------------------------------------------| ------ | ---------- |
| STREAM_USAGE_UNKNOWN                      | 0      | 未知类型。 |
S
songshenke 已提交
546 547
| STREAM_USAGE_MEDIA                        | 1      | 媒体。     |
| STREAM_USAGE_MUSIC<sup>10+</sup>          | 1      | 音乐。     |
L
li-yifan2 已提交
548
| STREAM_USAGE_VOICE_COMMUNICATION          | 2      | 语音通信。 | 
549
| STREAM_USAGE_VOICE_ASSISTANT<sup>9+</sup> | 3      | 语音播报。 |
L
li-yifan2 已提交
550
| STREAM_USAGE_ALARM<sup>10+</sup>          | 4      | 闹钟。     |
S
songshenke 已提交
551
| STREAM_USAGE_VOICE_MESSAGE<sup>10+</sup>  | 5      | 语音消息。 |
552
| STREAM_USAGE_NOTIFICATION_RINGTONE        | 6      | 通知铃声。 |
S
songshenke 已提交
553 554 555 556 557 558 559 560 561 562 563 564
| STREAM_USAGE_RINGTONE<sup>10+</sup>       | 6      | 铃声。     |
| STREAM_USAGE_NOTIFICATION<sup>10+</sup>   | 7      | 通知。     |
| STREAM_USAGE_ACCESSIBILITY<sup>10+</sup>  | 8      | 无障碍。   |
| STREAM_USAGE_SYSTEM<sup>10+</sup>         | 9      | 系统音(如屏幕锁定或按键音)。<br/>此接口为系统接口。 |
| STREAM_USAGE_MOVIE<sup>10+</sup>          | 10     | 电影或视频。|
| STREAM_USAGE_GAME<sup>10+</sup>           | 11     | 游戏音效。  |
| STREAM_USAGE_AUDIOBOOK<sup>10+</sup>      | 12     | 有声读物。  |
| STREAM_USAGE_NAVIGATION<sup>10+</sup>     | 13     | 导航。     |
| STREAM_USAGE_DTMF<sup>10+</sup>           | 14     | 拨号音。<br/>此接口为系统接口。 |
| STREAM_USAGE_ENFORCED_TONE<sup>10+</sup>  | 15     | 强制音(如相机快门音)。<br/>此接口为系统接口。 |
| STREAM_USAGE_ULTRASONIC<sup>10+</sup>     | 16     | 超声波。<br/>此接口为系统接口。 |

Z
zengyawen 已提交
565

566
## InterruptRequestType<sup>9+</sup>
567

568
枚举,音频中断请求类型。
569

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

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

574
| 名称                               |  值     | 说明                       |
575 576
| ---------------------------------- | ------ | ------------------------- |
| INTERRUPT_REQUEST_TYPE_DEFAULT     | 0      |  默认类型,可中断音频请求。  |
577

Z
zengyawen 已提交
578 579 580 581
## AudioState<sup>8+</sup>

枚举,音频状态。

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

584
| 名称           | 值     | 说明             |
Z
zengyawen 已提交
585 586 587 588 589 590 591 592 593
| -------------- | ------ | ---------------- |
| STATE_INVALID  | -1     | 无效状态。       |
| STATE_NEW      | 0      | 创建新实例状态。 |
| STATE_PREPARED | 1      | 准备状态。       |
| STATE_RUNNING  | 2      | 可运行状态。     |
| STATE_STOPPED  | 3      | 停止状态。       |
| STATE_RELEASED | 4      | 释放状态。       |
| STATE_PAUSED   | 5      | 暂停状态。       |

Q
Qin Peng 已提交
594 595 596 597 598 599 600 601 602 603 604
## AudioEffectMode<sup>10+</sup>

枚举,音效模式。

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

| 名称               | 值     | 说明       |
| ------------------ | ------ | ---------- |
| EFFECT_NONE        | 0      | 关闭音效。 |
| EFFECT_DEFAULT     | 1      | 默认音效。 |

Z
zengyawen 已提交
605 606
## AudioRendererRate<sup>8+</sup>

L
lwx1059628 已提交
607
枚举,音频渲染速度。
Z
zengyawen 已提交
608

609
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
610

611
| 名称               | 值     | 说明       |
Z
zengyawen 已提交
612 613 614 615 616
| ------------------ | ------ | ---------- |
| RENDER_RATE_NORMAL | 0      | 正常速度。 |
| RENDER_RATE_DOUBLE | 1      | 2倍速。    |
| RENDER_RATE_HALF   | 2      | 0.5倍数。  |

L
lwx1059628 已提交
617
## InterruptType
Z
zengyawen 已提交
618 619 620

枚举,中断类型。

621
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
622

623
| 名称                 |  值     | 说明                   |
Z
zengyawen 已提交
624 625 626 627
| -------------------- | ------ | ---------------------- |
| INTERRUPT_TYPE_BEGIN | 1      | 音频播放中断事件开始。 |
| INTERRUPT_TYPE_END   | 2      | 音频播放中断事件结束。 |

L
lwx1059628 已提交
628
## InterruptForceType<sup>9+</sup>
Z
zengyawen 已提交
629 630 631

枚举,强制打断类型。

632
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
633

634
| 名称            |  值    | 说明                                 |
Z
zengyawen 已提交
635 636 637 638
| --------------- | ------ | ------------------------------------ |
| INTERRUPT_FORCE | 0      | 由系统进行操作,强制打断音频播放。   |
| INTERRUPT_SHARE | 1      | 由应用进行操作,可以选择打断或忽略。 |

L
lwx1059628 已提交
639
## InterruptHint
Z
zengyawen 已提交
640 641 642

枚举,中断提示。

643
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
644

645
| 名称                               |  值     | 说明                                         |
L
lwx1059628 已提交
646 647 648 649 650 651 652
| ---------------------------------- | ------ | -------------------------------------------- |
| 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 已提交
653 654 655 656 657

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

音频流信息。

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

660 661 662 663 664 665
| 名称         | 类型                                               | 必填 | 说明               |
| ------------ | ------------------------------------------------- | ---- | ------------------ |
| samplingRate | [AudioSamplingRate](#audiosamplingrate8)          | 是   | 音频文件的采样率。 |
| channels     | [AudioChannel](#audiochannel8)                    | 是   | 音频文件的通道数。 |
| sampleFormat | [AudioSampleFormat](#audiosampleformat8)          | 是   | 音频采样格式。     |
| encodingType | [AudioEncodingType](#audioencodingtype8)          | 是   | 音频编码格式。     |
Z
zengyawen 已提交
666 667 668

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

L
lwx1059628 已提交
669
音频渲染器信息。
Z
zengyawen 已提交
670

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

673
| 名称          | 类型                        | 必填  | 说明             |
L
lwx1059628 已提交
674
| ------------- | --------------------------- | ---- | ---------------- |
S
songshenke 已提交
675
| content       | [ContentType](#contenttype) | 否   | 媒体类型。<br>API version 8、9为必填参数,从API version 10开始,变更为可选参数。 |
L
lwx1059628 已提交
676 677
| usage         | [StreamUsage](#streamusage) | 是   | 音频流使用类型。 |
| rendererFlags | number                      | 是   | 音频渲染器标志。 |
Z
zengyawen 已提交
678

679 680 681 682
## InterruptResult<sup>9+</sup>

音频中断结果。

683
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
684 685 686 687 688 689 690 691

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

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

Z
zengyawen 已提交
692 693
## AudioRendererOptions<sup>8+</sup>

L
lwx1059628 已提交
694
音频渲染器选项信息。
Z
zengyawen 已提交
695

696
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
697

698
| 名称         | 类型                                     | 必填  | 说明             |
Z
zengyawen 已提交
699 700
| ------------ | ---------------------------------------- | ---- | ---------------- |
| streamInfo   | [AudioStreamInfo](#audiostreaminfo8)     | 是   | 表示音频流信息。 |
L
lwx1059628 已提交
701
| rendererInfo | [AudioRendererInfo](#audiorendererinfo8) | 是   | 表示渲染器信息。 |
702 703 704 705 706 707 708 709 710 711 712 713
| privacyType<sup>10+</sup> | [AudioPrivacyType](#audioprivacytype) | 否 | 表示音频流是否可以被其他应用录制,默认值为0。<br/>**系统能力:** SystemCapability.Multimedia.Audio.PlaybackCapture |

## AudioPrivacyType<sup>10+</sup><a name="audioprivacytype"></a>

枚举类型,用于标识对应播放音频流是否支持被其他应用录制。

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

| 名称                 | 值   | 说明                             |
| -------------------- | ---- | -------------------------------- |
| PRIVACY_TYPE_PUBLIC  | 0    | 表示音频流可以被其他应用录制。   |
| PRIVACY_TYPE_PRIVATE | 1    | 表示音频流不可以被其他应用录制。 |
Z
zengyawen 已提交
714

L
lwx1059628 已提交
715
## InterruptEvent<sup>9+</sup>
Z
zengyawen 已提交
716 717 718

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

719
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
720

721
| 名称      | 类型                                       |必填   | 说明                                 |
Z
zengyawen 已提交
722
| --------- | ------------------------------------------ | ---- | ------------------------------------ |
L
lwx1059628 已提交
723 724 725
| eventType | [InterruptType](#interrupttype)            | 是   | 中断事件类型,开始或是结束。         |
| forceType | [InterruptForceType](#interruptforcetype9) | 是   | 操作是由系统执行或是由应用程序执行。 |
| hintType  | [InterruptHint](#interrupthint)            | 是   | 中断提示。                           |
Z
zengyawen 已提交
726

J
jiaoyanlin3 已提交
727
## VolumeEvent<sup>9+</sup>
Z
zengyawen 已提交
728 729 730

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

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

733
| 名称       | 类型                                | 必填   | 说明                                                     |
Z
zengyawen 已提交
734
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
J
jiaoyanlin3 已提交
735 736 737 738 739
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                               |
| volume     | number                              | 是   | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。     |
| updateUi   | boolean                             | 是   | 在UI中显示音量变化。                                        |
| volumeGroupId | number                           | 是   | 音量组id。可用于getGroupManager入参。<br/>此接口为系统接口。  |
| networkId  | string                              | 是   | 网络id。<br/>此接口为系统接口。                             |
W
wangtao 已提交
740

Z
zengyawen 已提交
741 742 743 744
## MicStateChangeEvent<sup>9+</sup>

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

745
**系统能力:** SystemCapability.Multimedia.Audio.Device
Z
zengyawen 已提交
746 747

| 名称       | 类型                                | 必填 | 说明                                                     |
Z
zengyawen 已提交
748
| ---------- | ----------------------------------- | ---- |-------------------------------------------------------- |
Z
zengyawen 已提交
749 750
| mute | boolean | 是   | 回调返回系统麦克风静音状态,true为静音,false为非静音。          |

W
wangtao 已提交
751 752 753 754
## ConnectType<sup>9+</sup>

枚举,设备连接类型。

J
jiao_yanlin 已提交
755 756
**系统接口:** 该接口为系统接口

757
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
758

759
| 名称                            |  值     | 说明                   |
W
wangtao 已提交
760 761 762 763
| :------------------------------ | :----- | :--------------------- |
| CONNECT_TYPE_LOCAL              | 1      | 本地设备。         |
| CONNECT_TYPE_DISTRIBUTED        | 2      | 分布式设备。            |

764 765 766 767 768 769 770 771
## VolumeGroupInfos<sup>9+</sup>

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

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

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

W
wangtao 已提交
772 773 774 775
## VolumeGroupInfo<sup>9+</sup>

音量组信息。

776
**系统接口:** 该接口为系统接口
W
wangtao 已提交
777

778
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
779 780 781 782 783 784

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

L
lwx1059628 已提交
788 789 790 791
## DeviceChangeAction

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

792
**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
793 794 795

| 名称              | 类型                                              | 必填 | 说明               |
| :---------------- | :------------------------------------------------ | :--- | :----------------- |
796 797
| type              | [DeviceChangeType](#devicechangetype)             | 是   | 设备连接状态变化。 |
| deviceDescriptors | [AudioDeviceDescriptors](#audiodevicedescriptors) | 是   | 设备信息。         |
L
lwx1059628 已提交
798 799 800 801 802

## DeviceChangeType

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

803
**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
804

805 806 807 808
| 名称       | 值   | 说明           |
| :--------- | :--- | :------------- |
| CONNECT    | 0    | 设备连接。     |
| DISCONNECT | 1    | 断开设备连接。 |
L
lwx1059628 已提交
809

Z
zengyawen 已提交
810 811 812 813
## AudioCapturerOptions<sup>8+</sup>

音频采集器选项信息。

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

816 817 818 819 820
| 名称                                | 类型                                                      | 必填 | 说明                                                         |
| ----------------------------------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| streamInfo                          | [AudioStreamInfo](#audiostreaminfo8)                      | 是   | 表示音频流信息。                                             |
| capturerInfo                        | [AudioCapturerInfo](#audiocapturerinfo)                   | 是   | 表示采集器信息。                                             |
| playbackCaptureConfig<sup>10+</sup> | [AudioPlaybackCaptureConfig](#audioplaybackcaptureconfig) | 否   | 音频内录的配置信息。<br/>**系统能力:** SystemCapability.Multimedia.Audio.PlaybackCapture |
Z
zengyawen 已提交
821

L
lwx1059628 已提交
822 823 824 825 826 827 828 829 830 831 832 833 834 835 836
## 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>

枚举,音源类型。

837
**系统能力:** SystemCapability.Multimedia.Audio.Core
L
lwx1059628 已提交
838

839
| 名称                                         |  值     | 说明                   |
840 841 842 843
| :------------------------------------------- | :----- | :--------------------- |
| SOURCE_TYPE_INVALID                          | -1     | 无效的音频源。         |
| SOURCE_TYPE_MIC                              | 0      | Mic音频源。            |
| SOURCE_TYPE_VOICE_RECOGNITION<sup>9+</sup>   | 1      | 语音识别源。        |
844
| SOURCE_TYPE_PLAYBACK_CAPTURE<sup>10+</sup> | 2 | 播放音频流(内录)录制音频源。<br/>**系统能力:** SystemCapability.Multimedia.Audio.PlaybackCapture |
845
| SOURCE_TYPE_VOICE_COMMUNICATION              | 7      | 语音通话场景的音频源。 |
L
lwx1059628 已提交
846

847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870
## AudioPlaybackCaptureConfig<sup>10+</sup><a name="audioplaybackcaptureconfig"></a>

播放音频流录制(内录)的配置信息。

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

| 名称          | 类型                                          | 必填 | 说明                             |
| ------------- | --------------------------------------------- | ---- | -------------------------------- |
| filterOptions | [CaptureFilterOptions](#capturefilteroptions) | 是   | 需要录制的播放音频流的筛选信息。 |

## CaptureFilterOptions<sup>10+</sup><a name="capturefilteroptions"></a>

待录制播放音频流的筛选信息。

**需要权限:** ohos.permission.CAPTURE_VOICE_DOWNLINK_AUDIO

当应用指定录制的StreamUsage值中包含SOURCE_TYPE_VOICE_COMMUNICATION的播放音频流时,需要校验应用是否拥有该权限。

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

| 名称   | 类型                               | 必填 | 说明                                                         |
| ------ | ---------------------------------- | ---- | ------------------------------------------------------------ |
| usages | Array<[StreamUsage](#streamusage)> | 是   | 指定需要录制的播放音频流的[StreamUsage](#streamusage)类型。可同时指定0个或多个StreamUsage。Array为空时,默认录制StreamUsage为STREAM_USAGE_MEDIA的播放音频流。 |

L
lwx1059628 已提交
871 872 873 874
## AudioScene<sup>8+</sup><a name="audioscene"></a>

枚举,音频场景。

875
**系统能力:** SystemCapability.Multimedia.Audio.Communication
L
lwx1059628 已提交
876

877
| 名称                   |  值     | 说明                                          |
Z
zengyawen 已提交
878 879
| :--------------------- | :----- | :-------------------------------------------- |
| AUDIO_SCENE_DEFAULT    | 0      | 默认音频场景。                                |
880 881
| AUDIO_SCENE_RINGING    | 1      | 响铃模式。<br/>此接口为系统接口。 |
| AUDIO_SCENE_PHONE_CALL | 2      | 电话模式。<br/>此接口为系统接口。 |
Z
zengyawen 已提交
882
| AUDIO_SCENE_VOICE_CHAT | 3      | 语音聊天模式。                                |
L
lwx1059628 已提交
883

W
wangzx0705 已提交
884
## VolumeAdjustType<sup>10+</sup>
W
wangzx0705 已提交
885

W
wangzx0705 已提交
886
枚举,音量调节类型。
W
wangzx0705 已提交
887 888 889 890 891

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

| 名称                   |  值     | 说明                                          |
| :--------------------- | :----- | :-------------------------------------------- |
W
wangzx0705 已提交
892 893
| VOLUME_UP    | 0      | 向上调节音量。     |
| VOLUME_DOWN    | 1      | 向下调节音量。 |
W
wangzx0705 已提交
894

Z
zengyawen 已提交
895
## AudioManager
M
mamingshuai 已提交
896

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

899
### setAudioParameter
M
mamingshuai 已提交
900

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

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

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

907
**需要权限:** ohos.permission.MODIFY_AUDIO_SETTINGS
908

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

M
mamingshuai 已提交
911 912
**参数:**

913 914 915 916 917
| 参数名   | 类型                      | 必填 | 说明                     |
| -------- | ------------------------- | ---- | ------------------------ |
| key      | string                    | 是   | 被设置的音频参数的键。   |
| value    | string                    | 是   | 被设置的音频参数的值。   |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调返回设置成功或失败。 |
918

M
mamingshuai 已提交
919 920
**示例:**

J
jiao_yanlin 已提交
921
```js
922
audioManager.setAudioParameter('key_example', 'value_example', (err) => {
J
jiao_yanlin 已提交
923
  if (err) {
924
    console.error(`Failed to set the audio parameter. ${err}`);
J
jiao_yanlin 已提交
925 926
    return;
  }
927
  console.info('Callback invoked to indicate a successful setting of the audio parameter.');
L
lwx1059628 已提交
928
});
M
mamingshuai 已提交
929 930
```

931
### setAudioParameter
M
mamingshuai 已提交
932

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

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

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

939
**需要权限:** ohos.permission.MODIFY_AUDIO_SETTINGS
940

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

M
mamingshuai 已提交
943 944
**参数:**

945 946 947 948
| 参数名 | 类型   | 必填 | 说明                   |
| ------ | ------ | ---- | ---------------------- |
| key    | string | 是   | 被设置的音频参数的键。 |
| value  | string | 是   | 被设置的音频参数的值。 |
M
mamingshuai 已提交
949 950 951

**返回值:**

952 953 954
| 类型                | 说明                            |
| ------------------- | ------------------------------- |
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |
M
mamingshuai 已提交
955 956 957

**示例:**

J
jiao_yanlin 已提交
958
```js
959 960
audioManager.setAudioParameter('key_example', 'value_example').then(() => {
  console.info('Promise returned to indicate a successful setting of the audio parameter.');
L
lwx1059628 已提交
961
});
M
mamingshuai 已提交
962 963
```

964
### getAudioParameter
Z
zengyawen 已提交
965

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

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

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

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

M
mamingshuai 已提交
974 975
**参数:**

976 977 978 979
| 参数名   | 类型                        | 必填 | 说明                         |
| -------- | --------------------------- | ---- | ---------------------------- |
| key      | string                      | 是   | 待获取的音频参数的键。       |
| callback | AsyncCallback&lt;string&gt; | 是   | 回调返回获取的音频参数的值。 |
980

M
mamingshuai 已提交
981 982
**示例:**

J
jiao_yanlin 已提交
983
```js
984
audioManager.getAudioParameter('key_example', (err, value) => {
J
jiao_yanlin 已提交
985
  if (err) {
986
    console.error(`Failed to obtain the value of the audio parameter. ${err}`);
J
jiao_yanlin 已提交
987 988
    return;
  }
989
  console.info(`Callback invoked to indicate that the value of the audio parameter is obtained ${value}.`);
L
lwx1059628 已提交
990
});
M
mamingshuai 已提交
991 992
```

993
### getAudioParameter
Z
zengyawen 已提交
994

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

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

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

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

M
mamingshuai 已提交
1003 1004
**参数:**

1005 1006 1007
| 参数名 | 类型   | 必填 | 说明                   |
| ------ | ------ | ---- | ---------------------- |
| key    | string | 是   | 待获取的音频参数的键。 |
M
mamingshuai 已提交
1008 1009 1010

**返回值:**

1011 1012 1013
| 类型                  | 说明                                |
| --------------------- | ----------------------------------- |
| Promise&lt;string&gt; | Promise回调返回获取的音频参数的值。 |
M
mamingshuai 已提交
1014 1015 1016

**示例:**

J
jiao_yanlin 已提交
1017
```js
1018 1019
audioManager.getAudioParameter('key_example').then((value) => {
  console.info(`Promise returned to indicate that the value of the audio parameter is obtained ${value}.`);
L
lwx1059628 已提交
1020
});
M
mamingshuai 已提交
1021 1022
```

1023
### setAudioScene<sup>8+</sup>
Z
zengyawen 已提交
1024

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

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

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

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

M
mamingshuai 已提交
1033 1034
**参数:**

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

M
mamingshuai 已提交
1040 1041
**示例:**

J
jiao_yanlin 已提交
1042
```js
1043
audioManager.setAudioScene(audio.AudioScene.AUDIO_SCENE_PHONE_CALL, (err) => {
J
jiao_yanlin 已提交
1044
  if (err) {
1045
    console.error(`Failed to set the audio scene mode.​ ${err}`);
J
jiao_yanlin 已提交
1046 1047
    return;
  }
1048
  console.info('Callback invoked to indicate a successful setting of the audio scene mode.');
L
lwx1059628 已提交
1049
});
M
mamingshuai 已提交
1050 1051
```

1052
### setAudioScene<sup>8+</sup>
Z
zengyawen 已提交
1053

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

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

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

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

M
mamingshuai 已提交
1062 1063
**参数:**

1064 1065 1066
| 参数名 | 类型                                 | 必填 | 说明           |
| :----- | :----------------------------------- | :--- | :------------- |
| scene  | <a href="#audioscene">AudioScene</a> | 是   | 音频场景模式。 |
M
mamingshuai 已提交
1067 1068 1069

**返回值:**

1070 1071 1072
| 类型           | 说明                 |
| :------------- | :------------------- |
| Promise<void\> | 用于返回结果的回调。 |
M
mamingshuai 已提交
1073 1074 1075

**示例:**

J
jiao_yanlin 已提交
1076
```js
1077 1078 1079 1080
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 已提交
1081
});
M
mamingshuai 已提交
1082 1083
```

1084
### getAudioScene<sup>8+</sup>
M
mamingshuai 已提交
1085

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

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

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

M
mamingshuai 已提交
1092 1093
**参数:**

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

M
mamingshuai 已提交
1098 1099
**示例:**

J
jiao_yanlin 已提交
1100
```js
1101
audioManager.getAudioScene((err, value) => {
J
jiao_yanlin 已提交
1102
  if (err) {
1103
    console.error(`Failed to obtain the audio scene mode.​ ${err}`);
J
jiao_yanlin 已提交
1104 1105
    return;
  }
1106
  console.info(`Callback invoked to indicate that the audio scene mode is obtained ${value}.`);
L
lwx1059628 已提交
1107
});
M
mamingshuai 已提交
1108 1109
```

1110
### getAudioScene<sup>8+</sup>
1111

1112
getAudioScene\(\): Promise<AudioScene\>
Z
zengyawen 已提交
1113

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

1116
**系统能力:** SystemCapability.Multimedia.Audio.Communication
M
mamingshuai 已提交
1117 1118 1119

**返回值:**

1120 1121 1122
| 类型                                          | 说明                         |
| :-------------------------------------------- | :--------------------------- |
| Promise<<a href="#audioscene">AudioScene</a>> | 用于返回音频场景模式的回调。 |
M
mamingshuai 已提交
1123 1124 1125

**示例:**

J
jiao_yanlin 已提交
1126
```js
1127 1128 1129 1130
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 已提交
1131
});
Z
zengyawen 已提交
1132 1133
```

1134
### getVolumeManager<sup>9+</sup>
1135

1136
getVolumeManager(): AudioVolumeManager
1137

1138
获取音频音量管理器。
1139

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

Z
zengyawen 已提交
1142 1143
**示例:**

J
jiao_yanlin 已提交
1144
```js
1145
let audioVolumeManager = audioManager.getVolumeManager();
1146 1147
```

1148
### getStreamManager<sup>9+</sup>
1149

1150
getStreamManager(): AudioStreamManager
1151

1152
获取音频流管理器。
1153

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

1156
**示例:**
1157

1158 1159 1160
```js
let audioStreamManager = audioManager.getStreamManager();
```
Z
zengyawen 已提交
1161

1162
### getRoutingManager<sup>9+</sup>
1163

1164
getRoutingManager(): AudioRoutingManager
1165

1166
获取音频路由设备管理器。
1167

1168
**系统能力:** SystemCapability.Multimedia.Audio.Device
1169 1170 1171

**示例:**

J
jiao_yanlin 已提交
1172
```js
1173
let audioRoutingManager = audioManager.getRoutingManager();
1174 1175
```

1176
### setVolume<sup>(deprecated)</sup>
1177

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

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

1182
> **说明:**
Z
zengyawen 已提交
1183
> 从 API version 7 开始支持,从 API version 9 开始废弃。建议使用AudioVolumeGroupManager中的[setVolume](#setvolume9)替代,替代接口能力仅对系统应用开放。
1184

1185
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
1186

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

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

Z
zengyawen 已提交
1191
**参数:**
1192

1193 1194 1195 1196 1197
| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
| volume     | number                              | 是   | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 |
| callback   | AsyncCallback&lt;void&gt;           | 是   | 回调表示成功还是失败。                                   |
1198 1199 1200

**示例:**

J
jiao_yanlin 已提交
1201
```js
1202
audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10, (err) => {
J
jiao_yanlin 已提交
1203
  if (err) {
1204
    console.error(`Failed to set the volume. ${err}`);
J
jiao_yanlin 已提交
1205 1206
    return;
  }
1207
  console.info('Callback invoked to indicate a successful volume setting.');
L
lwx1059628 已提交
1208
});
1209 1210
```

1211
### setVolume<sup>(deprecated)</sup>
1212

1213
setVolume(volumeType: AudioVolumeType, volume: number): Promise&lt;void&gt;
1214

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

1217
> **说明:**
Z
zengyawen 已提交
1218
> 从 API version 7 开始支持,从 API version 9 开始废弃。建议使用AudioVolumeGroupManager中的[setVolume](#setvolume9)替代,替代接口能力仅对系统应用开放。
1219

1220
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
1221

1222 1223 1224 1225 1226 1227 1228 1229 1230 1231
仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。

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

**参数:**

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

1233 1234
**返回值:**

1235 1236 1237
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
1238 1239 1240

**示例:**

J
jiao_yanlin 已提交
1241
```js
1242
audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10).then(() => {
1243
  console.info('Promise returned to indicate a successful volume setting.');
L
lwx1059628 已提交
1244
});
1245 1246
```

1247
### getVolume<sup>(deprecated)</sup>
1248

1249
getVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
1250

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

1253 1254 1255
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getVolume](#getvolume9)替代。

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

1258 1259
**参数:**

1260 1261 1262 1263
| 参数名     | 类型                                | 必填 | 说明               |
| ---------- | ----------------------------------- | ---- | ------------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。       |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回音量大小。 |
1264 1265 1266

**示例:**

J
jiao_yanlin 已提交
1267
```js
1268
audioManager.getVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
1269
  if (err) {
1270
    console.error(`Failed to obtain the volume. ${err}`);
J
jiao_yanlin 已提交
1271 1272
    return;
  }
1273
  console.info('Callback invoked to indicate that the volume is obtained.');
L
lwx1059628 已提交
1274
});
1275 1276
```

1277
### getVolume<sup>(deprecated)</sup>
1278

1279
getVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
1280

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

1283 1284 1285
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getVolume](#getvolume9)替代。

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

1288 1289
**参数:**

1290 1291 1292
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
1293 1294 1295

**返回值:**

1296 1297 1298
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回音量大小。 |
1299 1300 1301

**示例:**

J
jiao_yanlin 已提交
1302
```js
1303 1304
audioManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the volume is obtained ${value} .`);
L
lwx1059628 已提交
1305
});
1306 1307
```

1308
### getMinVolume<sup>(deprecated)</sup>
1309

1310
getMinVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
1311

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

1314 1315 1316
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getMinVolume](#getminvolume9)替代。

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

1319 1320
**参数:**

1321 1322 1323 1324
| 参数名     | 类型                                | 必填 | 说明               |
| ---------- | ----------------------------------- | ---- | ------------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。       |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回最小音量。 |
1325 1326 1327

**示例:**

J
jiao_yanlin 已提交
1328
```js
1329
audioManager.getMinVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
1330
  if (err) {
1331
    console.error(`Failed to obtain the minimum volume. ${err}`);
J
jiao_yanlin 已提交
1332 1333
    return;
  }
1334
  console.info(`Callback invoked to indicate that the minimum volume is obtained. ${value}`);
L
lwx1059628 已提交
1335
});
1336 1337
```

1338
### getMinVolume<sup>(deprecated)</sup>
1339

1340
getMinVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
1341

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

1344 1345 1346
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getMinVolume](#getminvolume9)替代。

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

1349 1350
**参数:**

1351 1352 1353
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
1354 1355 1356

**返回值:**

1357 1358 1359
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回最小音量。 |
1360 1361 1362

**示例:**

J
jiao_yanlin 已提交
1363
```js
1364 1365
audioManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promised returned to indicate that the minimum volume is obtained. ${value}`);
L
lwx1059628 已提交
1366
});
1367 1368
```

1369
### getMaxVolume<sup>(deprecated)</sup>
1370

1371
getMaxVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
1372

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

1375 1376 1377
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getMaxVolume](#getmaxvolume9)替代。

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

1380 1381
**参数:**

1382 1383 1384 1385
| 参数名     | 类型                                | 必填 | 说明                   |
| ---------- | ----------------------------------- | ---- | ---------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。           |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回最大音量大小。 |
1386 1387

**示例:**
1388

J
jiao_yanlin 已提交
1389
```js
1390
audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
1391
  if (err) {
1392
    console.error(`Failed to obtain the maximum volume. ${err}`);
J
jiao_yanlin 已提交
1393 1394
    return;
  }
1395
  console.info(`Callback invoked to indicate that the maximum volume is obtained. ${value}`);
L
lwx1059628 已提交
1396
});
1397 1398
```

1399
### getMaxVolume<sup>(deprecated)</sup>
1400

1401
getMaxVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
1402

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

1405 1406 1407
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getMaxVolume](#getmaxvolume9)替代。

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

1410 1411
**参数:**

1412 1413 1414
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
1415 1416 1417

**返回值:**

1418 1419 1420
| 类型                  | 说明                          |
| --------------------- | ----------------------------- |
| Promise&lt;number&gt; | Promise回调返回最大音量大小。 |
1421 1422 1423

**示例:**

J
jiao_yanlin 已提交
1424
```js
1425
audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((data) => {
1426
  console.info('Promised returned to indicate that the maximum volume is obtained.');
L
lwx1059628 已提交
1427
});
1428 1429
```

1430
### mute<sup>(deprecated)</sup>
Z
zengyawen 已提交
1431

1432
mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback&lt;void&gt;): void
1433

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

1436
> **说明:**
Z
zengyawen 已提交
1437
> 从 API version 7 开始支持,从 API version 9 开始废弃。建议使用AudioVolumeGroupManager中的[mute](#mute9)替代,替代接口能力仅对系统应用开放。
1438

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

1441 1442
**参数:**

1443 1444 1445 1446 1447
| 参数名     | 类型                                | 必填 | 说明                                  |
| ---------- | ----------------------------------- | ---- | ------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                          |
| mute       | boolean                             | 是   | 静音状态,true为静音,false为非静音。 |
| callback   | AsyncCallback&lt;void&gt;           | 是   | 回调表示成功还是失败。                |
1448 1449 1450

**示例:**

J
jiao_yanlin 已提交
1451
```js
1452
audioManager.mute(audio.AudioVolumeType.MEDIA, true, (err) => {
J
jiao_yanlin 已提交
1453
  if (err) {
1454
    console.error(`Failed to mute the stream. ${err}`);
J
jiao_yanlin 已提交
1455 1456
    return;
  }
1457
  console.info('Callback invoked to indicate that the stream is muted.');
L
lwx1059628 已提交
1458
});
1459 1460
```

1461
### mute<sup>(deprecated)</sup>
Z
zengyawen 已提交
1462

1463
mute(volumeType: AudioVolumeType, mute: boolean): Promise&lt;void&gt;
1464

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

1467
> **说明:**
Z
zengyawen 已提交
1468
> 从 API version 7 开始支持,从 API version 9 开始废弃。建议使用AudioVolumeGroupManager中的[mute](#mute9)替代,替代接口能力仅对系统应用开放。
1469

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

1472 1473
**参数:**

1474 1475 1476 1477
| 参数名     | 类型                                | 必填 | 说明                                  |
| ---------- | ----------------------------------- | ---- | ------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                          |
| mute       | boolean                             | 是   | 静音状态,true为静音,false为非静音。 |
1478 1479 1480

**返回值:**

1481 1482 1483
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
1484 1485 1486

**示例:**

1487

J
jiao_yanlin 已提交
1488
```js
1489
audioManager.mute(audio.AudioVolumeType.MEDIA, true).then(() => {
1490
  console.info('Promise returned to indicate that the stream is muted.');
L
lwx1059628 已提交
1491
});
1492 1493
```

1494
### isMute<sup>(deprecated)</sup>
1495

1496
isMute(volumeType: AudioVolumeType, callback: AsyncCallback&lt;boolean&gt;): void
1497

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

1500 1501 1502
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[isMute](#ismute9)替代。

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

1505 1506
**参数:**

1507 1508 1509 1510
| 参数名     | 类型                                | 必填 | 说明                                            |
| ---------- | ----------------------------------- | ---- | ----------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                    |
| callback   | AsyncCallback&lt;boolean&gt;        | 是   | 回调返回流静音状态,true为静音,false为非静音。 |
1511 1512 1513

**示例:**

J
jiao_yanlin 已提交
1514
```js
1515
audioManager.isMute(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
1516
  if (err) {
1517
    console.error(`Failed to obtain the mute status. ${err}`);
J
jiao_yanlin 已提交
1518 1519
    return;
  }
1520
  console.info(`Callback invoked to indicate that the mute status of the stream is obtained. ${value}`);
L
lwx1059628 已提交
1521
});
1522 1523
```

1524
### isMute<sup>(deprecated)</sup>
1525

1526
isMute(volumeType: AudioVolumeType): Promise&lt;boolean&gt;
1527

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

1530 1531 1532
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[isMute](#ismute9)替代。

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

1535 1536
**参数:**

1537 1538 1539
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
1540 1541 1542

**返回值:**

1543 1544 1545
| 类型                   | 说明                                                   |
| ---------------------- | ------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回流静音状态,true为静音,false为非静音。 |
1546 1547 1548

**示例:**

J
jiao_yanlin 已提交
1549
```js
1550
audioManager.isMute(audio.AudioVolumeType.MEDIA).then((value) => {
1551
  console.info(`Promise returned to indicate that the mute status of the stream is obtained ${value}.`);
L
lwx1059628 已提交
1552
});
1553 1554
```

1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616
### isActive<sup>(deprecated)</sup>

isActive(volumeType: AudioVolumeType, callback: AsyncCallback&lt;boolean&gt;): void

获取指定音量流是否为活跃状态,使用callback方式异步返回结果。

> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioStreamManager中的[isActive](#isactive9)替代。

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

**参数:**

| 参数名     | 类型                                | 必填 | 说明                                              |
| ---------- | ----------------------------------- | ---- | ------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                      |
| callback   | AsyncCallback&lt;boolean&gt;        | 是   | 回调返回流的活跃状态,true为活跃,false为不活跃。 |

**示例:**

```js
audioManager.isActive(audio.AudioVolumeType.MEDIA, (err, value) => {
  if (err) {
    console.error(`Failed to obtain the active status of the stream. ${err}`);
    return;
  }
  console.info(`Callback invoked to indicate that the active status of the stream is obtained ${value}.`);
});
```

### isActive<sup>(deprecated)</sup>

isActive(volumeType: AudioVolumeType): Promise&lt;boolean&gt;

获取指定音量流是否为活跃状态,使用Promise方式异步返回结果。

> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioStreamManager中的[isActive](#isactive9)替代。

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

**参数:**

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

**返回值:**

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

**示例:**

```js
audioManager.isActive(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the active status of the stream is obtained ${value}.`);
});
```

### setRingerMode<sup>(deprecated)</sup>
Z
zengyawen 已提交
1617

1618
setRingerMode(mode: AudioRingMode, callback: AsyncCallback&lt;void&gt;): void
1619

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

1622
> **说明:**
Z
zengyawen 已提交
1623
> 从 API version 7 开始支持,从 API version 9 开始废弃。建议使用AudioVolumeGroupManager中的[setRingerMode](#setringermode9)替代,替代接口能力仅对系统应用开放。
1624

1625
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
1626

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

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

1631 1632
**参数:**

1633 1634 1635 1636
| 参数名   | 类型                            | 必填 | 说明                     |
| -------- | ------------------------------- | ---- | ------------------------ |
| mode     | [AudioRingMode](#audioringmode) | 是   | 音频铃声模式。           |
| callback | AsyncCallback&lt;void&gt;       | 是   | 回调返回设置成功或失败。 |
1637 1638 1639

**示例:**

J
jiao_yanlin 已提交
1640
```js
1641
audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL, (err) => {
J
jiao_yanlin 已提交
1642
  if (err) {
1643
    console.error(`Failed to set the ringer mode.​ ${err}`);
J
jiao_yanlin 已提交
1644 1645
    return;
  }
1646
  console.info('Callback invoked to indicate a successful setting of the ringer mode.');
L
lwx1059628 已提交
1647
});
1648 1649
```

1650
### setRingerMode<sup>(deprecated)</sup>
Z
zengyawen 已提交
1651

1652
setRingerMode(mode: AudioRingMode): Promise&lt;void&gt;
1653

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

1656
> **说明:**
Z
zengyawen 已提交
1657 1658
> 从 API version 7 开始支持,从 API version 9 开始废弃。建议使用AudioVolumeGroupManager中的[setRingerMode](#setringermode9)替代,替代接口能力仅对系统应用开放。

1659

1660
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
1661

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

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

1666 1667
**参数:**

1668 1669 1670
| 参数名 | 类型                            | 必填 | 说明           |
| ------ | ------------------------------- | ---- | -------------- |
| mode   | [AudioRingMode](#audioringmode) | 是   | 音频铃声模式。 |
1671 1672 1673

**返回值:**

Z
zengyawen 已提交
1674 1675
| 类型                | 说明                            |
| ------------------- | ------------------------------- |
Z
zengyawen 已提交
1676
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |
1677 1678 1679

**示例:**

J
jiao_yanlin 已提交
1680
```js
1681
audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL).then(() => {
1682
  console.info('Promise returned to indicate a successful setting of the ringer mode.');
L
lwx1059628 已提交
1683
});
1684 1685
```

1686
### getRingerMode<sup>(deprecated)</sup>
1687

1688
getRingerMode(callback: AsyncCallback&lt;AudioRingMode&gt;): void
1689

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

1692 1693 1694 1695
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getRingerMode](#getringermode9)替代。

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

1697 1698
**参数:**

1699 1700 1701
| 参数名   | 类型                                                 | 必填 | 说明                     |
| -------- | ---------------------------------------------------- | ---- | ------------------------ |
| callback | AsyncCallback&lt;[AudioRingMode](#audioringmode)&gt; | 是   | 回调返回系统的铃声模式。 |
1702 1703 1704

**示例:**

J
jiao_yanlin 已提交
1705
```js
1706
audioManager.getRingerMode((err, value) => {
J
jiao_yanlin 已提交
1707
  if (err) {
1708
    console.error(`Failed to obtain the ringer mode.​ ${err}`);
J
jiao_yanlin 已提交
1709 1710
    return;
  }
1711
  console.info(`Callback invoked to indicate that the ringer mode is obtained ${value}.`);
L
lwx1059628 已提交
1712
});
1713 1714
```

1715
### getRingerMode<sup>(deprecated)</sup>
1716

1717
getRingerMode(): Promise&lt;AudioRingMode&gt;
1718

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

1721 1722 1723 1724
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getRingerMode](#getringermode9)替代。

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

1726 1727
**返回值:**

1728 1729 1730
| 类型                                           | 说明                            |
| ---------------------------------------------- | ------------------------------- |
| Promise&lt;[AudioRingMode](#audioringmode)&gt; | Promise回调返回系统的铃声模式。 |
1731 1732 1733

**示例:**

J
jiao_yanlin 已提交
1734
```js
1735
audioManager.getRingerMode().then((value) => {
1736
  console.info(`Promise returned to indicate that the ringer mode is obtained ${value}.`);
L
lwx1059628 已提交
1737
});
1738 1739
```

1740
### getDevices<sup>(deprecated)</sup>
Z
zengyawen 已提交
1741

1742
getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback&lt;AudioDeviceDescriptors&gt;): void
1743

1744
获取音频设备列表,使用callback方式异步返回结果。
Z
zengyawen 已提交
1745

1746 1747 1748 1749
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[getDevices](#getdevices9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Device
Z
zengyawen 已提交
1750 1751 1752

**参数:**

1753 1754 1755 1756
| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
| deviceFlag | [DeviceFlag](#deviceflag)                                    | 是   | 设备类型的flag。     |
| callback   | AsyncCallback&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | 是   | 回调,返回设备列表。 |
1757

1758 1759 1760 1761 1762 1763 1764 1765 1766 1767
**示例:**
```js
audioManager.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.');
});
```
1768

1769
### getDevices<sup>(deprecated)</sup>
1770

1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790
getDevices(deviceFlag: DeviceFlag): Promise&lt;AudioDeviceDescriptors&gt;

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

> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[getDevices](#getdevices9)替代。

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

**参数:**

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

**返回值:**

| 类型                                                         | 说明                      |
| ------------------------------------------------------------ | ------------------------- |
| Promise&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | Promise回调返回设备列表。 |
Z
zengyawen 已提交
1791 1792 1793

**示例:**

J
jiao_yanlin 已提交
1794
```js
1795 1796
audioManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((data) => {
  console.info('Promise returned to indicate that the device list is obtained.');
L
lwx1059628 已提交
1797
});
Z
zengyawen 已提交
1798 1799
```

1800
### setDeviceActive<sup>(deprecated)</sup>
Z
zengyawen 已提交
1801

1802
setDeviceActive(deviceType: ActiveDeviceType, active: boolean, callback: AsyncCallback&lt;void&gt;): void
1803

1804
设置设备激活状态,使用callback方式异步返回结果。
L
lwx1059628 已提交
1805

1806 1807 1808 1809
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[setCommunicationDevice](#setcommunicationdevice9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Device
Z
zengyawen 已提交
1810 1811 1812

**参数:**

1813 1814 1815 1816 1817
| 参数名     | 类型                                  | 必填 | 说明                     |
| ---------- | ------------------------------------- | ---- | ------------------------ |
| deviceType | [ActiveDeviceType](#activedevicetypedeprecated) | 是   | 活跃音频设备类型。       |
| active     | boolean                               | 是   | 设备激活状态。           |
| callback   | AsyncCallback&lt;void&gt;             | 是   | 回调返回设置成功或失败。 |
Z
zengyawen 已提交
1818

L
lwx1059628 已提交
1819 1820
**示例:**

J
jiao_yanlin 已提交
1821
```js
1822
audioManager.setDeviceActive(audio.ActiveDeviceType.SPEAKER, true, (err) => {
1823
  if (err) {
1824
    console.error(`Failed to set the active status of the device. ${err}`);
1825 1826
    return;
  }
1827
  console.info('Callback invoked to indicate that the device is set to the active status.');
L
lwx1059628 已提交
1828 1829 1830
});
```

1831
### setDeviceActive<sup>(deprecated)</sup>
L
lwx1059628 已提交
1832

1833
setDeviceActive(deviceType: ActiveDeviceType, active: boolean): Promise&lt;void&gt;
L
lwx1059628 已提交
1834

1835
设置设备激活状态,使用Promise方式异步返回结果。
L
lwx1059628 已提交
1836

1837 1838
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[setCommunicationDevice](#setcommunicationdevice9)替代。
1839

1840
**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
1841 1842 1843

**参数:**

1844 1845 1846 1847
| 参数名     | 类型                                  | 必填 | 说明               |
| ---------- | ------------------------------------- | ---- | ------------------ |
| deviceType | [ActiveDeviceType](#activedevicetypedeprecated) | 是   | 活跃音频设备类型。 |
| active     | boolean                               | 是   | 设备激活状态。     |
1848 1849 1850 1851 1852 1853 1854 1855

**返回值:**

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

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

1857

J
jiao_yanlin 已提交
1858
```js
1859 1860
audioManager.setDeviceActive(audio.ActiveDeviceType.SPEAKER, true).then(() => {
  console.info('Promise returned to indicate that the device is set to the active status.');
L
lwx1059628 已提交
1861 1862 1863
});
```

1864
### isDeviceActive<sup>(deprecated)</sup>
L
lwx1059628 已提交
1865

1866
isDeviceActive(deviceType: ActiveDeviceType, callback: AsyncCallback&lt;boolean&gt;): void
L
lwx1059628 已提交
1867

1868
获取指定设备的激活状态,使用callback方式异步返回结果。
1869

1870 1871 1872 1873
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[isCommunicationDeviceActive](#iscommunicationdeviceactive9)替代。

**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
1874 1875 1876

**参数:**

1877 1878 1879 1880
| 参数名     | 类型                                  | 必填 | 说明                     |
| ---------- | ------------------------------------- | ---- | ------------------------ |
| deviceType | [ActiveDeviceType](#activedevicetypedeprecated) | 是   | 活跃音频设备类型。       |
| callback   | AsyncCallback&lt;boolean&gt;          | 是   | 回调返回设备的激活状态。 |
L
lwx1059628 已提交
1881 1882 1883

**示例:**

J
jiao_yanlin 已提交
1884
```js
1885
audioManager.isDeviceActive(audio.ActiveDeviceType.SPEAKER, (err, value) => {
1886
  if (err) {
1887
    console.error(`Failed to obtain the active status of the device. ${err}`);
1888 1889
    return;
  }
1890
  console.info('Callback invoked to indicate that the active status of the device is obtained.');
L
lwx1059628 已提交
1891 1892 1893
});
```

1894
### isDeviceActive<sup>(deprecated)</sup>
1895

1896
isDeviceActive(deviceType: ActiveDeviceType): Promise&lt;boolean&gt;
1897

1898
获取指定设备的激活状态,使用Promise方式异步返回结果。
1899

1900 1901 1902 1903 1904 1905 1906 1907 1908 1909
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[isCommunicationDeviceActive](#iscommunicationdeviceactive9)替代。

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

**参数:**

| 参数名     | 类型                                  | 必填 | 说明               |
| ---------- | ------------------------------------- | ---- | ------------------ |
| deviceType | [ActiveDeviceType](#activedevicetypedeprecated) | 是   | 活跃音频设备类型。 |
1910

1911
**返回值:**
1912

1913 1914 1915
| Type                   | Description                     |
| ---------------------- | ------------------------------- |
| Promise&lt;boolean&gt; | Promise回调返回设备的激活状态。 |
1916 1917 1918

**示例:**

J
jiao_yanlin 已提交
1919
```js
1920 1921
audioManager.isDeviceActive(audio.ActiveDeviceType.SPEAKER).then((value) => {
  console.info(`Promise returned to indicate that the active status of the device is obtained ${value}.`);
1922 1923 1924
});
```

1925
### setMicrophoneMute<sup>(deprecated)</sup>
1926

1927
setMicrophoneMute(mute: boolean, callback: AsyncCallback&lt;void&gt;): void
1928

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

1931 1932
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[setMicrophoneMute](#setmicrophonemute9)替代。
1933

1934 1935 1936
**需要权限:** ohos.permission.MICROPHONE

**系统能力:** SystemCapability.Multimedia.Audio.Device
1937 1938 1939

**参数:**

1940 1941 1942 1943
| 参数名   | 类型                      | 必填 | 说明                                          |
| -------- | ------------------------- | ---- | --------------------------------------------- |
| mute     | boolean                   | 是   | 待设置的静音状态,true为静音,false为非静音。 |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调返回设置成功或失败。                      |
1944

1945
**示例:**
1946

1947 1948 1949 1950 1951 1952 1953 1954 1955
```js
audioManager.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.');
});
```
1956

1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980
### setMicrophoneMute<sup>(deprecated)</sup>

setMicrophoneMute(mute: boolean): Promise&lt;void&gt;

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

> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[setMicrophoneMute](#setmicrophonemute9)替代。

**需要权限:** ohos.permission.MICROPHONE

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

**参数:**

| 参数名 | 类型    | 必填 | 说明                                          |
| ------ | ------- | ---- | --------------------------------------------- |
| mute   | boolean | 是   | 待设置的静音状态,true为静音,false为非静音。 |

**返回值:**

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

**示例:**

J
jiao_yanlin 已提交
1984
```js
1985 1986
audioManager.setMicrophoneMute(true).then(() => {
  console.info('Promise returned to indicate that the microphone is muted.');
1987 1988 1989
});
```

1990
### isMicrophoneMute<sup>(deprecated)</sup>
L
lwx1059628 已提交
1991

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

1994
获取麦克风静音状态,使用callback方式异步返回结果。
L
lwx1059628 已提交
1995

1996 1997
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[isMicrophoneMute](#ismicrophonemute9)替代。
L
lwx1059628 已提交
1998

1999
**需要权限:** ohos.permission.MICROPHONE
2000

2001
**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
2002 2003 2004

**参数:**

2005 2006 2007
| 参数名   | 类型                         | 必填 | 说明                                                    |
| -------- | ---------------------------- | ---- | ------------------------------------------------------- |
| callback | AsyncCallback&lt;boolean&gt; | 是   | 回调返回系统麦克风静音状态,true为静音,false为非静音。 |
L
lwx1059628 已提交
2008 2009 2010

**示例:**

J
jiao_yanlin 已提交
2011
```js
2012
audioManager.isMicrophoneMute((err, value) => {
J
jiao_yanlin 已提交
2013
  if (err) {
2014 2015
    console.error(`Failed to obtain the mute status of the microphone. ${err}`);
    return;
J
jiao_yanlin 已提交
2016
  }
2017
  console.info(`Callback invoked to indicate that the mute status of the microphone is obtained ${value}.`);
L
lwx1059628 已提交
2018 2019 2020
});
```

2021
### isMicrophoneMute<sup>(deprecated)</sup>
L
lwx1059628 已提交
2022

2023
isMicrophoneMute(): Promise&lt;boolean&gt;
L
lwx1059628 已提交
2024

2025
获取麦克风静音状态,使用Promise方式异步返回结果。
L
lwx1059628 已提交
2026

2027 2028 2029 2030 2031 2032
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[isMicrophoneMute](#ismicrophonemute9)替代。

**需要权限:** ohos.permission.MICROPHONE

**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
2033 2034 2035

**返回值:**

2036 2037 2038
| 类型                   | 说明                                                         |
| ---------------------- | ------------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回系统麦克风静音状态,true为静音,false为非静音。 |
L
lwx1059628 已提交
2039 2040 2041

**示例:**

J
jiao_yanlin 已提交
2042
```js
2043 2044 2045
audioManager.isMicrophoneMute().then((value) => {
  console.info(`Promise returned to indicate that the mute status of the microphone is obtained ${value}.`);
});
L
lwx1059628 已提交
2046 2047
```

J
jiaoyanlin3 已提交
2048
### on('volumeChange')<sup>9+</sup>
L
lwx1059628 已提交
2049

2050
on(type: 'volumeChange', callback: Callback\<VolumeEvent>): void
L
lwx1059628 已提交
2051

2052
> **说明:**
J
jiaoyanlin3 已提交
2053
> 建议使用AudioVolumeManager中的[on('volumeChange')](#onvolumechange9)替代。
L
lwx1059628 已提交
2054

2055 2056 2057 2058 2059 2060 2061
监听系统音量变化事件。

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
L
lwx1059628 已提交
2062 2063 2064

**参数:**

2065 2066 2067
| 参数名   | 类型                                   | 必填 | 说明                                                         |
| -------- | -------------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                                 | 是   | 事件回调类型,支持的事件为:'volumeChange'(系统音量变化事件,检测到系统音量改变时,触发该事件)。 |
J
jiaoyanlin3 已提交
2068
| callback | Callback<[VolumeEvent](#volumeevent9)> | 是   | 回调方法。                                                   |
L
lwx1059628 已提交
2069 2070 2071

**示例:**

J
jiao_yanlin 已提交
2072
```js
2073 2074 2075 2076
audioManager.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 已提交
2077 2078 2079
});
```

2080
### on('ringerModeChange')<sup>(deprecated)</sup>
2081

2082
on(type: 'ringerModeChange', callback: Callback\<AudioRingMode>): void
2083

2084
监听铃声模式变化事件。
2085

2086 2087
> **说明:**
> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[on('ringerModeChange')](#onringermodechange9)替代。
2088

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

2091 2092 2093 2094 2095 2096 2097 2098
**系统能力:** SystemCapability.Multimedia.Audio.Communication

**参数:**

| 参数名   | 类型                                      | 必填 | 说明                                                         |
| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                                    | 是   | 事件回调类型,支持的事件为:'ringerModeChange'(铃声模式变化事件,检测到铃声模式改变时,触发该事件)。 |
| callback | Callback<[AudioRingMode](#audioringmode)> | 是   | 回调方法。                                                   |
2099 2100 2101 2102

**示例:**

```js
2103 2104 2105
audioManager.on('ringerModeChange', (ringerMode) => {
  console.info(`Updated ringermode: ${ringerMode}`);
});
2106 2107
```

2108
### on('deviceChange')<sup>(deprecated)</sup>
2109

2110
on(type: 'deviceChange', callback: Callback<DeviceChangeAction\>): void
2111

2112
设备更改。音频设备连接状态变化。
2113

2114
> **说明:**
2115
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[on('deviceChange')](#ondevicechange9)替代。
2116

2117
**系统能力:** SystemCapability.Multimedia.Audio.Device
2118

2119
**参数:**
2120

2121 2122 2123 2124
| 参数名   | 类型                                                 | 必填 | 说明                                       |
| :------- | :--------------------------------------------------- | :--- | :----------------------------------------- |
| type     | string                                               | 是   | 订阅的事件的类型。支持事件:'deviceChange' |
| callback | Callback<[DeviceChangeAction](#devicechangeaction)\> | 是   | 获取设备更新详情。                         |
2125 2126 2127 2128

**示例:**

```js
2129 2130 2131 2132 2133
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} `);
2134
});
2135 2136
```

2137
### off('deviceChange')<sup>(deprecated)</sup>
2138

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

2141
取消订阅音频设备连接变化事件。
2142

2143
> **说明:**
2144
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[off('deviceChange')](#offdevicechange9)替代。
2145

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

2148
**参数:**
2149

2150 2151 2152 2153
| 参数名   | 类型                                                | 必填 | 说明                                       |
| -------- | --------------------------------------------------- | ---- | ------------------------------------------ |
| type     | string                                              | 是   | 订阅的事件的类型。支持事件:'deviceChange' |
| callback | Callback<[DeviceChangeAction](#devicechangeaction)> | 否   | 获取设备更新详情。                         |
2154

2155
**示例:**
W
wangtao 已提交
2156

2157
```js
W
wangtao 已提交
2158
audioManager.off('deviceChange');
2159
```
W
wangtao 已提交
2160

J
jiaoyanlin3 已提交
2161
### on('interrupt')
2162

2163
on(type: 'interrupt', interrupt: AudioInterrupt, callback: Callback\<InterruptAction>): void
2164

2165
请求焦点并开始监听音频打断事件(当应用程序的音频被另一个播放事件中断,回调通知此应用程序)。
W
wangtao 已提交
2166

2167
[on('audioInterrupt')](#onaudiointerrupt9)作用一致,均用于监听焦点变化。为无音频流的场景(未曾创建AudioRenderer对象),比如FM、语音唤醒等提供焦点变化监听功能。
W
wangtao 已提交
2168

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

2171
**参数:**
2172

2173 2174 2175 2176 2177
| 参数名    | 类型                                          | 必填 | 说明                                                         |
| --------- | --------------------------------------------- | ---- | ------------------------------------------------------------ |
| type      | string                                        | 是   | 音频打断事件回调类型,支持的事件为:'interrupt'(多应用之间第二个应用会打断第一个应用,触发该事件)。 |
| interrupt | AudioInterrupt                                | 是   | 音频打断事件类型的参数。                                     |
| callback  | Callback<[InterruptAction](#interruptactiondeprecated)> | 是   | 音频打断事件回调方法。                                       |
2178

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

W
wangtao 已提交
2181
```js
2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194
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} `);
W
wangtao 已提交
2195 2196 2197 2198
  }
});
```

J
jiaoyanlin3 已提交
2199
### off('interrupt')
W
wangtao 已提交
2200

2201
off(type: 'interrupt', interrupt: AudioInterrupt, callback?: Callback\<InterruptAction>): void
W
wangtao 已提交
2202

2203
取消监听音频打断事件(删除监听事件,取消打断)。
W
wangtao 已提交
2204

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

2207
**参数:**
2208

2209 2210 2211 2212 2213
| 参数名    | 类型                                          | 必填 | 说明                                                         |
| --------- | --------------------------------------------- | ---- | ------------------------------------------------------------ |
| type      | string                                        | 是   | 音频打断事件回调类型,支持的事件为:'interrupt'(多应用之间第二个应用会打断第一个应用,触发该事件)。 |
| interrupt | AudioInterrupt                                | 是   | 音频打断事件类型的参数。                                     |
| callback  | Callback<[InterruptAction](#interruptactiondeprecated)> | 否   | 音频打断事件回调方法。                                       |
2214

W
wangtao 已提交
2215 2216 2217
**示例:**

```js
2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228
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} `);
  }
});
W
wangtao 已提交
2229 2230
```

2231
## AudioVolumeManager<sup>9+</sup>
W
wangtao 已提交
2232

2233
音量管理。在使用AudioVolumeManager的接口前,需要使用[getVolumeManager](#getvolumemanager9)获取AudioVolumeManager实例。
W
wangtao 已提交
2234

2235
### getVolumeGroupInfos<sup>9+</sup>
W
wangtao 已提交
2236

2237 2238 2239 2240 2241 2242 2243
getVolumeGroupInfos(networkId: string, callback: AsyncCallback<VolumeGroupInfos\>\): void

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2244 2245 2246

**参数:**

2247 2248 2249 2250
| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
| networkId | string                                    | 是   | 设备的网络id。本地设备audio.LOCAL_NETWORK_ID。    |
| callback  | AsyncCallback&lt;[VolumeGroupInfos](#volumegroupinfos9)&gt; | 是   | 回调,返回音量组信息列表。 |
W
wangtao 已提交
2251 2252 2253

**示例:**
```js
2254
audioVolumeManager.getVolumeGroupInfos(audio.LOCAL_NETWORK_ID, (err, value) => {
2255
  if (err) {
2256
    console.error(`Failed to obtain the volume group infos list. ${err}`);
2257
    return;
W
wangtao 已提交
2258
  }
2259
  console.info('Callback invoked to indicate that the volume group infos list is obtained.');
2260
});
W
wangtao 已提交
2261 2262
```

2263
### getVolumeGroupInfos<sup>9+</sup>
W
wangtao 已提交
2264

2265
getVolumeGroupInfos(networkId: string\): Promise<VolumeGroupInfos\>
W
wangtao 已提交
2266

2267
获取音量组信息列表,使用promise方式异步返回结果。
W
wangtao 已提交
2268

2269 2270 2271
**系统接口:** 该接口为系统接口

**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2272 2273 2274

**参数:**

2275 2276 2277
| 参数名     | 类型               | 必填 | 说明                 |
| ---------- | ------------------| ---- | -------------------- |
| networkId | string             | 是   | 设备的网络id。本地设备audio.LOCAL_NETWORK_ID。   |
W
wangtao 已提交
2278

2279 2280
**返回值:**

2281 2282 2283 2284
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;[VolumeGroupInfos](#volumegroupinfos9)&gt; | 音量组信息列表。 |

W
wangtao 已提交
2285 2286 2287
**示例:**

```js
2288 2289 2290 2291
async function getVolumeGroupInfos(){
  let volumegroupinfos = await audio.getAudioManager().getVolumeManager().getVolumeGroupInfos(audio.LOCAL_NETWORK_ID);
  console.info('Promise returned to indicate that the volumeGroup list is obtained.'+JSON.stringify(volumegroupinfos))
}
W
wangtao 已提交
2292
```
J
jiao_yanlin 已提交
2293

2294
### getVolumeGroupManager<sup>9+</sup>
J
jiao_yanlin 已提交
2295

2296
getVolumeGroupManager(groupId: number, callback: AsyncCallback<AudioVolumeGroupManager\>\): void
J
jiao_yanlin 已提交
2297

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

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

2302
**参数:**
2303

2304 2305
| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
2306 2307
| groupId    | number                                    | 是   | 音量组id。     |
| callback   | AsyncCallback&lt;[AudioVolumeGroupManager](#audiovolumegroupmanager9)&gt; | 是   | 回调,返回一个音量组实例。 |
J
jiao_yanlin 已提交
2308 2309 2310 2311

**示例:**

```js
2312 2313
let groupid = audio.DEFAULT_VOLUME_GROUP_ID;
audioVolumeManager.getVolumeGroupManager(groupid, (err, value) => {
2314
  if (err) {
2315
    console.error(`Failed to obtain the volume group infos list. ${err}`);
2316
    return;
2317
  }
2318
  console.info('Callback invoked to indicate that the volume group infos list is obtained.');
2319
});
2320

J
jiao_yanlin 已提交
2321 2322
```

2323
### getVolumeGroupManager<sup>9+</sup>
J
jiao_yanlin 已提交
2324

2325
getVolumeGroupManager(groupId: number\): Promise<AudioVolumeGroupManager\>
2326

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

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

2331
**参数:**
2332

2333 2334 2335
| 参数名     | 类型                                      | 必填 | 说明              |
| ---------- | ---------------------------------------- | ---- | ---------------- |
| groupId    | number                                   | 是   | 音量组id。     |
2336

2337
**返回值:**
2338

2339 2340 2341
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt; [AudioVolumeGroupManager](#audiovolumegroupmanager9) &gt; | 音量组实例。 |
2342 2343 2344 2345

**示例:**

```js
2346 2347 2348 2349 2350 2351 2352 2353
let groupid = audio.DEFAULT_VOLUME_GROUP_ID;
let audioVolumeGroupManager;
getVolumeGroupManager();
async function getVolumeGroupManager(){
  audioVolumeGroupManager = await audioVolumeManager.getVolumeGroupManager(groupid);
  console.info('Callback invoked to indicate that the volume group infos list is obtained.');
}

2354 2355
```

2356
### on('volumeChange')<sup>9+</sup>
2357

2358
on(type: 'volumeChange', callback: Callback\<VolumeEvent>): void
2359

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

2362
**系统能力:** SystemCapability.Multimedia.Audio.Volume
2363 2364 2365

**参数:**

2366 2367 2368
| 参数名   | 类型                                   | 必填 | 说明                                                         |
| -------- | -------------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                                 | 是   | 事件回调类型,支持的事件为:'volumeChange'。 |
J
jiaoyanlin3 已提交
2369
| callback | Callback<[VolumeEvent](#volumeevent9)> | 是   | 回调方法。                                                   |
2370

2371
**错误码:**
2372

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
2377
| 6800101 | if input parameter value error              |
2378 2379 2380 2381

**示例:**

```js
2382 2383 2384 2385
audioVolumeManager.on('volumeChange', (volumeEvent) => {
  console.info(`VolumeType of stream: ${volumeEvent.volumeType} `);
  console.info(`Volume level: ${volumeEvent.volume} `);
  console.info(`Whether to updateUI: ${volumeEvent.updateUi} `);
2386
});
2387 2388
```

2389
## AudioVolumeGroupManager<sup>9+</sup>
2390

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

2393
### setVolume<sup>9+</sup>
W
wangtao 已提交
2394

2395
setVolume(volumeType: AudioVolumeType, volume: number, callback: AsyncCallback&lt;void&gt;): void
W
wangtao 已提交
2396

2397
设置指定流的音量,使用callback方式异步返回结果。
W
wangtao 已提交
2398

2399
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
W
wangtao 已提交
2400

2401
仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。
W
wangtao 已提交
2402

2403
**系统接口:** 该接口为系统接口
W
wangtao 已提交
2404

2405
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2406

2407
**参数:**
W
wangtao 已提交
2408

2409 2410 2411 2412 2413
| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
| volume     | number                              | 是   | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 |
| callback   | AsyncCallback&lt;void&gt;           | 是   | 回调表示成功还是失败。                                   |
W
wangtao 已提交
2414 2415

**示例:**
2416

2417 2418 2419 2420 2421 2422 2423 2424
```js
audioVolumeGroupManager.setVolume(audio.AudioVolumeType.MEDIA, 10, (err) => {
  if (err) {
    console.error(`Failed to set the volume. ${err}`);
    return;
  }
  console.info('Callback invoked to indicate a successful volume setting.');
});
W
wangtao 已提交
2425 2426
```

2427
### setVolume<sup>9+</sup>
W
wangtao 已提交
2428

2429
setVolume(volumeType: AudioVolumeType, volume: number): Promise&lt;void&gt;
W
wangtao 已提交
2430

2431
设置指定流的音量,使用Promise方式异步返回结果。
W
wangtao 已提交
2432

2433
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
2434

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2440 2441 2442

**参数:**

2443 2444 2445 2446
| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
| volume     | number                              | 是   | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 |
2447 2448 2449

**返回值:**

2450 2451 2452
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
W
wangtao 已提交
2453 2454 2455 2456

**示例:**

```js
2457 2458 2459
audioVolumeGroupManager.setVolume(audio.AudioVolumeType.MEDIA, 10).then(() => {
  console.info('Promise returned to indicate a successful volume setting.');
});
W
wangtao 已提交
2460 2461
```

2462
### getVolume<sup>9+</sup>
W
wangtao 已提交
2463

2464
getVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
W
wangtao 已提交
2465

2466
获取指定流的音量,使用callback方式异步返回结果。
W
wangtao 已提交
2467

2468
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2469 2470 2471

**参数:**

2472 2473 2474 2475
| 参数名     | 类型                                | 必填 | 说明               |
| ---------- | ----------------------------------- | ---- | ------------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。       |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回音量大小。 |
W
wangtao 已提交
2476 2477 2478 2479

**示例:**

```js
2480
audioVolumeGroupManager.getVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
W
wangtao 已提交
2481
  if (err) {
2482
    console.error(`Failed to obtain the volume. ${err}`);
W
wangtao 已提交
2483 2484
    return;
  }
2485
  console.info('Callback invoked to indicate that the volume is obtained.');
W
wangtao 已提交
2486 2487 2488
});
```

2489
### getVolume<sup>9+</sup>
W
wangtao 已提交
2490

2491
getVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
W
wangtao 已提交
2492

2493
获取指定流的音量,使用Promise方式异步返回结果。
W
wangtao 已提交
2494

2495
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2496 2497 2498

**参数:**

2499 2500 2501
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
W
wangtao 已提交
2502 2503 2504

**返回值:**

2505 2506 2507
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回音量大小。 |
W
wangtao 已提交
2508 2509 2510 2511

**示例:**

```js
2512 2513
audioVolumeGroupManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the volume is obtained ${value}.`);
W
wangtao 已提交
2514 2515 2516
});
```

2517
### getMinVolume<sup>9+</sup>
2518

2519
getMinVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
W
wangtao 已提交
2520

2521
获取指定流的最小音量,使用callback方式异步返回结果。
J
jiao_yanlin 已提交
2522

2523
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2524 2525 2526

**参数:**

2527 2528 2529 2530
| 参数名     | 类型                                | 必填 | 说明               |
| ---------- | ----------------------------------- | ---- | ------------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。       |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回最小音量。 |
W
wangtao 已提交
2531 2532 2533 2534

**示例:**

```js
2535
audioVolumeGroupManager.getMinVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
W
wangtao 已提交
2536
  if (err) {
2537
    console.error(`Failed to obtain the minimum volume. ${err}`);
W
wangtao 已提交
2538 2539
    return;
  }
2540
  console.info(`Callback invoked to indicate that the minimum volume is obtained. ${value}`);
W
wangtao 已提交
2541 2542 2543
});
```

2544
### getMinVolume<sup>9+</sup>
2545

2546
getMinVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
W
wangtao 已提交
2547

2548
获取指定流的最小音量,使用Promise方式异步返回结果。
J
jiao_yanlin 已提交
2549

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

**参数:**

2554 2555 2556
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
W
wangtao 已提交
2557 2558 2559

**返回值:**

2560 2561 2562
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回最小音量。 |
W
wangtao 已提交
2563 2564 2565 2566

**示例:**

```js
2567 2568
audioVolumeGroupManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promised returned to indicate that the minimum volume is obtained ${value}.`);
W
wangtao 已提交
2569 2570 2571
});
```

2572
### getMaxVolume<sup>9+</sup>
W
wangtao 已提交
2573

2574
getMaxVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
W
wangtao 已提交
2575

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

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

**参数:**

2582 2583 2584 2585
| 参数名     | 类型                                | 必填 | 说明                   |
| ---------- | ----------------------------------- | ---- | ---------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。           |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回最大音量大小。 |
W
wangtao 已提交
2586 2587

**示例:**
J
jiao_yanlin 已提交
2588

2589 2590 2591 2592 2593 2594 2595 2596
```js
audioVolumeGroupManager.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}`);
});
W
wangtao 已提交
2597 2598
```

2599
### getMaxVolume<sup>9+</sup>
W
wangtao 已提交
2600

2601
getMaxVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
W
wangtao 已提交
2602

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

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

**参数:**

2609 2610 2611
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
W
wangtao 已提交
2612 2613 2614

**返回值:**

2615 2616 2617
| 类型                  | 说明                          |
| --------------------- | ----------------------------- |
| Promise&lt;number&gt; | Promise回调返回最大音量大小。 |
W
wangtao 已提交
2618 2619 2620 2621

**示例:**

```js
2622 2623 2624
audioVolumeGroupManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((data) => {
  console.info('Promised returned to indicate that the maximum volume is obtained.');
});
2625
```
2626

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

2629
mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback&lt;void&gt;): void
2630

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

2633
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
2634

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
2640 2641 2642

**参数:**

2643 2644 2645 2646 2647
| 参数名     | 类型                                | 必填 | 说明                                  |
| ---------- | ----------------------------------- | ---- | ------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                          |
| mute       | boolean                             | 是   | 静音状态,true为静音,false为非静音。 |
| callback   | AsyncCallback&lt;void&gt;           | 是   | 回调表示成功还是失败。                |
2648 2649 2650

**示例:**

2651 2652 2653 2654 2655 2656 2657 2658
```js
audioVolumeGroupManager.mute(audio.AudioVolumeType.MEDIA, true, (err) => {
  if (err) {
    console.error(`Failed to mute the stream. ${err}`);
    return;
  }
  console.info('Callback invoked to indicate that the stream is muted.');
});
2659
```
2660

2661
### mute<sup>9+</sup>
2662

2663
mute(volumeType: AudioVolumeType, mute: boolean): Promise&lt;void&gt;
2664

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

2667
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
2668

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
2674 2675 2676

**参数:**

2677 2678 2679 2680
| 参数名     | 类型                                | 必填 | 说明                                  |
| ---------- | ----------------------------------- | ---- | ------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                          |
| mute       | boolean                             | 是   | 静音状态,true为静音,false为非静音。 |
2681 2682 2683

**返回值:**

2684 2685 2686
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
2687 2688 2689 2690

**示例:**

```js
2691 2692 2693 2694
audioVolumeGroupManager.mute(audio.AudioVolumeType.MEDIA, true).then(() => {
  console.info('Promise returned to indicate that the stream is muted.');
});
```
J
jiao_yanlin 已提交
2695

2696
### isMute<sup>9+</sup>
2697

2698
isMute(volumeType: AudioVolumeType, callback: AsyncCallback&lt;boolean&gt;): void
2699

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

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

2704
**参数:**
2705

2706 2707 2708 2709
| 参数名     | 类型                                | 必填 | 说明                                            |
| ---------- | ----------------------------------- | ---- | ----------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                    |
| callback   | AsyncCallback&lt;boolean&gt;        | 是   | 回调返回流静音状态,true为静音,false为非静音。 |
2710 2711 2712 2713

**示例:**

```js
2714 2715 2716 2717
audioVolumeGroupManager.isMute(audio.AudioVolumeType.MEDIA, (err, value) => {
  if (err) {
    console.error(`Failed to obtain the mute status. ${err}`);
    return;
2718
  }
2719
  console.info(`Callback invoked to indicate that the mute status of the stream is obtained ${value}.`);
2720 2721 2722
});
```

2723
### isMute<sup>9+</sup>
2724

2725
isMute(volumeType: AudioVolumeType): Promise&lt;boolean&gt;
2726

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

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

2731
**参数:**
2732

2733 2734 2735
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
2736

2737
**返回值:**
2738

2739 2740 2741
| 类型                   | 说明                                                   |
| ---------------------- | ------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回流静音状态,true为静音,false为非静音。 |
2742 2743 2744 2745

**示例:**

```js
2746 2747
audioVolumeGroupManager.isMute(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the mute status of the stream is obtained ${value}.`);
2748 2749 2750
});
```

2751
### setRingerMode<sup>9+</sup>
2752

2753
setRingerMode(mode: AudioRingMode, callback: AsyncCallback&lt;void&gt;): void
2754

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

2757
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
2758

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

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

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

2765
**参数:**
2766

2767 2768 2769 2770
| 参数名   | 类型                            | 必填 | 说明                     |
| -------- | ------------------------------- | ---- | ------------------------ |
| mode     | [AudioRingMode](#audioringmode) | 是   | 音频铃声模式。           |
| callback | AsyncCallback&lt;void&gt;       | 是   | 回调返回设置成功或失败。 |
2771

2772 2773 2774 2775 2776 2777 2778
**示例:**

```js
audioVolumeGroupManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL, (err) => {
  if (err) {
    console.error(`Failed to set the ringer mode.​ ${err}`);
    return;
2779
  }
2780
  console.info('Callback invoked to indicate a successful setting of the ringer mode.');
2781 2782 2783
});
```

2784
### setRingerMode<sup>9+</sup>
2785

2786
setRingerMode(mode: AudioRingMode): Promise&lt;void&gt;
2787

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

2790
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
2791

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

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

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

2798
**参数:**
2799

2800 2801 2802
| 参数名 | 类型                            | 必填 | 说明           |
| ------ | ------------------------------- | ---- | -------------- |
| mode   | [AudioRingMode](#audioringmode) | 是   | 音频铃声模式。 |
2803

2804
**返回值:**
2805

2806 2807 2808
| 类型                | 说明                            |
| ------------------- | ------------------------------- |
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |
2809 2810 2811 2812

**示例:**

```js
2813 2814 2815
audioVolumeGroupManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL).then(() => {
  console.info('Promise returned to indicate a successful setting of the ringer mode.');
});
2816 2817
```

2818
### getRingerMode<sup>9+</sup>
2819

2820
getRingerMode(callback: AsyncCallback&lt;AudioRingMode&gt;): void
2821

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

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

2826
**参数:**
2827

2828 2829 2830
| 参数名   | 类型                                                 | 必填 | 说明                     |
| -------- | ---------------------------------------------------- | ---- | ------------------------ |
| callback | AsyncCallback&lt;[AudioRingMode](#audioringmode)&gt; | 是   | 回调返回系统的铃声模式。 |
2831 2832 2833 2834

**示例:**

```js
2835 2836 2837 2838 2839 2840
audioVolumeGroupManager.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}.`);
2841 2842 2843
});
```

2844
### getRingerMode<sup>9+</sup>
2845

2846
getRingerMode(): Promise&lt;AudioRingMode&gt;
2847

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

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

2852 2853
**返回值:**

2854 2855 2856
| 类型                                           | 说明                            |
| ---------------------------------------------- | ------------------------------- |
| Promise&lt;[AudioRingMode](#audioringmode)&gt; | Promise回调返回系统的铃声模式。 |
2857 2858 2859 2860

**示例:**

```js
2861 2862
audioVolumeGroupManager.getRingerMode().then((value) => {
  console.info(`Promise returned to indicate that the ringer mode is obtained ${value}.`);
2863 2864 2865
});
```

2866
### on('ringerModeChange')<sup>9+</sup>
2867

2868
on(type: 'ringerModeChange', callback: Callback\<AudioRingMode>): void
2869

2870
监听铃声模式变化事件。
2871

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

2874
**参数:**
2875

2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887
| 参数名   | 类型                                      | 必填 | 说明                                                         |
| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                                    | 是   | 事件回调类型,支持的事件为:'ringerModeChange'(铃声模式变化事件,检测到铃声模式改变时,触发该事件)。 |
| callback | Callback<[AudioRingMode](#audioringmode)> | 是   | 回调方法。                                                   |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
2888

2889
**示例:**
J
jiao_yanlin 已提交
2890 2891

```js
2892 2893
audioVolumeGroupManager.on('ringerModeChange', (ringerMode) => {
  console.info(`Updated ringermode: ${ringerMode}`);
2894 2895
});
```
2896
### setMicrophoneMute<sup>9+</sup>
2897

2898
setMicrophoneMute(mute: boolean, callback: AsyncCallback&lt;void&gt;): void
2899

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

2902
**需要权限:** ohos.permission.MANAGE_AUDIO_CONFIG
2903

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

2906
**参数:**
2907

2908 2909 2910 2911
| 参数名   | 类型                      | 必填 | 说明                                          |
| -------- | ------------------------- | ---- | --------------------------------------------- |
| mute     | boolean                   | 是   | 待设置的静音状态,true为静音,false为非静音。 |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调返回设置成功或失败。                      |
2912

2913
**示例:**
J
jiao_yanlin 已提交
2914 2915

```js
2916 2917 2918 2919 2920 2921
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.');
2922
});
2923 2924
```

2925
### setMicrophoneMute<sup>9+</sup>
2926

2927
setMicrophoneMute(mute: boolean): Promise&lt;void&gt;
2928

2929
设置麦克风静音状态,使用Promise方式异步返回结果。
2930

2931 2932 2933
**需要权限:** ohos.permission.MANAGE_AUDIO_CONFIG

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

2935
**参数:**
2936

2937 2938 2939 2940 2941 2942 2943 2944 2945
| 参数名 | 类型    | 必填 | 说明                                          |
| ------ | ------- | ---- | --------------------------------------------- |
| mute   | boolean | 是   | 待设置的静音状态,true为静音,false为非静音。 |

**返回值:**

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

2947
**示例:**
J
jiao_yanlin 已提交
2948 2949

```js
2950 2951
audioVolumeGroupManager.setMicrophoneMute(true).then(() => {
  console.info('Promise returned to indicate that the microphone is muted.');
2952 2953 2954
});
```

2955
### isMicrophoneMute<sup>9+</sup>
2956

2957
isMicrophoneMute(callback: AsyncCallback&lt;boolean&gt;): void
2958

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

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

2963
**参数:**
2964

2965 2966 2967
| 参数名   | 类型                         | 必填 | 说明                                                    |
| -------- | ---------------------------- | ---- | ------------------------------------------------------- |
| callback | AsyncCallback&lt;boolean&gt; | 是   | 回调返回系统麦克风静音状态,true为静音,false为非静音。 |
2968

2969
**示例:**
J
jiao_yanlin 已提交
2970 2971

```js
2972 2973 2974 2975 2976 2977
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}.`);
2978
});
2979 2980
```

2981
### isMicrophoneMute<sup>9+</sup>
2982

2983
isMicrophoneMute(): Promise&lt;boolean&gt;
2984

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

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

2989
**返回值:**
2990

2991 2992 2993
| 类型                   | 说明                                                         |
| ---------------------- | ------------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回系统麦克风静音状态,true为静音,false为非静音。 |
2994

2995
**示例:**
J
jiao_yanlin 已提交
2996 2997

```js
2998 2999
audioVolumeGroupManager.isMicrophoneMute().then((value) => {
  console.info(`Promise returned to indicate that the mute status of the microphone is obtained ${value}.`);
3000 3001 3002
});
```

3003
### on('micStateChange')<sup>9+</sup>
3004

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

3007
监听系统麦克风状态更改事件。
3008

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

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

3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026
**参数:**

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

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
3027

3028
**示例:**
J
jiao_yanlin 已提交
3029 3030

```js
3031 3032
audioVolumeGroupManager.on('micStateChange', (micStateChange) => {
  console.info(`Current microphone status is: ${micStateChange.mute} `);
3033
});
3034 3035
```

W
wangzx0705 已提交
3036
### isVolumeUnadjustable<sup>10+</sup>
W
wangzx0705 已提交
3037

W
wangzx0705 已提交
3038
isVolumeUnadjustable(): boolean
W
wangzx0705 已提交
3039

W
wangzx0705 已提交
3040
获取固定音量模式开关状态,打开时进入固定音量模式,此时音量固定无法被调节,使用同步方式返回结果。
W
wangzx0705 已提交
3041 3042 3043 3044 3045 3046 3047

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

**返回值:**

| 类型                   | 说明                                                   |
| ---------------------- | ------------------------------------------------------ |
W
wangzx0705 已提交
3048
| boolean            | 同步接口,返回固定音量模式开关状态,true为固定音量模式,false为非固定音量模式。 |
W
wangzx0705 已提交
3049 3050 3051 3052

**示例:**

```js
W
wangzx0705 已提交
3053 3054
bool volumeAdjustSwitch = audioVolumeGroupManager.isVolumeUnadjustable();
console.info(`Whether it is volume unadjustable: ${volumeAdjustSwitch}.`);
W
wangzx0705 已提交
3055 3056 3057 3058 3059 3060
```

### adjustVolumeByStep<sup>10+</sup>

adjustVolumeByStep(adjustType: VolumeAdjustType, callback: AsyncCallback&lt;void&gt;): void

W
wangzx0705 已提交
3061
调节当前最高优先级的流的音量,使音量值按步长加或减,使用callback方式异步返回结果。
W
wangzx0705 已提交
3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074

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

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

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

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

**参数:**

| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
W
wangzx0705 已提交
3075
| adjustType | [VolumeAdjustType](#volumeadjusttype10) | 是   | 音量调节方向。                                             |
W
wangzx0705 已提交
3076 3077
| callback   | AsyncCallback&lt;void&gt;           | 是   | 回调表示成功还是失败。                                   |

W
wangzx0705 已提交
3078 3079 3080 3081 3082 3083 3084 3085 3086
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | Invalid parameter error                     |
| 6800301 | System error                                |

W
wangzx0705 已提交
3087 3088 3089
**示例:**

```js
W
wangzx0705 已提交
3090
audioVolumeGroupManager.adjustVolumeByStep(audio.VolumeAdjustType.VOLUME_UP, (err) => {
W
wangzx0705 已提交
3091 3092 3093
  if (err) {
    console.error(`Failed to adjust the volume by step. ${err}`);
    return;
W
wangzx0705 已提交
3094 3095
  } else {
    console.info('Success to adjust the volume by step.');
W
wangzx0705 已提交
3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116
  }
});
```
### adjustVolumeByStep<sup>10+</sup>

adjustVolumeByStep(adjustType: VolumeAdjustType): Promise&lt;void&gt;

单步设置当前最高优先级的流的音量,使用Promise方式异步返回结果。

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

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

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

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

**参数:**

| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
W
wangzx0705 已提交
3117
| adjustType | [VolumeAdjustType](#volumeadjusttype10) | 是   | 音量调节方向。                                             |
W
wangzx0705 已提交
3118 3119 3120 3121 3122 3123 3124

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |

W
wangzx0705 已提交
3125 3126 3127 3128 3129 3130 3131 3132 3133
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | Invalid parameter error                     |
| 6800301 | System error                                |

W
wangzx0705 已提交
3134 3135 3136
**示例:**

```js
W
wangzx0705 已提交
3137
audioVolumeGroupManager.adjustVolumeByStep(audio.VolumeAdjustType.VOLUME_UP).then((value) => {
W
wangzx0705 已提交
3138
  console.info('Success to adjust the volume by step.');
W
wangzx0705 已提交
3139
}).catch((error) => {
W
wangzx0705 已提交
3140
  console.error('Fail to adjust the volume by step.');
W
wangzx0705 已提交
3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162
});
```

### adjustSystemVolumeByStep<sup>10+</sup>

adjustSystemVolumeByStep(volumeType: AudioVolumeType, adjustType: VolumeAdjustType, callback: AsyncCallback&lt;void&gt;): void

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

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

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

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

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

**参数:**

| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
W
wangzx0705 已提交
3163
| adjustType | [VolumeAdjustType](#volumeadjusttype10) | 是   | 音量调节方向。                                             |
W
wangzx0705 已提交
3164 3165
| callback   | AsyncCallback&lt;void&gt;           | 是   | 回调表示成功还是失败。                                   |

W
wangzx0705 已提交
3166 3167 3168 3169 3170 3171 3172 3173 3174
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | Invalid parameter error                     |
| 6800301 | System error                                |

W
wangzx0705 已提交
3175 3176 3177
**示例:**

```js
W
wangzx0705 已提交
3178
audioVolumeGroupManager.adjustSystemVolumeByStep(audio.AudioVolumeType.MEDIA, audio.VolumeAdjustType.VOLUME_UP, (err) => {
W
wangzx0705 已提交
3179
  if (err) {
W
wangzx0705 已提交
3180 3181 3182
    console.error(`Failed to adjust the system volume by step ${err}`);
  } else {
    console.info('Success to adjust the system volume by step.');
W
wangzx0705 已提交
3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204
  }
});
```
### adjustSystemVolumeByStep<sup>10+</sup>

adjustSystemVolumeByStep(volumeType: AudioVolumeType, adjustType: VolumeAdjustType): Promise&lt;void&gt;

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

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

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

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

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

**参数:**

| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
W
wangzx0705 已提交
3205
| adjustType | [VolumeAdjustType](#volumeadjusttype10) | 是   | 音量调节方向。                                             |
W
wangzx0705 已提交
3206 3207 3208 3209 3210 3211 3212

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |

W
wangzx0705 已提交
3213 3214 3215 3216 3217 3218 3219 3220 3221
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | Invalid parameter error                     |
| 6800301 | System error                                |

W
wangzx0705 已提交
3222 3223 3224
**示例:**

```js
W
wangzx0705 已提交
3225
audioVolumeGroupManager.adjustSystemVolumeByStep(audio.AudioVolumeType.MEDIA, audio.VolumeAdjustType.VOLUME_UP).then((value) => {
W
wangzx0705 已提交
3226
  console.info('Success to adjust the system volume by step.');
W
wangzx0705 已提交
3227
}).catch((error) => {
W
wangzx0705 已提交
3228
  console.error('Fail to adjust the system volume by step.');
W
wangzx0705 已提交
3229 3230 3231 3232 3233 3234 3235
});
```

### getSystemVolumeInDb<sup>10+</sup>

getSystemVolumeInDb(volumeType: AudioVolumeType, volumeLevel: number, device: DeviceType, callback: AsyncCallback&lt;number&gt;): void

W
wangzx0705 已提交
3236
获取音量增益dB值,使用callback方式异步返回结果。
W
wangzx0705 已提交
3237 3238 3239 3240 3241 3242 3243 3244 3245 3246

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

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

**参数:**

| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
W
wangzx0705 已提交
3247
| volumeLevel | number                         | 是   | 音量等级。                                               |
W
wangzx0705 已提交
3248
| device     | [DeviceType](#devicetype)           | 是   | 设备类型。                                               |
W
wangzx0705 已提交
3249 3250 3251 3252 3253 3254 3255 3256 3257 3258
| callback   | AsyncCallback&lt;number&gt;           | 是   | 回调返回对应的音量增益dB值。                              |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | Invalid parameter error                     |
| 6800301 | System error                                |
W
wangzx0705 已提交
3259 3260 3261 3262 3263 3264 3265

**示例:**

```js
audioVolumeGroupManager.getSystemVolumeInDb(audio.AudioVolumeType.MEDIA, 3, audio.DeviceType.SPEAKER, (err, dB) => {
  if (err) {
    console.error(`Failed to get the volume DB. ${err}`);
W
wangzx0705 已提交
3266 3267
  } else {
    console.info(`Success to get the volume DB. ${dB}`);
W
wangzx0705 已提交
3268 3269 3270 3271 3272 3273 3274
  }
});
```
### getSystemVolumeInDb<sup>10+</sup>

getSystemVolumeInDb(volumeType: AudioVolumeType, volumeLevel: number, device: DeviceType): Promise&lt;number&gt;

W
wangzx0705 已提交
3275
获取音量增益dB值,使用Promise方式异步返回结果。
W
wangzx0705 已提交
3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292

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

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

**参数:**

| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
| volumeLevel | number                              | 是   | 音量等级。                                             |
| device     | [DeviceType](#devicetype)           | 是   | 设备类型。                                               |

**返回值:**

| 类型                  | 说明                               |
| --------------------- | ---------------------------------- |
W
wangzx0705 已提交
3293 3294 3295 3296 3297 3298 3299 3300 3301 3302
| Promise&lt;number&gt; | Promise回调返回对应的音量增益dB值。 |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | Invalid parameter error                     |
| 6800301 | System error                                |
W
wangzx0705 已提交
3303 3304 3305 3306

**示例:**

```js
W
wangzx0705 已提交
3307 3308
audioVolumeGroupManager.getSystemVolumeInDb(audio.AudioVolumeType.MEDIA, 3, audio.DeviceType.SPEAKER).then((value) => {
  console.info(`Success to get the volume DB. ${value}`);
W
wangzx0705 已提交
3309
}).catch((error) => {
W
wangzx0705 已提交
3310
  console.error(`Fail to adjust the system volume by step. ${error}`);
W
wangzx0705 已提交
3311 3312 3313
});
```

3314
## AudioStreamManager<sup>9+</sup>
3315

3316
管理音频流。在使用AudioStreamManager的API前,需要使用[getStreamManager](#getstreammanager9)获取AudioStreamManager实例。
3317

3318
### getCurrentAudioRendererInfoArray<sup>9+</sup>
3319

3320 3321 3322 3323 3324
getCurrentAudioRendererInfoArray(callback: AsyncCallback&lt;AudioRendererChangeInfoArray&gt;): void

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

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

3326
**参数:**
3327

3328 3329 3330
| 参数名     | 类型                                 | 必填     | 说明                         |
| -------- | ----------------------------------- | -------- | --------------------------- |
| callback | AsyncCallback<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | 是     |  回调函数,返回当前音频渲染器的信息。 |
3331

3332
**示例:**
J
jiao_yanlin 已提交
3333 3334

```js
3335 3336
audioStreamManager.getCurrentAudioRendererInfoArray(async (err, AudioRendererChangeInfoArray) => {
  console.info('getCurrentAudioRendererInfoArray **** Get Callback Called ****');
3337
  if (err) {
3338
    console.error(`getCurrentAudioRendererInfoArray :ERROR: ${err}`);
3339
  } else {
3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360
    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 已提交
3361
  }
3362 3363 3364
});
```

3365
### getCurrentAudioRendererInfoArray<sup>9+</sup>
3366

3367
getCurrentAudioRendererInfoArray(): Promise&lt;AudioRendererChangeInfoArray&gt;
3368

3369
获取当前音频渲染器的信息。使用Promise异步回调。
3370

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

3373
**返回值:**
3374

3375 3376 3377
| 类型                                                                              | 说明                                    |
| ---------------------------------------------------------------------------------| --------------------------------------- |
| Promise<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)>          | Promise对象,返回当前音频渲染器信息。      |
3378 3379 3380 3381

**示例:**

```js
3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409
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}`);
  });
}
3410 3411
```

3412
### getCurrentAudioCapturerInfoArray<sup>9+</sup>
3413

3414
getCurrentAudioCapturerInfoArray(callback: AsyncCallback&lt;AudioCapturerChangeInfoArray&gt;): void
3415

3416
获取当前音频采集器的信息。使用callback异步回调。
3417

3418
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3419 3420 3421

**参数:**

3422 3423 3424
| 参数名        | 类型                                 | 必填      | 说明                                                      |
| ---------- | ----------------------------------- | --------- | -------------------------------------------------------- |
| callback   | AsyncCallback<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | 是    | 回调函数,返回当前音频采集器的信息。 |
3425 3426 3427 3428

**示例:**

```js
3429 3430
audioStreamManager.getCurrentAudioCapturerInfoArray(async (err, AudioCapturerChangeInfoArray) => {
  console.info('getCurrentAudioCapturerInfoArray **** Get Callback Called ****');
3431
  if (err) {
3432
    console.error(`getCurrentAudioCapturerInfoArray :ERROR: ${err}`);
3433
  } else {
3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452
    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}`);
        }
      }
    }
3453 3454 3455 3456
  }
});
```

3457
### getCurrentAudioCapturerInfoArray<sup>9+</sup>
3458

3459
getCurrentAudioCapturerInfoArray(): Promise&lt;AudioCapturerChangeInfoArray&gt;
3460

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

3463
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3464 3465 3466

**返回值:**

3467 3468 3469
| 类型                                                                         | 说明                                 |
| -----------------------------------------------------------------------------| ----------------------------------- |
| Promise<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)>      | Promise对象,返回当前音频渲染器信息。  |
3470 3471 3472 3473

**示例:**

```js
3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499
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}`);
  });
}
3500 3501
```

3502
### on('audioRendererChange')<sup>9+</sup>
3503

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

3506
监听音频渲染器更改事件。
3507

3508
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3509 3510 3511

**参数:**

3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523
| 参数名      | 类型        | 必填      | 说明                                                                     |
| -------- | ---------- | --------- | ------------------------------------------------------------------------ |
| type     | string     | 是        | 事件类型,支持的事件`'audioRendererChange'`:当音频渲染器发生更改时触发。     |
| callback | Callback<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | 是  |  回调函数。        |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
3524 3525 3526 3527

**示例:**

```js
3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547
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}`);
    }
3548
  }
3549
});
3550 3551
```

3552
### off('audioRendererChange')<sup>9+</sup>
3553

3554
off(type: "audioRendererChange"): void
3555

3556
取消监听音频渲染器更改事件。
3557

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

3560
**参数:**
3561

3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572
| 参数名     | 类型     | 必填 | 说明              |
| -------- | ------- | ---- | ---------------- |
| type     | string  | 是   | 事件类型,支持的事件`'audioRendererChange'`:音频渲染器更改事件。 |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
3573 3574 3575 3576

**示例:**

```js
3577 3578
audioStreamManager.off('audioRendererChange');
console.info('######### RendererChange Off is called #########');
3579 3580
```

3581
### on('audioCapturerChange')<sup>9+</sup>
3582

3583
on(type: "audioCapturerChange", callback: Callback&lt;AudioCapturerChangeInfoArray&gt;): void
3584

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

3587
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
3588 3589 3590

**参数:**

3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602
| 参数名     | 类型     | 必填      | 说明                                                                                           |
| -------- | ------- | --------- | ----------------------------------------------------------------------- |
| type     | string  | 是        | 事件类型,支持的事件`'audioCapturerChange'`:当音频采集器发生更改时触发。     |
| callback | Callback<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | 是     | 回调函数。   |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
3603

3604 3605 3606
**示例:**

```js
3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625
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}`);
    }
3626 3627 3628 3629
  }
});
```

3630
### off('audioCapturerChange')<sup>9+</sup>
3631

3632
off(type: "audioCapturerChange"): void;
3633

3634
取消监听音频采集器更改事件。
3635

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

3638
**参数:**
3639

3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650
| 参数名       | 类型     | 必填 | 说明                                                          |
| -------- | -------- | --- | ------------------------------------------------------------- |
| type     | string   |是   | 事件类型,支持的事件`'audioCapturerChange'`:音频采集器更改事件。 |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
3651

3652 3653 3654
**示例:**

```js
3655 3656 3657
audioStreamManager.off('audioCapturerChange');
console.info('######### CapturerChange Off is called #########');

3658 3659
```

3660
### isActive<sup>9+</sup>
3661

3662
isActive(volumeType: AudioVolumeType, callback: AsyncCallback&lt;boolean&gt;): void
3663

3664
获取指定音频流是否为活跃状态,使用callback方式异步返回结果。
3665

3666
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3667 3668 3669

**参数:**

3670 3671 3672 3673
| 参数名     | 类型                                | 必填 | 说明                                              |
| ---------- | ----------------------------------- | ---- | ------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音频流类型。                                      |
| callback   | AsyncCallback&lt;boolean&gt;        | 是   | 回调返回流的活跃状态,true为活跃,false为不活跃。 |
3674 3675 3676

**示例:**

3677
```js
3678 3679 3680 3681
audioStreamManager.isActive(audio.AudioVolumeType.MEDIA, (err, value) => {
  if (err) {
    console.error(`Failed to obtain the active status of the stream. ${err}`);
    return;
3682
  }
3683
  console.info(`Callback invoked to indicate that the active status of the stream is obtained ${value}.`);
3684
});
3685 3686
```

3687
### isActive<sup>9+</sup>
3688

3689
isActive(volumeType: AudioVolumeType): Promise&lt;boolean&gt;
3690

3691
获取指定音频流是否为活跃状态,使用Promise方式异步返回结果。
3692

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

3695 3696 3697 3698 3699 3700
**参数:**

| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音频流类型。 |

3701 3702
**返回值:**

3703 3704 3705
| 类型                   | 说明                                                     |
| ---------------------- | -------------------------------------------------------- |
| Promise&lt;boolean&gt; | Promise回调返回流的活跃状态,true为活跃,false为不活跃。 |
3706 3707 3708 3709

**示例:**

```js
3710 3711
audioStreamManager.isActive(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the active status of the stream is obtained ${value}.`);
3712
});
3713 3714
```

X
Xiangyu Li 已提交
3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726
### getAudioEffectInfoArray<sup>10+</sup>

getAudioEffectInfoArray(content: ContentType, usage: StreamUsage, callback: AsyncCallback&lt;AudioEffectInfoArray&gt;): void

获取当前音效模式的信息。使用callback异步回调。

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

**参数:**

| 参数名    | 类型                                | 必填     | 说明                         |
| -------- | ----------------------------------- | -------- | --------------------------- |
3727 3728
| content  | [ContentType](#contenttype)                                    | 是     |  音频内容类型。                  |
| usage    | [StreamUsage](#streamusage)                                    | 是     |  音频流使用类型。                |
X
Xiangyu Li 已提交
3729 3730 3731 3732 3733
| callback | AsyncCallback<[AudioEffectInfoArray](#audioeffectinfoarray10)> | 是     |  回调函数,返回当前音效模式的信息。|

**示例:**

```js
Q
update  
Qin Peng 已提交
3734
audioStreamManager.getAudioEffectInfoArray(audio.ContentType.CONTENT_TYPE_MUSIC, audio.StreamUsage.STREAM_USAGE_MEDIA, async (err, audioEffectInfoArray) => {
X
Xiangyu Li 已提交
3735 3736 3737 3738 3739
  console.info('getAudioEffectInfoArray **** Get Callback Called ****');
  if (err) {
    console.error(`getAudioEffectInfoArray :ERROR: ${err}`);
    return;
  } else {
X
Xiangyu Li 已提交
3740
    console.info(`The effect modes are: ${audioEffectInfoArray}`);
X
Xiangyu Li 已提交
3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756
  }
});
```

### getAudioEffectInfoArray<sup>10+</sup>

getAudioEffectInfoArray(content: ContentType, usage: StreamUsage): Promise&lt;AudioEffectInfoArray&gt;

获取当前音效模式的信息。使用Promise异步回调。

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

**参数:**

| 参数名    | 类型                                | 必填     | 说明                         |
| -------- | ----------------------------------- | -------- | --------------------------- |
Q
update  
Qin Peng 已提交
3757 3758
| content  | [ContentType](#contenttype)         | 是     |  音频内容类型。                 |
| usage    | [StreamUsage](#streamusage)         | 是     |  音频流使用类型。               |
X
Xiangyu Li 已提交
3759 3760 3761 3762 3763 3764 3765 3766 3767 3768

**返回值:**

| 类型                                                                      | 说明                                    |
| --------------------------------------------------------------------------| --------------------------------------- |
| Promise<[AudioEffectInfoArray](#audioeffectinfoarray10)>                  | Promise对象,返回当前音效模式的信息。      |

**示例:**

```js
X
Xiangyu Li 已提交
3769
audioStreamManager.getAudioEffectInfoArray(audio.ContentType.CONTENT_TYPE_MUSIC, audio.StreamUsage.STREAM_USAGE_MEDIA).then((audioEffectInfoArray) => {
X
Xiangyu Li 已提交
3770
  console.info('getAudioEffectInfoArray ######### Get Promise is called ##########');
X
Xiangyu Li 已提交
3771
  console.info(`The effect modes are: ${audioEffectInfoArray}`);
Q
update  
Qin Peng 已提交
3772 3773 3774
}).catch((err) => {
  console.error(`getAudioEffectInfoArray :ERROR: ${err}`);
});
X
Xiangyu Li 已提交
3775 3776
```

3777
## AudioRoutingManager<sup>9+</sup>
3778

3779
音频路由管理。在使用AudioRoutingManager的接口前,需要使用[getRoutingManager](#getroutingmanager9)获取AudioRoutingManager实例。
3780

3781
### getDevices<sup>9+</sup>
3782

3783 3784 3785 3786 3787
getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback&lt;AudioDeviceDescriptors&gt;): void

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
3788 3789 3790

**参数:**

3791 3792 3793 3794
| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
| deviceFlag | [DeviceFlag](#deviceflag)                                    | 是   | 设备类型的flag。     |
| callback   | AsyncCallback&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | 是   | 回调,返回设备列表。 |
3795 3796 3797 3798

**示例:**

```js
3799 3800 3801 3802 3803 3804
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.');
3805 3806 3807
});
```

3808
### getDevices<sup>9+</sup>
3809

3810
getDevices(deviceFlag: DeviceFlag): Promise&lt;AudioDeviceDescriptors&gt;
3811

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

3814 3815 3816 3817 3818 3819 3820
**系统能力:** SystemCapability.Multimedia.Audio.Device

**参数:**

| 参数名     | 类型                      | 必填 | 说明             |
| ---------- | ------------------------- | ---- | ---------------- |
| deviceFlag | [DeviceFlag](#deviceflag) | 是   | 设备类型的flag。 |
3821 3822 3823

**返回值:**

3824 3825 3826
| 类型                                                         | 说明                      |
| ------------------------------------------------------------ | ------------------------- |
| Promise&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | Promise回调返回设备列表。 |
3827 3828 3829 3830

**示例:**

```js
3831 3832
audioRoutingManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((data) => {
  console.info('Promise returned to indicate that the device list is obtained.');
3833 3834 3835
});
```

3836
### on('deviceChange')<sup>9+</sup>
3837

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

3840
设备更改。音频设备连接状态变化。
3841

3842
**系统能力:** SystemCapability.Multimedia.Audio.Device
3843 3844 3845

**参数:**

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

3852
**错误码:**
3853

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

3856 3857 3858
| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
3859 3860 3861 3862

**示例:**

```js
3863 3864 3865 3866 3867
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);
3868 3869 3870
});
```

3871
### off('deviceChange')<sup>9+</sup>
3872

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

3875
取消订阅音频设备连接变化事件。
3876

3877
**系统能力:** SystemCapability.Multimedia.Audio.Device
3878 3879 3880

**参数:**

3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892
| 参数名   | 类型                                                | 必填 | 说明                                       |
| -------- | --------------------------------------------------- | ---- | ------------------------------------------ |
| type     | string                                              | 是   | 订阅的事件的类型。支持事件:'deviceChange' |
| callback | Callback<[DeviceChangeAction](#devicechangeaction)> | 否   | 获取设备更新详情。                         |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
J
jiao_yanlin 已提交
3893

3894
**示例:**
3895

3896
```js
W
wangtao 已提交
3897
audioRoutingManager.off('deviceChange');
3898
```
3899

3900
### selectInputDevice<sup>9+</sup>
3901

3902
selectInputDevice(inputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback&lt;void&gt;): void
3903

3904
选择音频输入设备,当前只能选择一个输入设备,使用callback方式异步返回结果。
3905

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

3908
**系统能力:** SystemCapability.Multimedia.Audio.Device
3909

3910
**参数:**
3911

3912 3913 3914 3915
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| inputAudioDevices           | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输入设备类。               |
| callback                    | AsyncCallback&lt;void&gt;                                    | 是   | 回调,返回选择输入设备结果。 |
3916 3917 3918

**示例:**
```js
3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930
let inputAudioDeviceDescriptor = [{
    deviceRole : audio.DeviceRole.INPUT_DEVICE,
    deviceType : audio.DeviceType.EARPIECE,
    id : 1,
    name : "",
    address : "",
    sampleRates : [44100],
    channelCounts : [2],
    channelMasks : [0],
    networkId : audio.LOCAL_NETWORK_ID,
    interruptGroupId : 1,
    volumeGroupId : 1,
3931
    displayName : "",
3932 3933 3934 3935 3936 3937 3938 3939 3940 3941
}];

async function selectInputDevice(){
  audioRoutingManager.selectInputDevice(inputAudioDeviceDescriptor, (err) => {
    if (err) {
      console.error(`Result ERROR: ${err}`);
    } else {
      console.info('Select input devices result callback: SUCCESS'); }
  });
}
3942 3943
```

3944
### selectInputDevice<sup>9+</sup>
3945

3946
selectInputDevice(inputAudioDevices: AudioDeviceDescriptors): Promise&lt;void&gt;
3947

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
3953 3954 3955

**参数:**

3956 3957 3958 3959 3960 3961 3962 3963 3964
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| inputAudioDevices           | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输入设备类。               |

**返回值:**

| 类型                  | 说明                         |
| --------------------- | --------------------------- |
| Promise&lt;void&gt;   | Promise返回选择输入设备结果。 |
3965 3966

**示例:**
J
jiao_yanlin 已提交
3967

3968
```js
3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980
let inputAudioDeviceDescriptor = [{
    deviceRole : audio.DeviceRole.INPUT_DEVICE,
    deviceType : audio.DeviceType.EARPIECE,
    id : 1,
    name : "",
    address : "",
    sampleRates : [44100],
    channelCounts : [2],
    channelMasks : [0],
    networkId : audio.LOCAL_NETWORK_ID,
    interruptGroupId : 1,
    volumeGroupId : 1,
3981
    displayName : "",
3982 3983 3984 3985 3986 3987 3988 3989 3990
}];

async function getRoutingManager(){
    audioRoutingManager.selectInputDevice(inputAudioDeviceDescriptor).then(() => {
      console.info('Select input devices result promise: SUCCESS');
    }).catch((err) => {
      console.error(`Result ERROR: ${err}`);
    });
}
3991 3992
```

3993
### setCommunicationDevice<sup>9+</sup>
3994

3995
setCommunicationDevice(deviceType: CommunicationDeviceType, active: boolean, callback: AsyncCallback&lt;void&gt;): void
3996

3997
设置通信设备激活状态,使用callback方式异步返回结果。
3998

3999
**系统能力:** SystemCapability.Multimedia.Audio.Communication
4000

4001
**参数:**
4002

4003 4004 4005 4006 4007
| 参数名     | 类型                                  | 必填 | 说明                     |
| ---------- | ------------------------------------- | ---- | ------------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是   | 音频设备类型。       |
| active     | boolean                               | 是   | 设备激活状态。           |
| callback   | AsyncCallback&lt;void&gt;             | 是   | 回调返回设置成功或失败。 |
4008 4009 4010 4011

**示例:**

```js
4012 4013 4014 4015 4016 4017
audioRoutingManager.setCommunicationDevice(audio.CommunicationDeviceType.SPEAKER, true, (err) => {
  if (err) {
    console.error(`Failed to set the active status of the device. ${err}`);
    return;
  }
  console.info('Callback invoked to indicate that the device is set to the active status.');
4018
});
4019 4020
```

4021
### setCommunicationDevice<sup>9+</sup>
4022

4023
setCommunicationDevice(deviceType: CommunicationDeviceType, active: boolean): Promise&lt;void&gt;
4024

4025 4026 4027
设置通信设备激活状态,使用Promise方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Communication
4028

4029
**参数:**
4030

4031 4032 4033 4034
| 参数名     | 类型                                                   | 必填 | 说明               |
| ---------- | ----------------------------------------------------- | ---- | ------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9)  | 是   | 活跃音频设备类型。 |
| active     | boolean                                               | 是   | 设备激活状态。     |
4035

4036
**返回值:**
4037

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

4042 4043
**示例:**

J
jiao_yanlin 已提交
4044
```js
4045 4046
audioRoutingManager.setCommunicationDevice(audio.CommunicationDeviceType.SPEAKER, true).then(() => {
  console.info('Promise returned to indicate that the device is set to the active status.');
4047 4048
});
```
4049

4050
### isCommunicationDeviceActive<sup>9+</sup>
4051

4052
isCommunicationDeviceActive(deviceType: CommunicationDeviceType, callback: AsyncCallback&lt;boolean&gt;): void
4053

4054 4055 4056
获取指定通信设备的激活状态,使用callback方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Communication
4057 4058 4059

**参数:**

4060 4061 4062 4063
| 参数名     | 类型                                                  | 必填 | 说明                     |
| ---------- | ---------------------------------------------------- | ---- | ------------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是   | 活跃音频设备类型。       |
| callback   | AsyncCallback&lt;boolean&gt;                         | 是   | 回调返回设备的激活状态。 |
4064 4065 4066 4067

**示例:**

```js
4068 4069 4070 4071
audioRoutingManager.isCommunicationDeviceActive(audio.CommunicationDeviceType.SPEAKER, (err, value) => {
  if (err) {
    console.error(`Failed to obtain the active status of the device. ${err}`);
    return;
J
jiao_yanlin 已提交
4072
  }
4073
  console.info('Callback invoked to indicate that the active status of the device is obtained.');
4074 4075 4076
});
```

4077
### isCommunicationDeviceActive<sup>9+</sup>
4078

4079
isCommunicationDeviceActive(deviceType: CommunicationDeviceType): Promise&lt;boolean&gt;
4080

4081
获取指定通信设备的激活状态,使用Promise方式异步返回结果。
4082

4083
**系统能力:** SystemCapability.Multimedia.Audio.Communication
4084

4085
**参数:**
4086

4087 4088 4089
| 参数名     | 类型                                                  | 必填 | 说明               |
| ---------- | ---------------------------------------------------- | ---- | ------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是   | 活跃音频设备类型。 |
4090

4091
**返回值:**
4092

4093 4094 4095
| Type                   | Description                     |
| ---------------------- | ------------------------------- |
| Promise&lt;boolean&gt; | Promise回调返回设备的激活状态。 |
4096

4097 4098
**示例:**

J
jiao_yanlin 已提交
4099
```js
4100 4101
audioRoutingManager.isCommunicationDeviceActive(audio.CommunicationDeviceType.SPEAKER).then((value) => {
  console.info(`Promise returned to indicate that the active status of the device is obtained ${value}.`);
J
jiao_yanlin 已提交
4102
});
4103
```
J
jiao_yanlin 已提交
4104

4105
### selectOutputDevice<sup>9+</sup>
4106

4107
selectOutputDevice(outputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback&lt;void&gt;): void
4108

4109 4110 4111 4112 4113
选择音频输出设备,当前只能选择一个输出设备,使用callback方式异步返回结果。

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
4114 4115 4116

**参数:**

4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| outputAudioDevices          | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输出设备类。               |
| callback                    | AsyncCallback&lt;void&gt;                                    | 是   | 回调,返回获取输出设备结果。 |

**示例:**
```js
let outputAudioDeviceDescriptor = [{
    deviceRole : audio.DeviceRole.OUTPUT_DEVICE,
    deviceType : audio.DeviceType.SPEAKER,
    id : 1,
    name : "",
    address : "",
    sampleRates : [44100],
    channelCounts : [2],
    channelMasks : [0],
    networkId : audio.LOCAL_NETWORK_ID,
    interruptGroupId : 1,
    volumeGroupId : 1,
4136
    displayName : "",
4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185
}];

async function selectOutputDevice(){
  audioRoutingManager.selectOutputDevice(outputAudioDeviceDescriptor, (err) => {
    if (err) {
      console.error(`Result ERROR: ${err}`);
    } else {
      console.info('Select output devices result callback: SUCCESS'); }
  });
}
```

### selectOutputDevice<sup>9+</sup>

selectOutputDevice(outputAudioDevices: AudioDeviceDescriptors): Promise&lt;void&gt;

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

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

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

**参数:**

| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| outputAudioDevices          | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输出设备类。               |

**返回值:**

| 类型                  | 说明                         |
| --------------------- | --------------------------- |
| Promise&lt;void&gt;   | Promise返回选择输出设备结果。 |

**示例:**

```js
let outputAudioDeviceDescriptor = [{
    deviceRole : audio.DeviceRole.OUTPUT_DEVICE,
    deviceType : audio.DeviceType.SPEAKER,
    id : 1,
    name : "",
    address : "",
    sampleRates : [44100],
    channelCounts : [2],
    channelMasks : [0],
    networkId : audio.LOCAL_NETWORK_ID,
    interruptGroupId : 1,
    volumeGroupId : 1,
4186
    displayName : "",
4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220
}];

async function selectOutputDevice(){
  audioRoutingManager.selectOutputDevice(outputAudioDeviceDescriptor).then(() => {
    console.info('Select output devices result promise: SUCCESS');
  }).catch((err) => {
    console.error(`Result ERROR: ${err}`);
  });
}
```

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

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

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

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

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

**参数:**

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

**示例:**
```js
let outputAudioRendererFilter = {
  uid : 20010041,
  rendererInfo : {
J
jiao_yanlin 已提交
4221 4222
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237
    rendererFlags : 0 },
  rendererId : 0 };
  
let outputAudioDeviceDescriptor = [{
    deviceRole : audio.DeviceRole.OUTPUT_DEVICE,
    deviceType : audio.DeviceType.SPEAKER,
    id : 1,
    name : "",
    address : "",
    sampleRates : [44100],
    channelCounts : [2],
    channelMasks : [0],
    networkId : audio.LOCAL_NETWORK_ID,
    interruptGroupId : 1,
    volumeGroupId : 1,
4238
    displayName : "",
4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279
}];

async function selectOutputDeviceByFilter(){
  audioRoutingManager.selectOutputDeviceByFilter(outputAudioRendererFilter, outputAudioDeviceDescriptor, (err) => {
    if (err) {
      console.error(`Result ERROR: ${err}`);
    } else {
      console.info('Select output devices by filter result callback: SUCCESS'); }
  });
}
```

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

selectOutputDeviceByFilter(filter: AudioRendererFilter, outputAudioDevices: AudioDeviceDescriptors): Promise&lt;void&gt;

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

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

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

**参数:**

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

**返回值:**

| 类型                  | 说明                         |
| --------------------- | --------------------------- |
| Promise&lt;void&gt;   | Promise返回选择输出设备结果。 |

**示例:**

```js
let outputAudioRendererFilter = {
  uid : 20010041,
  rendererInfo : {
J
jiao_yanlin 已提交
4280 4281
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296
    rendererFlags : 0 },
  rendererId : 0 };

let outputAudioDeviceDescriptor = [{
    deviceRole : audio.DeviceRole.OUTPUT_DEVICE,
    deviceType : audio.DeviceType.SPEAKER,
    id : 1,
    name : "",
    address : "",
    sampleRates : [44100],
    channelCounts : [2],
    channelMasks : [0],
    networkId : audio.LOCAL_NETWORK_ID,
    interruptGroupId : 1,
    volumeGroupId : 1,
4297
    displayName : "",
4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308
}];

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

4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328
### getPreferOutputDeviceForRendererInfo<sup>10+</sup>

getPreferOutputDeviceForRendererInfo(rendererInfo: AudioRendererInfo, callback: AsyncCallback&lt;AudioDeviceDescriptors&gt;): void

根据音频信息,返回优先级最高的输出设备,使用callback方式异步返回结果。

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

**参数:**

| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| rendererInfo                | [AudioRendererInfo](#audiorendererinfo8)                     | 是   | 表示渲染器信息。             |
| callback                    | AsyncCallback&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt;  | 是   | 回调,返回优先级最高的输出设备信息。 |

**示例:**
```js
let rendererInfo = {
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4329
    rendererFlags : 0 }
4330 4331 4332 4333

async function getPreferOutputDevice() {
  audioRoutingManager.getPreferOutputDeviceForRendererInfo(rendererInfo, (err, desc) => {
    if (err) {
4334
      console.error(`Result ERROR: ${err}`);
4335
    } else {
4336
      console.info(`device descriptor: ${desc}`);
4337 4338 4339 4340 4341
    }
  });
}
```

4342
### getPreferOutputDeviceForRendererInfo<sup>10+</sup>
4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360
getPreferOutputDeviceForRendererInfo(rendererInfo: AudioRendererInfo): Promise&lt;AudioDeviceDescriptors&gt;

根据音频信息,返回优先级最高的输出设备,使用promise方式异步返回结果。

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

**参数:**

| 参数名                 | 类型                                                         | 必填 | 说明                      |
| ----------------------| ------------------------------------------------------------ | ---- | ------------------------- |
| rendererInfo          | [AudioRendererInfo](#audiorendererinfo8)                     | 是   | 表示渲染器信息。            |

**返回值:**

| 类型                  | 说明                         |
| --------------------- | --------------------------- |
| Promise&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt;   | Promise返回优先级最高的输出设备信息。 |

4361 4362 4363 4364 4365 4366 4367 4368
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |

4369 4370 4371 4372 4373 4374
**示例:**

```js
let rendererInfo = {
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4375
    rendererFlags : 0 }
4376 4377 4378

async function getPreferOutputDevice() {
  audioRoutingManager.getPreferOutputDeviceForRendererInfo(rendererInfo).then((desc) => {
4379
    console.info(`device descriptor: ${desc}`);
4380
  }).catch((err) => {
4381
    console.error(`Result ERROR: ${err}`);
4382 4383 4384 4385 4386 4387 4388 4389 4390 4391
  })
}
```

### on('preferOutputDeviceChangeForRendererInfo')<sup>10+</sup>

on(type: 'preferOutputDeviceChangeForRendererInfo', rendererInfo: AudioRendererInfo, callback: Callback<AudioDeviceDescriptors\>): void

订阅最高优先级输出设备变化事件,使用callback获取最高优先级输出设备。

4392 4393
**系统能力:** SystemCapability.Multimedia.Audio.Device

4394 4395 4396 4397 4398 4399 4400 4401
**参数:**

| 参数名   | 类型                                                 | 必填 | 说明                                       |
| :------- | :--------------------------------------------------- | :--- | :----------------------------------------- |
| type     | string                                               | 是   | 订阅的事件的类型。支持事件:'preferOutputDeviceChangeForRendererInfo' |
| rendererInfo  | [AudioRendererInfo](#audiorendererinfo8)        | 是   | 表示渲染器信息。              |
| callback | Callback<[AudioDeviceDescriptors](#audiodevicedescriptors)\> | 是   | 获取优先级最高的输出设备信息。                         |

4402 4403 4404 4405 4406 4407 4408 4409
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |

4410 4411 4412 4413 4414 4415
**示例:**

```js
let rendererInfo = {
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4416
    rendererFlags : 0 }
4417 4418

audioRoutingManager.on('preferOutputDeviceChangeForRendererInfo', rendererInfo, (desc) => {
4419
  console.info(`device descriptor: ${desc}`);
4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437
});
```

### off('preferOutputDeviceChangeForRendererInfo')<sup>10+</sup>

off(type: 'preferOutputDeviceChangeForRendererInfo', callback?: Callback<AudioDeviceDescriptors\>): void

取消订阅最高优先级输出音频设备变化事件。

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

**参数:**

| 参数名   | 类型                                                | 必填 | 说明                                       |
| -------- | --------------------------------------------------- | ---- | ------------------------------------------ |
| type     | string                                              | 是   | 订阅的事件的类型。支持事件:'preferOutputDeviceChangeForRendererInfo' |
| callback | Callback<[AudioDeviceDescriptors](#audiodevicedescriptors)> | 否   | 监听方法的回调函数。                         |

4438 4439 4440 4441 4442 4443 4444 4445
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |

4446 4447 4448
**示例:**

```js
W
wangtao 已提交
4449
audioRoutingManager.off('preferOutputDeviceChangeForRendererInfo');
4450 4451
```

4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469
## AudioRendererChangeInfoArray<sup>9+</sup>

数组类型,AudioRenderChangeInfo数组,只读。

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

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

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

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

| 名称               | 类型                                       | 可读 | 可写 | 说明                          |
| -------------------| ----------------------------------------- | ---- | ---- | ---------------------------- |
| streamId           | number                                    | 是   | 否   | 音频流唯一id。                |
| clientUid          | number                                    | 是   | 否   | 音频渲染器客户端应用程序的Uid。<br/>此接口为系统接口。 |
| rendererInfo       | [AudioRendererInfo](#audiorendererinfo8)  | 是   | 否   | 音频渲染器信息。               |
| rendererState      | [AudioState](#audiostate)                 | 是   | 否   | 音频状态。<br/>此接口为系统接口。|
4470
| deviceDescriptors  | [AudioDeviceDescriptors](#audiodevicedescriptors)      | 是   | 否   | 音频设备描述。|
4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528

**示例:**

```js

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

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

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}`);
    }
  }
});
```


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

数组类型,AudioCapturerChangeInfo数组,只读。

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

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

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

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

| 名称               | 类型                                       | 可读 | 可写 | 说明                          |
| -------------------| ----------------------------------------- | ---- | ---- | ---------------------------- |
| streamId           | number                                    | 是   | 否   | 音频流唯一id。                |
| clientUid          | number                                    | 是   | 否   | 音频采集器客户端应用程序的Uid。<br/>此接口为系统接口。 |
| capturerInfo       | [AudioCapturerInfo](#audiocapturerinfo8)  | 是   | 否   | 音频采集器信息。               |
| capturerState      | [AudioState](#audiostate)                 | 是   | 否   | 音频状态。<br/>此接口为系统接口。|
4529
| deviceDescriptors  | [AudioDeviceDescriptors](#audiodevicedescriptors)      | 是   | 否   | 音频设备描述。|
4530 4531 4532 4533

**示例:**

```js
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
import audio from '@ohos.multimedia.audio';

const audioManager = audio.getAudioManager();
let audioStreamManager = audioManager.getStreamManager();

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}`);
    }
J
jiao_yanlin 已提交
4563
  }
4564 4565 4566
});
```

4567 4568
## AudioEffectInfoArray<sup>10+</sup>

Q
update  
Qin Peng 已提交
4569
待查询ContentType和StreamUsage组合场景下的音效模式数组类型,[AudioEffectMode](#audioeffectmode10)数组,只读。
4570

4571
## AudioDeviceDescriptors
Z
zengyawen 已提交
4572

4573
设备属性数组类型,为[AudioDeviceDescriptor](#audiodevicedescriptor)的数组,只读。
M
mamingshuai 已提交
4574

4575
## AudioDeviceDescriptor
Z
zengyawen 已提交
4576

4577
描述音频设备。
Z
zengyawen 已提交
4578

4579
**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
4580

4581 4582 4583 4584
| 名称                          | 类型                       | 可读 | 可写 | 说明       |
| ----------------------------- | -------------------------- | ---- | ---- | ---------- |
| deviceRole                    | [DeviceRole](#devicerole)  | 是   | 否   | 设备角色。 |
| deviceType                    | [DeviceType](#devicetype)  | 是   | 否   | 设备类型。 |
J
jiao_yanlin 已提交
4585
| id<sup>9+</sup>               | number                     | 是   | 否   | 设备id,唯一。  |
J
jiaoyanlin3 已提交
4586 4587
| name<sup>9+</sup>             | string                     | 是   | 否   | 设备名称。<br>如果是蓝牙设备,需要申请权限ohos.permission.USE_BLUETOOTH。 |
| address<sup>9+</sup>          | string                     | 是   | 否   | 设备地址。<br>如果是蓝牙设备,需要申请权限ohos.permission.USE_BLUETOOTH。 |
4588 4589 4590
| sampleRates<sup>9+</sup>      | Array&lt;number&gt;        | 是   | 否   | 支持的采样率。 |
| channelCounts<sup>9+</sup>    | Array&lt;number&gt;        | 是   | 否   | 支持的通道数。 |
| channelMasks<sup>9+</sup>     | Array&lt;number&gt;        | 是   | 否   | 支持的通道掩码。 |
L
li-yifan2 已提交
4591
| displayName<sup>10+</sup>     | string                     | 是   | 否   | 设备显示名。 |
4592 4593 4594
| networkId<sup>9+</sup>        | string                     | 是   | 否   | 设备组网的ID。<br/>此接口为系统接口。 |
| interruptGroupId<sup>9+</sup> | number                     | 是   | 否   | 设备所处的焦点组ID。<br/>此接口为系统接口。 |
| volumeGroupId<sup>9+</sup>    | number                     | 是   | 否   | 设备所处的音量组ID。<br/>此接口为系统接口。 |
Z
zengyawen 已提交
4595

4596 4597 4598
**示例:**

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

4601 4602 4603
function displayDeviceProp(value) {
  deviceRoleValue = value.deviceRole;
  deviceTypeValue = value.deviceType;
4604
}
4605

4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618
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');
  }
});
```
4619

4620
## AudioRendererFilter<sup>9+</sup>
4621

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

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

4626 4627
| 名称          | 类型                                     | 必填 | 说明          |
| -------------| ---------------------------------------- | ---- | -------------- |
4628
| uid          | number                                   |  否  | 表示应用ID。<br> **系统能力:** SystemCapability.Multimedia.Audio.Core|
4629 4630
| rendererInfo | [AudioRendererInfo](#audiorendererinfo8) |  否  | 表示渲染器信息。<br> **系统能力:** SystemCapability.Multimedia.Audio.Renderer|
| rendererId   | number                                   |  否  | 音频流唯一id。<br> **系统能力:** SystemCapability.Multimedia.Audio.Renderer|
4631 4632 4633 4634

**示例:**

```js
4635 4636 4637 4638 4639 4640 4641
let outputAudioRendererFilter = {
  "uid":20010041,
  "rendererInfo": {
    "contentType":audio.ContentType.CONTENT_TYPE_MUSIC,
    "streamUsage":audio.StreamUsage.STREAM_USAGE_MEDIA,
    "rendererFlags":0 },
  "rendererId":0 };
4642 4643
```

4644
## AudioRenderer<sup>8+</sup>
Z
zengyawen 已提交
4645

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

4648
### 属性
Z
zengyawen 已提交
4649

4650
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4651

4652 4653 4654
| 名称  | 类型                     | 可读 | 可写 | 说明               |
| ----- | -------------------------- | ---- | ---- | ------------------ |
| state<sup>8+</sup> | [AudioState](#audiostate8) | 是   | 否   | 音频渲染器的状态。 |
Z
zengyawen 已提交
4655 4656 4657

**示例:**

J
jiao_yanlin 已提交
4658
```js
4659
let state = audioRenderer.state;
Z
zengyawen 已提交
4660 4661
```

4662
### getRendererInfo<sup>8+</sup>
Z
zengyawen 已提交
4663

4664
getRendererInfo(callback: AsyncCallback<AudioRendererInfo\>): void
Z
zengyawen 已提交
4665

4666
获取当前被创建的音频渲染器的信息,使用callback方式异步返回结果。
Z
zengyawen 已提交
4667

4668
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4669 4670 4671

**参数:**

4672 4673 4674
| 参数名   | 类型                                                     | 必填 | 说明                   |
| :------- | :------------------------------------------------------- | :--- | :--------------------- |
| callback | AsyncCallback<[AudioRendererInfo](#audiorendererinfo8)\> | 是   | 返回音频渲染器的信息。 |
Z
zengyawen 已提交
4675 4676 4677

**示例:**

J
jiao_yanlin 已提交
4678
```js
4679 4680 4681 4682 4683
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}`);
L
lwx1059628 已提交
4684
});
Z
zengyawen 已提交
4685 4686
```

4687
### getRendererInfo<sup>8+</sup>
Z
zengyawen 已提交
4688

4689
getRendererInfo(): Promise<AudioRendererInfo\>
Z
zengyawen 已提交
4690

4691
获取当前被创建的音频渲染器的信息,使用Promise方式异步返回结果。
Z
zengyawen 已提交
4692

4693
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4694

4695
**返回值:**
Z
zengyawen 已提交
4696

4697 4698 4699
| 类型                                               | 说明                            |
| -------------------------------------------------- | ------------------------------- |
| Promise<[AudioRendererInfo](#audiorendererinfo8)\> | Promise用于返回音频渲染器信息。 |
Z
zengyawen 已提交
4700 4701 4702

**示例:**

J
jiao_yanlin 已提交
4703
```js
4704 4705 4706 4707 4708 4709 4710 4711
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}`);
});
Z
zengyawen 已提交
4712 4713
```

4714
### getStreamInfo<sup>8+</sup>
Z
zengyawen 已提交
4715

4716
getStreamInfo(callback: AsyncCallback<AudioStreamInfo\>): void
Z
zengyawen 已提交
4717

4718
获取音频流信息,使用callback方式异步返回结果。
Z
zengyawen 已提交
4719

4720
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4721 4722 4723

**参数:**

4724 4725 4726
| 参数名   | 类型                                                 | 必填 | 说明                 |
| :------- | :--------------------------------------------------- | :--- | :------------------- |
| callback | AsyncCallback<[AudioStreamInfo](#audiostreaminfo8)\> | 是   | 回调返回音频流信息。 |
Z
zengyawen 已提交
4727 4728 4729

**示例:**

J
jiao_yanlin 已提交
4730
```js
4731 4732 4733 4734 4735 4736
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}`);
L
lwx1059628 已提交
4737
});
Z
zengyawen 已提交
4738 4739
```

4740
### getStreamInfo<sup>8+</sup>
Z
zengyawen 已提交
4741

4742
getStreamInfo(): Promise<AudioStreamInfo\>
Z
zengyawen 已提交
4743

4744
获取音频流信息,使用Promise方式异步返回结果。
Z
zengyawen 已提交
4745

4746
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4747

4748 4749 4750 4751 4752
**返回值:**

| 类型                                           | 说明                   |
| :--------------------------------------------- | :--------------------- |
| Promise<[AudioStreamInfo](#audiostreaminfo8)\> | Promise返回音频流信息. |
Z
zengyawen 已提交
4753 4754 4755

**示例:**

J
jiao_yanlin 已提交
4756
```js
4757 4758 4759 4760 4761 4762 4763 4764 4765
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}`);
});
Z
zengyawen 已提交
4766 4767
```

4768
### getAudioStreamId<sup>9+</sup>
4769

4770
getAudioStreamId(callback: AsyncCallback<number\>): void
4771

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

4774
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
4775 4776 4777

**参数:**

4778 4779 4780
| 参数名   | 类型                                                 | 必填 | 说明                 |
| :------- | :--------------------------------------------------- | :--- | :------------------- |
| callback | AsyncCallback<number\> | 是   | 回调返回音频流id。 |
4781 4782 4783 4784

**示例:**

```js
4785 4786
audioRenderer.getAudioStreamId((err, streamid) => {
  console.info(`Renderer GetStreamId: ${streamid}`);
4787 4788 4789
});
```

4790
### getAudioStreamId<sup>9+</sup>
4791

4792
getAudioStreamId(): Promise<number\>
4793

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

4796
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
4797 4798 4799

**返回值:**

4800 4801 4802
| 类型                                           | 说明                   |
| :--------------------------------------------- | :--------------------- |
| Promise<number\> | Promise返回音频流id。 |
4803 4804 4805 4806

**示例:**

```js
4807 4808
audioRenderer.getAudioStreamId().then((streamid) => {
  console.info(`Renderer getAudioStreamId: ${streamid}`);
4809
}).catch((err) => {
4810
  console.error(`ERROR: ${err}`);
4811 4812 4813
});
```

Q
Qin Peng 已提交
4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825
### setAudioEffectMode<sup>10+</sup>

setAudioEffectMode(mode: AudioEffectMode, callback: AsyncCallback\<void>): void

设置当前音效模式。使用callback方式异步返回结果。

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

**参数:**

| 参数名   | 类型                                     | 必填 | 说明                     |
| -------- | ---------------------------------------- | ---- | ------------------------ |
Q
update  
Qin Peng 已提交
4826 4827
| mode     | [AudioEffectMode](#audioeffectmode10)    | 是   | 音效模式。               |
| callback | AsyncCallback\<void>                     | 是   | 用于返回执行结果的回调。  |
Q
Qin Peng 已提交
4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852

**示例:**

```js
audioRenderer.setAudioEffectMode(audio.AudioEffectMode.EFFECT_DEFAULT, (err) => {
  if (err) {
    console.error('Failed to set params');
  } else {
    console.info('Callback invoked to indicate a successful audio effect mode setting.');
  }
});
```

### setAudioEffectMode<sup>10+</sup>

setAudioEffectMode(mode: AudioEffectMode): Promise\<void>

设置当前音效模式。使用Promise方式异步返回结果。

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

**参数:**

| 参数名 | 类型                                     | 必填 | 说明         |
| ------ | ---------------------------------------- | ---- | ------------ |
Q
update  
Qin Peng 已提交
4853
| mode   | [AudioEffectMode](#audioeffectmode10)   | 是   | 音效模式。 |
Q
Qin Peng 已提交
4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888

**返回值:**

| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise用于返回执行结果。 |

**示例:**

```js
audioRenderer.setAudioEffectMode(audio.AudioEffectMode.EFFECT_DEFAULT).then(() => {
  console.info('setAudioEffectMode SUCCESS');
}).catch((err) => {
  console.error(`ERROR: ${err}`);
});
```

### getAudioEffectMode<sup>10+</sup>

getAudioEffectMode(callback: AsyncCallback\<AudioEffectMode>): void

获取当前音效模式。使用callback方式异步返回结果。

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

**参数:**

| 参数名   | 类型                                                    | 必填 | 说明               |
| -------- | ------------------------------------------------------- | ---- | ------------------ |
| callback | AsyncCallback<[AudioEffectMode](#audioeffectmode10)> | 是   | 回调返回当前音效模式。 |

**示例:**

```js
audioRenderer.getAudioEffectMode((err, effectmode) => {
Q
update  
Qin Peng 已提交
4889 4890 4891 4892 4893
  if (err) {
    console.error('Failed to get params');
  } else {
    console.info(`getAudioEffectMode: ${effectmode}`);
  }
Q
Qin Peng 已提交
4894 4895 4896
});
```

Q
update  
Qin Peng 已提交
4897
### getAudioEffectMode<sup>10+</sup>
Q
Qin Peng 已提交
4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920

getAudioEffectMode(): Promise\<AudioEffectMode>

获取当前音效模式。使用Promise方式异步返回结果。

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

**返回值:**

| 类型                                              | 说明                      |
| ------------------------------------------------- | ------------------------- |
| Promise<[AudioEffectMode](#audioeffectmode10)> | Promise回调返回当前音效模式。 |

**示例:**

```js
audioRenderer.getAudioEffectMode().then((effectmode) => {
  console.info(`getAudioEffectMode: ${effectmode}`);
}).catch((err) => {
  console.error(`ERROR: ${err}`);
});
```

4921
### start<sup>8+</sup>
Z
zengyawen 已提交
4922

4923
start(callback: AsyncCallback<void\>): void
Z
zengyawen 已提交
4924

4925
启动音频渲染器。使用callback方式异步返回结果。
Z
zengyawen 已提交
4926

4927
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4928 4929 4930

**参数:**

4931 4932 4933
| 参数名   | 类型                 | 必填 | 说明       |
| -------- | -------------------- | ---- | ---------- |
| callback | AsyncCallback\<void> | 是   | 回调函数。 |
Z
zengyawen 已提交
4934 4935 4936

**示例:**

J
jiao_yanlin 已提交
4937
```js
4938
audioRenderer.start((err) => {
J
jiao_yanlin 已提交
4939
  if (err) {
4940
    console.error('Renderer start failed.');
J
jiao_yanlin 已提交
4941
  } else {
4942
    console.info('Renderer start success.');
J
jiao_yanlin 已提交
4943
  }
L
lwx1059628 已提交
4944
});
Z
zengyawen 已提交
4945 4946
```

4947
### start<sup>8+</sup>
Z
zengyawen 已提交
4948

4949
start(): Promise<void\>
Z
zengyawen 已提交
4950

4951
启动音频渲染器。使用Promise方式异步返回结果。
Z
zengyawen 已提交
4952

4953
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4954 4955 4956

**返回值:**

4957 4958 4959
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
4960 4961 4962

**示例:**

J
jiao_yanlin 已提交
4963
```js
4964 4965
audioRenderer.start().then(() => {
  console.info('Renderer started');
L
lwx1059628 已提交
4966
}).catch((err) => {
4967
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
4968
});
Z
zengyawen 已提交
4969 4970
```

4971
### pause<sup>8+</sup>
Z
zengyawen 已提交
4972

4973
pause(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
4974

4975
暂停渲染。使用callback方式异步返回结果。
Z
zengyawen 已提交
4976

4977
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4978 4979 4980

**参数:**

4981 4982 4983
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
4984 4985 4986

**示例:**

J
jiao_yanlin 已提交
4987
```js
4988 4989 4990 4991 4992 4993
audioRenderer.pause((err) => {
  if (err) {
    console.error('Renderer pause failed');
  } else {
    console.info('Renderer paused.');
  }
L
lwx1059628 已提交
4994
});
Z
zengyawen 已提交
4995 4996
```

4997
### pause<sup>8+</sup>
Z
zengyawen 已提交
4998

4999
pause(): Promise\<void>
Z
zengyawen 已提交
5000

5001
暂停渲染。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5002

5003
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5004 5005 5006

**返回值:**

5007 5008 5009
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
5010 5011 5012

**示例:**

J
jiao_yanlin 已提交
5013
```js
5014 5015
audioRenderer.pause().then(() => {
  console.info('Renderer paused');
L
lwx1059628 已提交
5016
}).catch((err) => {
5017
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5018
});
Z
zengyawen 已提交
5019 5020
```

5021
### drain<sup>8+</sup>
Z
zengyawen 已提交
5022

5023
drain(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5024

5025
检查缓冲区是否已被耗尽。使用callback方式异步返回结果。
Z
zengyawen 已提交
5026

5027
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5028 5029 5030

**参数:**

5031 5032 5033
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
5034 5035 5036

**示例:**

J
jiao_yanlin 已提交
5037
```js
5038
audioRenderer.drain((err) => {
J
jiao_yanlin 已提交
5039
  if (err) {
5040
    console.error('Renderer drain failed');
J
jiao_yanlin 已提交
5041
  } else {
5042
    console.info('Renderer drained.');
J
jiao_yanlin 已提交
5043
  }
L
lwx1059628 已提交
5044
});
Z
zengyawen 已提交
5045 5046
```

5047
### drain<sup>8+</sup>
Z
zengyawen 已提交
5048

5049
drain(): Promise\<void>
Z
zengyawen 已提交
5050

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

5053
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5054 5055 5056

**返回值:**

5057 5058 5059
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
5060 5061 5062

**示例:**

J
jiao_yanlin 已提交
5063
```js
5064 5065
audioRenderer.drain().then(() => {
  console.info('Renderer drained successfully');
L
lwx1059628 已提交
5066
}).catch((err) => {
5067
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5068
});
Z
zengyawen 已提交
5069 5070 5071 5072
```

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

5073
stop(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5074

5075
停止渲染。使用callback方式异步返回结果。
Z
zengyawen 已提交
5076

5077
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5078 5079 5080

**参数:**

5081 5082 5083
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
5084 5085 5086

**示例:**

J
jiao_yanlin 已提交
5087
```js
5088
audioRenderer.stop((err) => {
J
jiao_yanlin 已提交
5089
  if (err) {
5090
    console.error('Renderer stop failed');
J
jiao_yanlin 已提交
5091
  } else {
5092
    console.info('Renderer stopped.');
J
jiao_yanlin 已提交
5093
  }
L
lwx1059628 已提交
5094
});
Z
zengyawen 已提交
5095 5096 5097 5098
```

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

5099
stop(): Promise\<void>
Z
zengyawen 已提交
5100

5101
停止渲染。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5102

5103
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5104 5105 5106

**返回值:**

5107 5108 5109
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
5110

5111 5112 5113 5114 5115
**示例:**

```js
audioRenderer.stop().then(() => {
  console.info('Renderer stopped successfully');
L
lwx1059628 已提交
5116
}).catch((err) => {
5117
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5118
});
Z
zengyawen 已提交
5119 5120 5121 5122
```

### release<sup>8+</sup>

5123
release(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5124

5125
释放音频渲染器。使用callback方式异步返回结果。
Z
zengyawen 已提交
5126

5127
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5128 5129 5130

**参数:**

5131 5132 5133
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
5134 5135 5136

**示例:**

J
jiao_yanlin 已提交
5137
```js
5138
audioRenderer.release((err) => {
J
jiao_yanlin 已提交
5139
  if (err) {
5140
    console.error('Renderer release failed');
J
jiao_yanlin 已提交
5141
  } else {
5142
    console.info('Renderer released.');
J
jiao_yanlin 已提交
5143
  }
L
lwx1059628 已提交
5144
});
Z
zengyawen 已提交
5145 5146 5147 5148
```

### release<sup>8+</sup>

5149
release(): Promise\<void>
Z
zengyawen 已提交
5150

5151
释放渲染器。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5152

5153
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5154 5155 5156

**返回值:**

5157 5158 5159
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
5160 5161 5162

**示例:**

J
jiao_yanlin 已提交
5163
```js
5164 5165
audioRenderer.release().then(() => {
  console.info('Renderer released successfully');
L
lwx1059628 已提交
5166
}).catch((err) => {
5167
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5168
});
Z
zengyawen 已提交
5169 5170
```

5171
### write<sup>8+</sup>
Z
zengyawen 已提交
5172

5173
write(buffer: ArrayBuffer, callback: AsyncCallback\<number>): void
Z
zengyawen 已提交
5174

5175
写入缓冲区。使用callback方式异步返回结果。
Z
zengyawen 已提交
5176

5177
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5178 5179 5180

**参数:**

5181 5182 5183 5184
| 参数名   | 类型                   | 必填 | 说明                                                |
| -------- | ---------------------- | ---- | --------------------------------------------------- |
| buffer   | ArrayBuffer            | 是   | 要写入缓冲区的数据。                                |
| callback | AsyncCallback\<number> | 是   | 回调如果成功,返回写入的字节数,否则返回errorcode。 |
Z
zengyawen 已提交
5185 5186 5187

**示例:**

J
jiao_yanlin 已提交
5188
```js
J
jiao_yanlin 已提交
5189
let bufferSize;
5190 5191
audioRenderer.getBufferSize().then((data)=> {
  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
J
jiao_yanlin 已提交
5192 5193
  bufferSize = data;
  }).catch((err) => {
5194
  console.error(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
J
jiao_yanlin 已提交
5195
  });
5196 5197 5198 5199 5200 5201 5202
console.info(`Buffer size: ${bufferSize}`);
let context = featureAbility.getContext();
let path;
async function getCacheDir(){
  path = await context.getCacheDir();
}
let filePath = path + '/StarWars10s-2C-48000-4SW.wav';
5203
let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY);
5204 5205 5206 5207
fs.stat(path).then((stat) => {
  let buf = new ArrayBuffer(bufferSize);
  let len = stat.size % bufferSize == 0 ? Math.floor(stat.size / bufferSize) : Math.floor(stat.size / bufferSize + 1);
  for (let i = 0;i < len; i++) {
5208
    let options = {
J
jiao_yanlin 已提交
5209 5210
      offset: i * bufferSize,
      length: bufferSize
5211 5212 5213
    }
    let readsize = await fs.read(file.fd, buf, options)
    let writeSize = await new Promise((resolve,reject)=>{
J
jiao_yanlin 已提交
5214
      audioRenderer.write(buf,(err,writeSize)=>{
5215 5216 5217 5218 5219 5220 5221
        if(err){
          reject(err)
        }else{
          resolve(writeSize)
        }
      })
    })	  
5222 5223 5224
  }
});

5225

Z
zengyawen 已提交
5226 5227
```

5228
### write<sup>8+</sup>
Z
zengyawen 已提交
5229

5230
write(buffer: ArrayBuffer): Promise\<number>
5231

5232
写入缓冲区。使用Promise方式异步返回结果。
5233

5234
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5235 5236 5237

**返回值:**

5238 5239 5240
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
| Promise\<number> | Promise返回结果,如果成功,返回写入的字节数,否则返回errorcode。 |
Z
zengyawen 已提交
5241 5242 5243

**示例:**

J
jiao_yanlin 已提交
5244
```js
J
jiao_yanlin 已提交
5245
let bufferSize;
5246 5247
audioRenderer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
J
jiao_yanlin 已提交
5248 5249
  bufferSize = data;
  }).catch((err) => {
5250
  console.info(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
J
jiao_yanlin 已提交
5251
  });
5252 5253 5254 5255 5256 5257 5258
console.info(`BufferSize: ${bufferSize}`);
let context = featureAbility.getContext();
let path;
async function getCacheDir(){
  path = await context.getCacheDir();
}
let filePath = path + '/StarWars10s-2C-48000-4SW.wav';
5259
let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY);
5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275
fs.stat(path).then((stat) => {
  let buf = new ArrayBuffer(bufferSize);
  let len = stat.size % bufferSize == 0 ? Math.floor(stat.size / bufferSize) : Math.floor(stat.size / bufferSize + 1);
  for (let i = 0;i < len; i++) {
      let options = {
        offset: i * bufferSize,
        length: bufferSize
      }
      let readsize = await fs.read(file.fd, buf, options)
      try{
         let writeSize = await audioRenderer.write(buf);
      } catch(err) {
         console.error(`audioRenderer.write err: ${err}`);
      }   
  }
});
Z
zengyawen 已提交
5276 5277 5278 5279
```

### getAudioTime<sup>8+</sup>

5280
getAudioTime(callback: AsyncCallback\<number>): void
Z
zengyawen 已提交
5281

5282
获取时间戳(从 1970 年 1 月 1 日开始)。使用callback方式异步返回结果。
Z
zengyawen 已提交
5283

5284
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5285 5286 5287

**参数:**

5288 5289 5290
| 参数名   | 类型                   | 必填 | 说明             |
| -------- | ---------------------- | ---- | ---------------- |
| callback | AsyncCallback\<number> | 是   | 回调返回时间戳。 |
Z
zengyawen 已提交
5291 5292 5293

**示例:**

J
jiao_yanlin 已提交
5294
```js
5295
audioRenderer.getAudioTime((err, timestamp) => {
5296
  console.info(`Current timestamp: ${timestamp}`);
L
lwx1059628 已提交
5297
});
Z
zengyawen 已提交
5298 5299 5300 5301
```

### getAudioTime<sup>8+</sup>

5302
getAudioTime(): Promise\<number>
Z
zengyawen 已提交
5303

5304
获取时间戳(从 1970 年 1 月 1 日开始)。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5305

5306
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5307 5308 5309

**返回值:**

5310 5311 5312
| 类型             | 描述                    |
| ---------------- | ----------------------- |
| Promise\<number> | Promise回调返回时间戳。 |
Z
zengyawen 已提交
5313 5314 5315

**示例:**

J
jiao_yanlin 已提交
5316
```js
5317 5318
audioRenderer.getAudioTime().then((timestamp) => {
  console.info(`Current timestamp: ${timestamp}`);
L
lwx1059628 已提交
5319
}).catch((err) => {
5320
  console.error(`ERROR: ${err}`);
5321 5322 5323 5324 5325
});
```

### getBufferSize<sup>8+</sup>

5326
getBufferSize(callback: AsyncCallback\<number>): void
5327

5328
获取音频渲染器的最小缓冲区大小。使用callback方式异步返回结果。
5329

5330
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
5331 5332 5333

**参数:**

5334 5335 5336
| 参数名   | 类型                   | 必填 | 说明                 |
| -------- | ---------------------- | ---- | -------------------- |
| callback | AsyncCallback\<number> | 是   | 回调返回缓冲区大小。 |
5337 5338 5339 5340

**示例:**

```js
5341 5342 5343
let bufferSize = audioRenderer.getBufferSize(async(err, bufferSize) => {
  if (err) {
    console.error('getBufferSize error');
5344 5345 5346 5347 5348 5349
  }
});
```

### getBufferSize<sup>8+</sup>

5350
getBufferSize(): Promise\<number>
5351

5352
获取音频渲染器的最小缓冲区大小。使用Promise方式异步返回结果。
5353

5354
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
5355 5356 5357

**返回值:**

5358 5359 5360
| 类型             | 说明                        |
| ---------------- | --------------------------- |
| Promise\<number> | promise回调返回缓冲区大小。 |
5361 5362 5363 5364 5365

**示例:**

```js
let bufferSize;
5366 5367
audioRenderer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
5368 5369
  bufferSize = data;
}).catch((err) => {
5370
  console.error(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
L
lwx1059628 已提交
5371
});
Z
zengyawen 已提交
5372 5373
```

5374
### setRenderRate<sup>8+</sup>
Z
zengyawen 已提交
5375

5376
setRenderRate(rate: AudioRendererRate, callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5377

5378
设置音频渲染速率。使用callback方式异步返回结果。
Z
zengyawen 已提交
5379

5380
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5381 5382 5383

**参数:**

5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419
| 参数名   | 类型                                     | 必填 | 说明                     |
| -------- | ---------------------------------------- | ---- | ------------------------ |
| rate     | [AudioRendererRate](#audiorendererrate8) | 是   | 渲染的速率。             |
| callback | AsyncCallback\<void>                     | 是   | 用于返回执行结果的回调。 |

**示例:**

```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.');
  }
});
```

### setRenderRate<sup>8+</sup>

setRenderRate(rate: AudioRendererRate): Promise\<void>

设置音频渲染速率。使用Promise方式异步返回结果。

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

**参数:**

| 参数名 | 类型                                     | 必填 | 说明         |
| ------ | ---------------------------------------- | ---- | ------------ |
| rate   | [AudioRendererRate](#audiorendererrate8) | 是   | 渲染的速率。 |

**返回值:**

| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise用于返回执行结果。 |
Z
zengyawen 已提交
5420 5421 5422

**示例:**

J
jiao_yanlin 已提交
5423
```js
5424 5425 5426 5427
audioRenderer.setRenderRate(audio.AudioRendererRate.RENDER_RATE_NORMAL).then(() => {
  console.info('setRenderRate SUCCESS');
}).catch((err) => {
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5428
});
Z
zengyawen 已提交
5429 5430
```

5431
### getRenderRate<sup>8+</sup>
Z
zengyawen 已提交
5432

5433
getRenderRate(callback: AsyncCallback\<AudioRendererRate>): void
Z
zengyawen 已提交
5434

5435
获取当前渲染速率。使用callback方式异步返回结果。
Z
zengyawen 已提交
5436

5437
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5438

5439
**参数:**
Z
zengyawen 已提交
5440

5441 5442 5443
| 参数名   | 类型                                                    | 必填 | 说明               |
| -------- | ------------------------------------------------------- | ---- | ------------------ |
| callback | AsyncCallback<[AudioRendererRate](#audiorendererrate8)> | 是   | 回调返回渲染速率。 |
Z
zengyawen 已提交
5444 5445 5446

**示例:**

J
jiao_yanlin 已提交
5447
```js
5448 5449 5450
audioRenderer.getRenderRate((err, renderrate) => {
  console.info(`getRenderRate: ${renderrate}`);
});
Z
zengyawen 已提交
5451 5452
```

5453
### getRenderRate<sup>8+</sup>
Z
zengyawen 已提交
5454

5455
getRenderRate(): Promise\<AudioRendererRate>
Z
zengyawen 已提交
5456

5457
获取当前渲染速率。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5458

5459
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5460

5461
**返回值:**
Z
zengyawen 已提交
5462

5463 5464 5465
| 类型                                              | 说明                      |
| ------------------------------------------------- | ------------------------- |
| Promise<[AudioRendererRate](#audiorendererrate8)> | Promise回调返回渲染速率。 |
Z
zengyawen 已提交
5466 5467 5468

**示例:**

J
jiao_yanlin 已提交
5469
```js
5470 5471 5472 5473
audioRenderer.getRenderRate().then((renderRate) => {
  console.info(`getRenderRate: ${renderRate}`);
}).catch((err) => {
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5474
});
Z
zengyawen 已提交
5475
```
5476
### setInterruptMode<sup>9+</sup>
Z
zengyawen 已提交
5477

5478
setInterruptMode(mode: InterruptMode): Promise&lt;void&gt;
Z
zengyawen 已提交
5479

5480
设置应用的焦点模型。使用Promise异步回调。
Z
zengyawen 已提交
5481

5482
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
Z
zengyawen 已提交
5483 5484 5485

**参数:**

5486 5487 5488 5489 5490 5491 5492 5493 5494
| 参数名     | 类型                                | 必填   | 说明        |
| ---------- | ---------------------------------- | ------ | ---------- |
| mode       | [InterruptMode](#interruptmode9)    | 是     | 焦点模型。  |

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | 以Promise对象返回结果,设置成功时返回undefined,否则返回error。 |
Z
zengyawen 已提交
5495 5496 5497

**示例:**

J
jiao_yanlin 已提交
5498
```js
5499 5500 5501 5502 5503 5504
let mode = 0;
audioRenderer.setInterruptMode(mode).then(data=>{
  console.info('setInterruptMode Success!');
}).catch((err) => {
  console.error(`setInterruptMode Fail: ${err}`);
});
Z
zengyawen 已提交
5505
```
5506
### setInterruptMode<sup>9+</sup>
Z
zengyawen 已提交
5507

5508
setInterruptMode(mode: InterruptMode, callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5509

5510
设置应用的焦点模型。使用Callback回调返回执行结果。
Z
zengyawen 已提交
5511

5512
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
Z
zengyawen 已提交
5513 5514 5515

**参数:**

5516 5517 5518 5519
| 参数名   | 类型                                | 必填   | 说明            |
| ------- | ----------------------------------- | ------ | -------------- |
|mode     | [InterruptMode](#interruptmode9)     | 是     | 焦点模型。|
|callback | AsyncCallback\<void>                 | 是     |回调返回执行结果。|
Z
zengyawen 已提交
5520 5521 5522

**示例:**

J
jiao_yanlin 已提交
5523
```js
5524 5525 5526 5527
let mode = 1;
audioRenderer.setInterruptMode(mode, (err, data)=>{
  if(err){
    console.error(`setInterruptMode Fail: ${err}`);
5528
  }
5529
  console.info('setInterruptMode Success!');
L
lwx1059628 已提交
5530
});
Z
zengyawen 已提交
5531 5532
```

5533
### setVolume<sup>9+</sup>
Z
zengyawen 已提交
5534

5535
setVolume(volume: number): Promise&lt;void&gt;
Z
zengyawen 已提交
5536

5537
设置应用的音量。使用Promise异步回调。
5538

5539
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5540

5541
**参数:**
Z
zengyawen 已提交
5542

5543 5544 5545
| 参数名     | 类型    | 必填   | 说明                 |
| ---------- | ------- | ------ | ------------------- |
| volume     | number  | 是     | 音量值范围为0.0-1.0。 |
Z
zengyawen 已提交
5546

5547
**返回值:**
5548

5549 5550 5551
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | 以Promise对象返回结果,设置成功时返回undefined,否则返回error。 |
5552

5553
**示例:**
5554

5555
```js
5556
audioRenderer.setVolume(0.5).then(data=>{
5557 5558 5559 5560 5561 5562
  console.info('setVolume Success!');
}).catch((err) => {
  console.error(`setVolume Fail: ${err}`);
});
```
### setVolume<sup>9+</sup>
5563

5564
setVolume(volume: number, callback: AsyncCallback\<void>): void
5565

5566
设置应用的音量。使用Callback回调返回执行结果。
5567

5568
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
5569 5570 5571

**参数:**

5572 5573 5574
| 参数名  | 类型       | 必填   | 说明                 |
| ------- | -----------| ------ | ------------------- |
|volume   | number     | 是     | 音量值范围为0.0-1.0。 |
5575
|callback | AsyncCallback\<void> | 是     |回调返回执行结果。|
Z
zengyawen 已提交
5576 5577 5578

**示例:**

J
jiao_yanlin 已提交
5579
```js
5580
audioRenderer.setVolume(0.5, (err, data)=>{
5581 5582
  if(err){
    console.error(`setVolume Fail: ${err}`);
5583
  }
5584
  console.info('setVolume Success!');
L
lwx1059628 已提交
5585
});
Z
zengyawen 已提交
5586
```
5587

W
wangzx0705 已提交
5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599
### getMinStreamVolume<sup>10+</sup>

getMinStreamVolume(callback: AsyncCallback&lt;number&gt;): void

获取应用基于音频流的最小音量。使用Callback回调返回。

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

**参数:**

| 参数名  | 类型       | 必填   | 说明                 |
| ------- | -----------| ------ | ------------------- |
W
wangzx0705 已提交
5600
|callback |AsyncCallback&lt;number&gt; | 是     |Callback回调返回音频流最小音量(音量范围0-1)。|
W
wangzx0705 已提交
5601 5602 5603 5604

**示例:**

```js
W
wangzx0705 已提交
5605
audioRenderer.getMinStreamVolume((err, minVolume) => {
W
wangzx0705 已提交
5606 5607 5608 5609
  if (err) {
    console.error(`getMinStreamVolume error: ${err}`);
  } else {
    console.info(`getMinStreamVolume Success! ${minVolume}`);
W
wangzx0705 已提交
5610 5611 5612 5613 5614 5615 5616
  }
});
```
### getMinStreamVolume<sup>10+</sup>

getMinStreamVolume(): Promise&lt;number&gt;

W
wangzx0705 已提交
5617
获取应用基于音频流的最小音量。使用Promise异步回调。
W
wangzx0705 已提交
5618 5619 5620 5621 5622 5623 5624

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
W
wangzx0705 已提交
5625
| Promise&lt;number&gt;| Promise回调返回音频流最小音量(音量范围0-1)。|
W
wangzx0705 已提交
5626 5627 5628 5629

**示例:**

```js
W
wangzx0705 已提交
5630
audioRenderer.getMinStreamVolume().then((value) => {
W
wangzx0705 已提交
5631
  console.info(`Get min stream volume Success! ${value}`);
W
wangzx0705 已提交
5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648
}).catch((err) => {
  console.error(`Get min stream volume Fail: ${err}`);
});
```

### getMaxStreamVolume<sup>10+</sup>

getMaxStreamVolume(callback: AsyncCallback&lt;number&gt;): void

获取应用基于音频流的最大音量。使用Callback回调返回。

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

**参数:**

| 参数名  | 类型       | 必填   | 说明                 |
| ------- | -----------| ------ | ------------------- |
W
wangzx0705 已提交
5649
|callback | AsyncCallback&lt;number&gt; | 是     |Callback回调返回音频流最大音量(音量范围0-1)。|
W
wangzx0705 已提交
5650 5651 5652 5653

**示例:**

```js
W
wangzx0705 已提交
5654
audioRenderer.getMaxStreamVolume((err, maxVolume) => {
W
wangzx0705 已提交
5655 5656 5657 5658
  if (err) {
    console.error(`getMaxStreamVolume Fail: ${err}`);
  } else {
    console.info(`getMaxStreamVolume Success! ${maxVolume}`);
W
wangzx0705 已提交
5659 5660 5661 5662 5663 5664 5665
  }
});
```
### getMaxStreamVolume<sup>10+</sup>

getMaxStreamVolume(): Promise&lt;number&gt;

W
wangzx0705 已提交
5666
获取应用基于音频流的最大音量。使用Promise异步回调。
W
wangzx0705 已提交
5667 5668 5669 5670 5671 5672 5673

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
W
wangzx0705 已提交
5674
| Promise&lt;number&gt;| Promise回调返回音频流最大音量(音量范围0-1)。|
W
wangzx0705 已提交
5675 5676 5677 5678

**示例:**

```js
W
wangzx0705 已提交
5679
audioRenderer.getMaxStreamVolume().then((value) => {
W
wangzx0705 已提交
5680
  console.info(`Get max stream volume Success! ${value}`);
W
wangzx0705 已提交
5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702
}).catch((err) => {
  console.error(`Get max stream volume Fail: ${err}`);
});
```

### getUnderflowCount<sup>10+</sup>

getUnderflowCount(callback: AsyncCallback&lt;number&gt;): void

获取当前播放音频流的欠载音频帧数量。使用Callback回调返回。

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

**参数:**

| 参数名  | 类型       | 必填   | 说明                 |
| ------- | -----------| ------ | ------------------- |
|callback | AsyncCallback&lt;number&gt; | 是     |Callback回调返回音频流的欠载音频帧数量。|

**示例:**

```js
W
wangzx0705 已提交
5703
audioRenderer.getUnderflowCount((err, underflowCount) => {
W
wangzx0705 已提交
5704 5705 5706 5707
  if (err) {
    console.error(`getUnderflowCount Fail: ${err}`);
  } else {
    console.info(`getUnderflowCount Success! ${underflowCount}`);
W
wangzx0705 已提交
5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727
  }
});
```
### getUnderflowCount<sup>10+</sup>

getUnderflowCount(): Promise&lt;number&gt;

获取当前播放音频流的欠载音频帧数量。使用Promise异步回调。

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;number&gt;| Promise回调返回音频流的欠载音频帧数量。|

**示例:**

```js
W
wangzx0705 已提交
5728
audioRenderer.getUnderflowCount().then((value) => {
W
wangzx0705 已提交
5729
  console.info(`Get underflow count Success! ${value}`);
W
wangzx0705 已提交
5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751
}).catch((err) => {
  console.error(`Get underflow count Fail: ${err}`);
});
```

### getCurrentOutputDevices<sup>10+</sup>

getCurrentOutputDevices(callback: AsyncCallback&lt;AudioDeviceDescriptors&gt;): void

获取音频流输出设备描述符。使用Callback回调返回。

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

**参数:**

| 参数名  | 类型       | 必填   | 说明                 |
| ------- | -----------| ------ | ------------------- |
|callback | AsyncCallback&lt;AudioDeviceDescriptors&gt; | 是     |Callback回调返回音频流的输出设备描述符。|

**示例:**

```js
W
wangzx0705 已提交
5752
audioRenderer.getCurrentOutputDevices((err, deviceInfo) => {
W
wangzx0705 已提交
5753
  if (err) {
W
wangzx0705 已提交
5754
    console.error(`getCurrentOutputDevices Fail: ${err}`);
W
wangzx0705 已提交
5755
  } else {
W
wangzx0705 已提交
5756 5757 5758 5759 5760 5761 5762 5763
    console.info(`DeviceInfo id: ${deviceInfo.id}`);
    console.info(`DeviceInfo type: ${descriptor.deviceType}`);
    console.info(`DeviceInfo role: ${descriptor.deviceRole}`);
    console.info(`DeviceInfo name: ${descriptor.name}`);
    console.info(`DeviceInfo address: ${descriptor.address}`);
    console.info(`DeviceInfo samplerates: ${descriptor.sampleRates[0]}`);
    console.info(`DeviceInfo channelcounts: ${descriptor.channelCounts[0]}`);
    console.info(`DeviceInfo channelmask: ${descriptor.channelMasks}`);
W
wangzx0705 已提交
5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778
  }
});
```
### getCurrentOutputDevices<sup>10+</sup>

getCurrentOutputDevices(): Promise&lt;AudioDeviceDescriptors&gt;

获取音频流输出设备描述符。使用Promise异步回调。

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
W
wangzx0705 已提交
5779
| Promise&lt;AudioDeviceDescriptors&gt;| Promise回调返回音频流的输出设备描述信息 |
W
wangzx0705 已提交
5780 5781 5782 5783

**示例:**

```js
W
wangzx0705 已提交
5784
audioRenderer.getCurrentOutputDevices().then((deviceInfo) => {
W
wangzx0705 已提交
5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797
  console.info(`DeviceInfo id: ${deviceInfo.id}`);
  console.info(`DeviceInfo type: ${descriptor.deviceType}`);
  console.info(`DeviceInfo role: ${descriptor.deviceRole}`);
  console.info(`DeviceInfo name: ${descriptor.name}`);
  console.info(`DeviceInfo address: ${descriptor.address}`);
  console.info(`DeviceInfo samplerates: ${descriptor.sampleRates[0]}`);
  console.info(`DeviceInfo channelcounts: ${descriptor.channelCounts[0]}`);
  console.info(`DeviceInfo channelmask: ${descriptor.channelMasks}`);
}).catch((err) => {
  console.error(`Get current output devices Fail: ${err}`);
});
```

5798
### on('audioInterrupt')<sup>9+</sup>
5799

5800
on(type: 'audioInterrupt', callback: Callback\<InterruptEvent>): void
5801

5802
监听音频中断事件。使用callback获取中断事件。
5803

J
jiaoyanlin3 已提交
5804
[on('interrupt')](#oninterrupt)一致,均用于监听焦点变化。AudioRenderer对象在start事件发生时会主动获取焦点,在pause、stop等事件发生时会主动释放焦点,不需要开发者主动发起获取焦点或释放焦点的申请。
5805

5806
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
5807 5808 5809

**参数:**

5810 5811
| 参数名   | 类型                                         | 必填 | 说明                                                         |
| -------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
5812 5813
| type     | string                                       | 是   | 事件回调类型,支持的事件为:'audioInterrupt'(中断事件被触发,音频渲染被中断。) |
| callback | Callback\<[InterruptEvent](#interruptevent9)\> | 是   | 被监听的中断事件的回调。                                     |
5814

5815
**错误码:**
5816

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
5822 5823

**示例:**
Z
zengyawen 已提交
5824

J
jiao_yanlin 已提交
5825
```js
5826 5827
let isPlaying; // 标识符,表示是否正在渲染
let isDucked; // 标识符,表示是否被降低音量
5828 5829 5830 5831 5832
onAudioInterrupt();

async function onAudioInterrupt(){
  audioRenderer.on('audioInterrupt', async(interruptEvent) => {
    if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_FORCE) {
5833
      // 由系统进行操作,强制打断音频渲染,应用需更新自身状态及显示内容等
5834 5835
      switch (interruptEvent.hintType) {
        case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
5836 5837 5838
          // 音频流已被暂停,临时失去焦点,待可重获焦点时会收到resume对应的interruptEvent
          console.info('Force paused. Update playing status and stop writing');
          isPlaying = false; // 简化处理,代表应用切换至暂停状态的若干操作
5839 5840
          break;
        case audio.InterruptHint.INTERRUPT_HINT_STOP:
5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856
          // 音频流已被停止,永久失去焦点,若想恢复渲染,需用户主动触发
          console.info('Force stopped. Update playing status and stop writing');
          isPlaying = false; // 简化处理,代表应用切换至暂停状态的若干操作
          break;
        case audio.InterruptHint.INTERRUPT_HINT_DUCK:
          // 音频流已被降低音量渲染
          console.info('Force ducked. Update volume status');
          isDucked = true; // 简化处理,代表应用更新音量状态的若干操作
          break;
        case audio.InterruptHint.INTERRUPT_HINT_UNDUCK:
          // 音频流已被恢复正常音量渲染
          console.info('Force ducked. Update volume status');
          isDucked = false; // 简化处理,代表应用更新音量状态的若干操作
          break;
        default:
          console.info('Invalid interruptEvent');
5857 5858 5859
          break;
      }
    } else if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_SHARE) {
5860
      // 由应用进行操作,应用可以自主选择打断或忽略
5861 5862
      switch (interruptEvent.hintType) {
        case audio.InterruptHint.INTERRUPT_HINT_RESUME:
5863
          // 建议应用继续渲染(说明音频流此前被强制暂停,临时失去焦点,现在可以恢复渲染)
5864
          console.info('Resume force paused renderer or ignore');
5865
          // 若选择继续渲染,需在此处主动执行开始渲染的若干操作
5866 5867
          break;
        case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
5868
          // 建议应用暂停渲染
5869
          console.info('Choose to pause or ignore');
5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887
          // 若选择暂停渲染,需在此处主动执行暂停渲染的若干操作
          break;
        case audio.InterruptHint.INTERRUPT_HINT_STOP:
          // 建议应用停止渲染
          console.info('Choose to stop or ignore');
          // 若选择停止渲染,需在此处主动执行停止渲染的若干操作
          break;
        case audio.InterruptHint.INTERRUPT_HINT_DUCK:
          // 建议应用降低音量渲染
          console.info('Choose to duck or ignore');
          // 若选择降低音量渲染,需在此处主动执行降低音量渲染的若干操作
          break;
        case audio.InterruptHint.INTERRUPT_HINT_UNDUCK:
          // 建议应用恢复正常音量渲染
          console.info('Choose to unduck or ignore');
          // 若选择恢复正常音量渲染,需在此处主动执行恢复正常音量渲染的若干操作
          break;
        default:
5888 5889 5890 5891 5892
          break;
      }
   }
  });
}
Z
zhujie81 已提交
5893 5894
```

5895
### on('markReach')<sup>8+</sup>
Z
zhujie81 已提交
5896

5897
on(type: "markReach", frame: number, callback: Callback&lt;number&gt;): void
5898

5899
订阅到达标记的事件。 当渲染的帧数达到 frame 参数的值时,回调被调用。
5900

5901
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zhujie81 已提交
5902 5903

**参数:**
5904

5905 5906 5907 5908 5909
| 参数名   | 类型                     | 必填 | 说明                                      |
| :------- | :----------------------- | :--- | :---------------------------------------- |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'markReach'。 |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于 0。         |
| callback | Callback\<number>         | 是   | 触发事件时调用的回调。                    |
Z
zengyawen 已提交
5910

Z
zhujie81 已提交
5911 5912
**示例:**

J
jiao_yanlin 已提交
5913
```js
5914 5915 5916
audioRenderer.on('markReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
J
jiao_yanlin 已提交
5917
  }
5918
});
5919
```
Z
zengyawen 已提交
5920

5921

5922
### off('markReach') <sup>8+</sup>
5923

5924
off(type: 'markReach'): void
5925

5926
取消订阅标记事件。
5927

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

5930
**参数:**
5931

5932 5933 5934
| 参数名 | 类型   | 必填 | 说明                                              |
| :----- | :----- | :--- | :------------------------------------------------ |
| type   | string | 是   | 要取消订阅事件的类型。支持的事件为:'markReach'。 |
5935 5936 5937 5938

**示例:**

```js
5939
audioRenderer.off('markReach');
5940 5941
```

5942
### on('periodReach') <sup>8+</sup>
Z
zengyawen 已提交
5943

5944
on(type: "periodReach", frame: number, callback: Callback&lt;number&gt;): void
5945

5946
订阅到达标记的事件。 当渲染的帧数达到 frame 参数的值时,触发回调并返回设定的值。
5947

5948
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5949 5950 5951

**参数:**

5952 5953 5954 5955 5956
| 参数名   | 类型                     | 必填 | 说明                                        |
| :------- | :----------------------- | :--- | :------------------------------------------ |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'periodReach'。 |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于 0。           |
| callback | Callback\<number>         | 是   | 触发事件时调用的回调。                      |
5957 5958 5959 5960

**示例:**

```js
5961 5962 5963
audioRenderer.on('periodReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
5964 5965 5966 5967
  }
});
```

5968
### off('periodReach') <sup>8+</sup>
5969

5970
off(type: 'periodReach'): void
Z
zengyawen 已提交
5971

5972
取消订阅标记事件。
5973

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

5976
**参数:**
5977

5978 5979 5980
| 参数名 | 类型   | 必填 | 说明                                                |
| :----- | :----- | :--- | :-------------------------------------------------- |
| type   | string | 是   | 要取消订阅事件的类型。支持的事件为:'periodReach'。 |
5981

Z
zengyawen 已提交
5982 5983
**示例:**

J
jiao_yanlin 已提交
5984
```js
5985
audioRenderer.off('periodReach')
Z
zengyawen 已提交
5986 5987
```

5988
### on('stateChange') <sup>8+</sup>
L
lwx1059628 已提交
5989

5990
on(type: 'stateChange', callback: Callback<AudioState\>): void
L
lwx1059628 已提交
5991

5992
订阅监听状态变化。
5993

5994
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
L
lwx1059628 已提交
5995 5996 5997

**参数:**

5998 5999 6000 6001
| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'stateChange'。 |
| callback | Callback\<[AudioState](#audiostate8)> | 是   | 返回监听的状态。                            |
L
lwx1059628 已提交
6002 6003 6004

**示例:**

J
jiao_yanlin 已提交
6005
```js
6006 6007 6008 6009 6010 6011
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');
J
jiao_yanlin 已提交
6012
  }
L
lwx1059628 已提交
6013 6014 6015
});
```

W
wangzx0705 已提交
6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028
### on('outputDeviceChange') <sup>10+</sup>

on(type: 'outputDeviceChange', callback: Callback<AudioDeviceDescriptors\>): void

订阅监听音频输出设备变化。

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

**参数:**

| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'outputDeviceChange'。 |
W
wangzx0705 已提交
6029
| callback | Callback\<[AudioDeviceDescriptors](#audiodevicedescriptors)> | 是   | 返回监听的音频设备变化。                            |
W
wangzx0705 已提交
6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040

**错误码:**

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |

**示例:**

```js
audioRenderer.on('outputDeviceChange', (deviceChangeInfo) => {
W
wangzx0705 已提交
6041
  if (err) {
W
wangzx0705 已提交
6042 6043 6044 6045
    console.error(`Subscribes output device change event callback Fail: ${err}`);
  } else {
    console.info(`Subscribes output device change event callback Success!`);
  }
W
wangzx0705 已提交
6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060
});
```
### off('outputDeviceChange') <sup>10+</sup>

off(type: 'outputDeviceChange', callback?: Callback<AudioDeviceDescriptors\>): void

取消订阅监听音频输出设备变化。

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

**参数:**

| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'outputDeviceChange'。 |
W
wangzx0705 已提交
6061
| callback | Callback\<[AudioDeviceDescriptors](#audiodevicedescriptors)> | 是   | 取消监听的音频设备变化。                            |
W
wangzx0705 已提交
6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072

**错误码:**

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |

**示例:**

```js
audioRenderer.off('outputDeviceChange', (deviceChangeInfo) => {
W
wangzx0705 已提交
6073
  if (err) {
W
wangzx0705 已提交
6074 6075 6076 6077
    console.error(`Unsubscribes output device change event callback Fail: ${err}`);
  } else {
    console.info(`Unsubscribes output device change event callback Success!`);
  }
W
wangzx0705 已提交
6078 6079 6080
});
```

6081
## AudioCapturer<sup>8+</sup>
L
lwx1059628 已提交
6082

6083
提供音频采集的相关接口。在调用AudioCapturer的接口前,需要先通过[createAudioCapturer](#audiocreateaudiocapturer8)创建实例。
6084

6085
### 属性
L
lwx1059628 已提交
6086

6087
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6088

6089 6090 6091
| 名称  | 类型                     | 可读 | 可写 | 说明             |
| :---- | :------------------------- | :--- | :--- | :--------------- |
| state<sup>8+</sup>  | [AudioState](#audiostate8) | 是 | 否   | 音频采集器状态。 |
L
lwx1059628 已提交
6092 6093 6094

**示例:**

J
jiao_yanlin 已提交
6095
```js
6096
let state = audioCapturer.state;
L
lwx1059628 已提交
6097 6098
```

6099
### getCapturerInfo<sup>8+</sup>
6100

6101
getCapturerInfo(callback: AsyncCallback<AudioCapturerInfo\>): void
6102

6103
获取采集器信息。使用callback方式异步返回结果。
6104

6105
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6106 6107 6108

**参数:**

6109 6110 6111
| 参数名   | 类型                              | 必填 | 说明                                 |
| :------- | :-------------------------------- | :--- | :----------------------------------- |
| callback | AsyncCallback<AudioCapturerInfo\> | 是   | 使用callback方式异步返回采集器信息。 |
L
lwx1059628 已提交
6112 6113 6114

**示例:**

J
jiao_yanlin 已提交
6115
```js
6116
audioCapturer.getCapturerInfo((err, capturerInfo) => {
6117
  if (err) {
6118 6119 6120 6121 6122
    console.error('Failed to get capture info');
  } else {
    console.info('Capturer getCapturerInfo:');
    console.info(`Capturer source: ${capturerInfo.source}`);
    console.info(`Capturer flags: ${capturerInfo.capturerFlags}`);
J
jiao_yanlin 已提交
6123
  }
L
lwx1059628 已提交
6124 6125 6126
});
```

6127

6128
### getCapturerInfo<sup>8+</sup>
6129

6130
getCapturerInfo(): Promise<AudioCapturerInfo\>
6131

6132
获取采集器信息。使用Promise方式异步返回结果。
6133

6134
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6135 6136 6137

**返回值:**

6138 6139 6140
| 类型                                              | 说明                                |
| :------------------------------------------------ | :---------------------------------- |
| Promise<[AudioCapturerInfo](#audiocapturerinfo)\> | 使用Promise方式异步返回采集器信息。 |
L
lwx1059628 已提交
6141 6142 6143

**示例:**

J
jiao_yanlin 已提交
6144
```js
6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155
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');
  }
}).catch((err) => {
  console.error(`AudioFrameworkRecLog: CapturerInfo :ERROR: ${err}`);
6156
});
L
lwx1059628 已提交
6157 6158
```

6159
### getStreamInfo<sup>8+</sup>
L
lwx1059628 已提交
6160

6161
getStreamInfo(callback: AsyncCallback<AudioStreamInfo\>): void
L
lwx1059628 已提交
6162

6163
获取采集器流信息。使用callback方式异步返回结果。
6164

6165
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6166 6167 6168

**参数:**

6169 6170 6171
| 参数名   | 类型                                                 | 必填 | 说明                             |
| :------- | :--------------------------------------------------- | :--- | :------------------------------- |
| callback | AsyncCallback<[AudioStreamInfo](#audiostreaminfo8)\> | 是   | 使用callback方式异步返回流信息。 |
L
lwx1059628 已提交
6172 6173 6174

**示例:**

J
jiao_yanlin 已提交
6175
```js
6176
audioCapturer.getStreamInfo((err, streamInfo) => {
J
jiao_yanlin 已提交
6177
  if (err) {
6178 6179 6180 6181 6182 6183 6184
    console.error('Failed to get stream info');
  } else {
    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 已提交
6185
  }
L
lwx1059628 已提交
6186 6187 6188
});
```

6189
### getStreamInfo<sup>8+</sup>
L
lwx1059628 已提交
6190

6191
getStreamInfo(): Promise<AudioStreamInfo\>
6192

6193
获取采集器流信息。使用Promise方式异步返回结果。
6194

6195
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6196 6197 6198

**返回值:**

6199 6200 6201
| 类型                                           | 说明                            |
| :--------------------------------------------- | :------------------------------ |
| Promise<[AudioStreamInfo](#audiostreaminfo8)\> | 使用Promise方式异步返回流信息。 |
L
lwx1059628 已提交
6202 6203 6204

**示例:**

J
jiao_yanlin 已提交
6205
```js
6206 6207 6208 6209 6210 6211 6212 6213
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}`);
}).catch((err) => {
  console.error(`getStreamInfo :ERROR: ${err}`);
L
lwx1059628 已提交
6214 6215 6216
});
```

6217
### getAudioStreamId<sup>9+</sup>
L
lwx1059628 已提交
6218

6219
getAudioStreamId(callback: AsyncCallback<number\>): void
L
lwx1059628 已提交
6220

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

6223
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6224 6225 6226

**参数:**

6227 6228 6229
| 参数名   | 类型                                                 | 必填 | 说明                 |
| :------- | :--------------------------------------------------- | :--- | :------------------- |
| callback | AsyncCallback<number\> | 是   | 回调返回音频流id。 |
L
lwx1059628 已提交
6230 6231 6232

**示例:**

J
jiao_yanlin 已提交
6233
```js
6234 6235
audioCapturer.getAudioStreamId((err, streamid) => {
  console.info(`audioCapturer GetStreamId: ${streamid}`);
L
lwx1059628 已提交
6236 6237 6238
});
```

6239
### getAudioStreamId<sup>9+</sup>
6240

6241
getAudioStreamId(): Promise<number\>
6242

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

6245
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6246 6247 6248

**返回值:**

6249 6250 6251
| 类型             | 说明                   |
| :----------------| :--------------------- |
| Promise<number\> | Promise返回音频流id。 |
L
lwx1059628 已提交
6252 6253 6254

**示例:**

J
jiao_yanlin 已提交
6255
```js
6256 6257 6258 6259
audioCapturer.getAudioStreamId().then((streamid) => {
  console.info(`audioCapturer getAudioStreamId: ${streamid}`);
}).catch((err) => {
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
6260 6261 6262
});
```

6263
### start<sup>8+</sup>
6264

6265
start(callback: AsyncCallback<void\>): void
6266

6267
启动音频采集器。使用callback方式异步返回结果。
6268

6269
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6270 6271 6272

**参数:**

6273 6274 6275
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
6276 6277 6278 6279

**示例:**

```js
6280
audioCapturer.start((err) => {
6281
  if (err) {
6282 6283 6284
    console.error('Capturer start failed.');
  } else {
    console.info('Capturer start success.');
6285
  }
6286 6287 6288 6289
});
```


6290
### start<sup>8+</sup>
6291

6292
start(): Promise<void\>
6293

6294
启动音频采集器。使用Promise方式异步返回结果。
6295

6296
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6297 6298 6299

**返回值:**

6300 6301 6302
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
6303 6304 6305 6306

**示例:**

```js
6307 6308 6309 6310 6311 6312 6313 6314 6315 6316
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');
  }
}).catch((err) => {
  console.info(`AudioFrameworkRecLog: Capturer start :ERROR : ${err}`);
6317 6318 6319
});
```

6320
### stop<sup>8+</sup>
6321

6322
stop(callback: AsyncCallback<void\>): void
6323

6324
停止采集。使用callback方式异步返回结果。
6325

6326
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6327

6328
**参数:**
L
lwx1059628 已提交
6329

6330 6331 6332
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6333 6334 6335

**示例:**

J
jiao_yanlin 已提交
6336
```js
6337
audioCapturer.stop((err) => {
J
jiao_yanlin 已提交
6338
  if (err) {
6339 6340 6341
    console.error('Capturer stop failed');
  } else {
    console.info('Capturer stopped.');
J
jiao_yanlin 已提交
6342
  }
L
lwx1059628 已提交
6343 6344 6345 6346
});
```


6347
### stop<sup>8+</sup>
L
lwx1059628 已提交
6348

6349
stop(): Promise<void\>
L
lwx1059628 已提交
6350

6351
停止采集。使用Promise方式异步返回结果。
6352

6353
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6354 6355 6356

**返回值:**

6357 6358 6359
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
L
lwx1059628 已提交
6360 6361 6362

**示例:**

J
jiao_yanlin 已提交
6363
```js
6364 6365 6366 6367 6368 6369 6370 6371
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:');
  }
}).catch((err) => {
  console.info(`AudioFrameworkRecLog: Capturer stop: ERROR: ${err}`);
L
lwx1059628 已提交
6372 6373 6374
});
```

6375
### release<sup>8+</sup>
L
lwx1059628 已提交
6376

6377
release(callback: AsyncCallback<void\>): void
L
lwx1059628 已提交
6378

6379
释放采集器。使用callback方式异步返回结果。
6380

6381
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6382 6383 6384

**参数:**

6385 6386
| 参数名   | 类型                 | 必填 | 说明                                |
| :------- | :------------------- | :--- | :---------------------------------- |
J
jiao_yanlin 已提交
6387
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6388 6389 6390

**示例:**

J
jiao_yanlin 已提交
6391
```js
6392
audioCapturer.release((err) => {
J
jiao_yanlin 已提交
6393
  if (err) {
6394 6395 6396
    console.error('capturer release failed');
  } else {
    console.info('capturer released.');
J
jiao_yanlin 已提交
6397
  }
L
lwx1059628 已提交
6398 6399 6400 6401
});
```


6402
### release<sup>8+</sup>
L
lwx1059628 已提交
6403

6404
release(): Promise<void\>
6405

6406
释放采集器。使用Promise方式异步返回结果。
6407

6408
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6409 6410 6411

**返回值:**

6412 6413 6414
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
L
lwx1059628 已提交
6415 6416 6417

**示例:**

J
jiao_yanlin 已提交
6418
```js
6419 6420 6421 6422 6423 6424 6425 6426
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}`);
}).catch((err) => {
  console.info(`AudioFrameworkRecLog: Capturer stop: ERROR: ${err}`);
L
lwx1059628 已提交
6427 6428 6429
});
```

6430
### read<sup>8+</sup>
L
lwx1059628 已提交
6431

6432
read(size: number, isBlockingRead: boolean, callback: AsyncCallback<ArrayBuffer\>): void
L
lwx1059628 已提交
6433

6434
读入缓冲区。使用callback方式异步返回结果。
6435

6436
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6437 6438 6439

**参数:**

6440 6441 6442 6443 6444
| 参数名         | 类型                        | 必填 | 说明                             |
| :------------- | :-------------------------- | :--- | :------------------------------- |
| size           | number                      | 是   | 读入的字节数。                   |
| isBlockingRead | boolean                     | 是   | 是否阻塞读操作。                 |
| callback       | AsyncCallback<ArrayBuffer\> | 是   | 使用callback方式异步返回缓冲区。 |
L
lwx1059628 已提交
6445 6446 6447

**示例:**

J
jiao_yanlin 已提交
6448
```js
6449 6450 6451 6452 6453 6454 6455 6456 6457 6458
let bufferSize;
audioCapturer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRecLog: getBufferSize: SUCCESS ${data}`);
  bufferSize = data;
  }).catch((err) => {
    console.error(`AudioFrameworkRecLog: getBufferSize: ERROR: ${err}`);
  });
audioCapturer.read(bufferSize, true, async(err, buffer) => {
  if (!err) {
    console.info('Success in reading the buffer data');
J
jiao_yanlin 已提交
6459
  }
L
lwx1059628 已提交
6460 6461 6462
});
```

6463
### read<sup>8+</sup>
L
lwx1059628 已提交
6464

6465
read(size: number, isBlockingRead: boolean): Promise<ArrayBuffer\>
L
lwx1059628 已提交
6466

6467
读入缓冲区。使用Promise方式异步返回结果。
L
lwx1059628 已提交
6468

6469
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6470 6471 6472

**参数:**

6473 6474 6475 6476
| 参数名         | 类型    | 必填 | 说明             |
| :------------- | :------ | :--- | :--------------- |
| size           | number  | 是   | 读入的字节数。   |
| isBlockingRead | boolean | 是   | 是否阻塞读操作。 |
L
lwx1059628 已提交
6477 6478 6479

**返回值:**

6480 6481 6482
| 类型                  | 说明                                                   |
| :-------------------- | :----------------------------------------------------- |
| Promise<ArrayBuffer\> | 如果操作成功,返回读取的缓冲区数据;否则返回错误代码。 |
L
lwx1059628 已提交
6483 6484 6485

**示例:**

J
jiao_yanlin 已提交
6486
```js
6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498
let bufferSize;
audioCapturer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRecLog: getBufferSize: SUCCESS ${data}`);
  bufferSize = data;
  }).catch((err) => {
  console.info(`AudioFrameworkRecLog: getBufferSize: ERROR ${err}`);
  });
console.info(`Buffer size: ${bufferSize}`);
audioCapturer.read(bufferSize, true).then((buffer) => {
  console.info('buffer read successfully');
}).catch((err) => {
  console.info(`ERROR : ${err}`);
L
lwx1059628 已提交
6499 6500 6501
});
```

6502
### getAudioTime<sup>8+</sup>
6503

6504
getAudioTime(callback: AsyncCallback<number\>): void
6505

6506
获取时间戳(从1970年1月1日开始),单位为纳秒。使用callback方式异步返回结果。
6507

6508
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6509

6510
**参数:**
L
lwx1059628 已提交
6511

6512 6513 6514
| 参数名   | 类型                   | 必填 | 说明                           |
| :------- | :--------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<number\> | 是   | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6515 6516 6517

**示例:**

J
jiao_yanlin 已提交
6518
```js
6519 6520
audioCapturer.getAudioTime((err, timestamp) => {
  console.info(`Current timestamp: ${timestamp}`);
J
jiao_yanlin 已提交
6521
});
L
lwx1059628 已提交
6522 6523
```

6524
### getAudioTime<sup>8+</sup>
6525

6526
getAudioTime(): Promise<number\>
L
lwx1059628 已提交
6527

6528
获取时间戳(从1970年1月1日开始),单位为纳秒。使用Promise方式异步返回结果。
L
lwx1059628 已提交
6529

6530
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6531 6532 6533

**返回值:**

6534 6535 6536
| 类型             | 说明                          |
| :--------------- | :---------------------------- |
| Promise<number\> | 使用Promise方式异步返回结果。 |
L
lwx1059628 已提交
6537 6538 6539

**示例:**

J
jiao_yanlin 已提交
6540
```js
6541 6542 6543 6544
audioCapturer.getAudioTime().then((audioTime) => {
  console.info(`AudioFrameworkRecLog: AudioCapturer getAudioTime : Success ${audioTime}`);
}).catch((err) => {
  console.info(`AudioFrameworkRecLog: AudioCapturer Created : ERROR : ${err}`);
L
lwx1059628 已提交
6545 6546 6547
});
```

6548
### getBufferSize<sup>8+</sup>
L
lwx1059628 已提交
6549

6550
getBufferSize(callback: AsyncCallback<number\>): void
L
lwx1059628 已提交
6551

6552
获取采集器合理的最小缓冲区大小。使用callback方式异步返回结果。
6553

6554
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6555 6556 6557

**参数:**

6558 6559 6560
| 参数名   | 类型                   | 必填 | 说明                                 |
| :------- | :--------------------- | :--- | :----------------------------------- |
| callback | AsyncCallback<number\> | 是   | 使用callback方式异步返回缓冲区大小。 |
L
lwx1059628 已提交
6561 6562 6563

**示例:**

J
jiao_yanlin 已提交
6564
```js
6565 6566 6567 6568 6569 6570 6571 6572
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}`);
    });
6573
  }
L
lwx1059628 已提交
6574 6575 6576
});
```

6577
### getBufferSize<sup>8+</sup>
6578

6579
getBufferSize(): Promise<number\>
L
lwx1059628 已提交
6580

6581
获取采集器合理的最小缓冲区大小。使用Promise方式异步返回结果。
L
lwx1059628 已提交
6582

6583
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6584

6585 6586 6587 6588 6589
**返回值:**

| 类型             | 说明                                |
| :--------------- | :---------------------------------- |
| Promise<number\> | 使用Promise方式异步返回缓冲区大小。 |
L
lwx1059628 已提交
6590 6591 6592

**示例:**

J
jiao_yanlin 已提交
6593
```js
6594 6595 6596 6597 6598 6599
let bufferSize;
audioCapturer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRecLog: getBufferSize :SUCCESS ${data}`);
  bufferSize = data;
}).catch((err) => {
  console.info(`AudioFrameworkRecLog: getBufferSize :ERROR : ${err}`);
L
lwx1059628 已提交
6600 6601 6602
});
```

6603 6604 6605 6606 6607 6608
### on('audioInterrupt')<sup>10+</sup>

on(type: 'audioInterrupt', callback: Callback\<InterruptEvent>): void

监听音频中断事件。使用callback获取中断事件。

J
jiaoyanlin3 已提交
6609
[on('interrupt')](#oninterrupt)一致,均用于监听焦点变化。AudioCapturer对象在start事件发生时会主动获取焦点,在pause、stop等事件发生时会主动释放焦点,不需要开发者主动发起获取焦点或释放焦点的申请。
6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679

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

**参数:**

| 参数名   | 类型                                         | 必填 | 说明                                                         |
| -------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                                       | 是   | 事件回调类型,支持的事件为:'audioInterrupt'(中断事件被触发,音频采集被中断。) |
| callback | Callback\<[InterruptEvent](#interruptevent9)\> | 是   | 被监听的中断事件的回调。                                     |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |

**示例:**

```js
let isCapturing; // 标识符,表示是否正在采集
onAudioInterrupt();

async function onAudioInterrupt(){
  audioCapturer.on('audioInterrupt', async(interruptEvent) => {
    if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_FORCE) {
      // 由系统进行操作,强制打断音频采集,应用需更新自身状态及显示内容等
      switch (interruptEvent.hintType) {
        case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
          // 音频流已被暂停,临时失去焦点,待可重获焦点时会收到resume对应的interruptEvent
          console.info('Force paused. Update capturing status and stop reading');
          isCapturing = false; // 简化处理,代表应用切换至暂停状态的若干操作
          break;
        case audio.InterruptHint.INTERRUPT_HINT_STOP:
          // 音频流已被停止,永久失去焦点,若想恢复采集,需用户主动触发
          console.info('Force stopped. Update capturing status and stop reading');
          isCapturing = false; // 简化处理,代表应用切换至暂停状态的若干操作
          break;
        default:
          console.info('Invalid interruptEvent');
          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');
          // 若选择继续采集,需在此处主动执行开始采集的若干操作
          break;
        case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
          // 建议应用暂停采集
          console.info('Choose to pause or ignore');
          // 若选择暂停采集,需在此处主动执行暂停采集的若干操作
          break;
        case audio.InterruptHint.INTERRUPT_HINT_STOP:
          // 建议应用停止采集
          console.info('Choose to stop or ignore');
          // 若选择停止采集,需在此处主动执行停止采集的若干操作
          break;
        default:
          break;
      }
   }
  });
}
```


6680
### on('markReach')<sup>8+</sup>
L
lwx1059628 已提交
6681

6682
on(type: "markReach", frame: number, callback: Callback&lt;number&gt;): void
L
lwx1059628 已提交
6683

6684
订阅标记到达的事件。 当采集的帧数达到 frame 参数的值时,回调被触发。
6685

6686
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6687 6688 6689

**参数:**

6690 6691 6692 6693 6694
| 参数名   | 类型                     | 必填 | 说明                                       |
| :------- | :----------------------  | :--- | :----------------------------------------- |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'markReach'。  |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于0。           |
| callback | Callback\<number>         | 是   | 使用callback方式异步返回被触发事件的回调。 |
L
lwx1059628 已提交
6695 6696

**示例:**
6697

J
jiao_yanlin 已提交
6698
```js
6699 6700 6701
audioCapturer.on('markReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
J
jiao_yanlin 已提交
6702
  }
L
lwx1059628 已提交
6703 6704 6705
});
```

6706
### off('markReach')<sup>8+</sup>
L
lwx1059628 已提交
6707

6708
off(type: 'markReach'): void
L
lwx1059628 已提交
6709

6710
取消订阅标记到达的事件。
6711

6712
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6713 6714 6715

**参数:**

6716 6717 6718
| 参数名 | 类型   | 必填 | 说明                                          |
| :----- | :----- | :--- | :-------------------------------------------- |
| type   | string | 是   | 取消事件回调类型,支持的事件为:'markReach'。 |
L
lwx1059628 已提交
6719 6720 6721

**示例:**

J
jiao_yanlin 已提交
6722
```js
6723
audioCapturer.off('markReach');
L
lwx1059628 已提交
6724 6725
```

6726
### on('periodReach')<sup>8+</sup>
L
lwx1059628 已提交
6727

6728
on(type: "periodReach", frame: number, callback: Callback&lt;number&gt;): void
L
lwx1059628 已提交
6729

6730
订阅到达标记的事件。 当采集的帧数达到 frame 参数的值时,触发回调并返回设定的值。
6731

6732
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6733 6734 6735

**参数:**

6736 6737 6738 6739 6740
| 参数名   | 类型                     | 必填 | 说明                                        |
| :------- | :----------------------- | :--- | :------------------------------------------ |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'periodReach'。 |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于0。            |
| callback | Callback\<number>         | 是   | 使用callback方式异步返回被触发事件的回调    |
L
lwx1059628 已提交
6741 6742 6743

**示例:**

J
jiao_yanlin 已提交
6744
```js
6745 6746 6747
audioCapturer.on('periodReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
J
jiao_yanlin 已提交
6748
  }
L
lwx1059628 已提交
6749 6750 6751
});
```

6752
### off('periodReach')<sup>8+</sup>
L
lwx1059628 已提交
6753

6754
off(type: 'periodReach'): void
L
lwx1059628 已提交
6755

6756
取消订阅标记到达的事件。
6757

6758
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6759 6760 6761

**参数:**

6762 6763 6764
| 参数名 | 类型   | 必填 | 说明                                            |
| :----- | :----- | :--- | :---------------------------------------------- |
| type   | string | 是  | 取消事件回调类型,支持的事件为:'periodReach'。 |
L
lwx1059628 已提交
6765 6766 6767

**示例:**

J
jiao_yanlin 已提交
6768
```js
6769
audioCapturer.off('periodReach')
L
lwx1059628 已提交
6770 6771
```

6772
### on('stateChange') <sup>8+</sup>
L
lwx1059628 已提交
6773

6774
on(type: 'stateChange', callback: Callback<AudioState\>): void
L
lwx1059628 已提交
6775

6776
订阅监听状态变化。
6777

6778
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6779 6780 6781

**参数:**

6782 6783 6784 6785
| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'stateChange'。 |
| callback | Callback\<[AudioState](#audiostate8)> | 是   | 返回监听的状态。                            |
L
lwx1059628 已提交
6786 6787 6788

**示例:**

J
jiao_yanlin 已提交
6789
```js
6790 6791 6792 6793 6794 6795
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');
J
jiao_yanlin 已提交
6796
  }
L
lwx1059628 已提交
6797 6798 6799
});
```

6800
## ToneType<sup>9+</sup>
L
lwx1059628 已提交
6801

6802
枚举,播放器的音调类型。
L
lwx1059628 已提交
6803

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

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

6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836
| 名称                                              |  值    | 说明                          |
| :------------------------------------------------ | :----- | :----------------------------|
| 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    | 专有声调,双重蜂鸣声。          |
L
lwx1059628 已提交
6837

6838
## TonePlayer<sup>9+</sup>
L
lwx1059628 已提交
6839

6840
提供播放和管理DTMF(Dual Tone Multi Frequency,双音多频)音调的方法,包括各种系统监听音调、专有音调,如拨号音、通话回铃音等。
L
lwx1059628 已提交
6841

6842
**系统接口:** 该接口为系统接口
L
lwx1059628 已提交
6843

6844
### load<sup>9+</sup>
L
lwx1059628 已提交
6845

6846
load(type: ToneType, callback: AsyncCallback&lt;void&gt;): void
L
lwx1059628 已提交
6847

6848
加载DTMF音调配置。使用callback方式异步返回结果。
6849

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

6852
**系统能力:** SystemCapability.Multimedia.Audio.Tone
L
lwx1059628 已提交
6853 6854 6855

**参数:**

6856 6857 6858 6859
| 参数名          | 类型                        | 必填  | 说明                            |
| :--------------| :-------------------------- | :-----| :------------------------------ |
| type           | [ToneType](#tonetype9)       | 是    | 配置的音调类型。                 |
| callback       | AsyncCallback<void\>        | 是    | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6860 6861 6862

**示例:**

J
jiao_yanlin 已提交
6863
```js
6864
tonePlayer.load(audio.ToneType.TONE_TYPE_DIAL_5, (err) => {
6865
  if (err) {
6866
    console.error(`callback call load failed error: ${err.message}`);
6867
    return;
6868 6869
  } else {
    console.info('callback call load success');
J
jiao_yanlin 已提交
6870
  }
L
lwx1059628 已提交
6871
});
6872 6873
```

6874
### load<sup>9+</sup>
6875

6876
load(type: ToneType): Promise&lt;void&gt;
6877

6878
加载DTMF音调配置。使用Promise方式异步返回结果。
6879

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

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

6884
**参数:**
6885

6886 6887 6888
| 参数名         | 类型                    | 必填  |  说明             |
| :------------- | :--------------------- | :---  | ---------------- |
| type           | [ToneType](#tonetype9)   | 是    | 配置的音调类型。  |
6889

6890
**返回值:**
6891

6892 6893 6894
| 类型            | 说明                        |
| :--------------| :-------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
6895

6896
**示例:**
6897

6898
```js
6899 6900 6901 6902
tonePlayer.load(audio.ToneType.TONE_TYPE_DIAL_1).then(() => {
  console.info('promise call load ');
}).catch(() => {
  console.error('promise call load fail');
6903 6904
});
```
6905

6906
### start<sup>9+</sup>
6907

6908
start(callback: AsyncCallback&lt;void&gt;): void
6909

6910
启动DTMF音调播放。使用callback方式异步返回结果。
6911

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

6914
**系统能力:** SystemCapability.Multimedia.Audio.Tone
6915 6916 6917

**参数:**

6918 6919 6920
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
6921 6922 6923 6924

**示例:**

```js
6925
tonePlayer.start((err) => {
6926
  if (err) {
6927
    console.error(`callback call start failed error: ${err.message}`);
6928
    return;
6929 6930
  } else {
    console.info('callback call start success');
6931 6932 6933 6934
  }
});
```

6935
### start<sup>9+</sup>
6936

6937
start(): Promise&lt;void&gt;
6938

6939
启动DTMF音调播放。使用Promise方式异步返回结果。
6940

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

6943
**系统能力:** SystemCapability.Multimedia.Audio.Tone
6944 6945 6946

**返回值:**

6947 6948 6949
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
6950 6951 6952 6953

**示例:**

```js
6954 6955 6956 6957
tonePlayer.start().then(() => {
  console.info('promise call start');
}).catch(() => {
  console.error('promise call start fail');
6958 6959 6960
});
```

6961
### stop<sup>9+</sup>
6962

6963
stop(callback: AsyncCallback&lt;void&gt;): void
6964

6965
停止当前正在播放的音调。使用callback方式异步返回结果。
6966 6967 6968

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

6969
**系统能力:** SystemCapability.Multimedia.Audio.Tone
6970 6971 6972

**参数:**

6973 6974 6975
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
6976 6977 6978 6979

**示例:**

```js
6980 6981 6982 6983 6984 6985 6986
tonePlayer.stop((err) => {
  if (err) {
    console.error(`callback call stop error: ${err.message}`);
    return;
  } else {
    console.error('callback call stop success ');
  }
6987 6988 6989
});
```

6990
### stop<sup>9+</sup>
6991

6992
stop(): Promise&lt;void&gt;
6993

6994
停止当前正在播放的音调。使用Promise方式异步返回结果。
6995

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

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

7000
**返回值:**
7001

7002 7003 7004
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
7005 7006 7007 7008

**示例:**

```js
7009 7010 7011 7012
tonePlayer.stop().then(() => {
  console.info('promise call stop finish');
}).catch(() => {
  console.error('promise call stop fail');
7013 7014 7015
});
```

7016
### release<sup>9+</sup>
7017

7018
release(callback: AsyncCallback&lt;void&gt;): void
7019

7020
释放与此TonePlayer对象关联的资源。使用callback方式异步返回结果。
7021

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

7024
**系统能力:** SystemCapability.Multimedia.Audio.Tone
7025 7026 7027

**参数:**

7028 7029 7030
| 参数名   | 类型                 | 必填 | 说明                            |
| :------- | :------------------- | :--- | :---------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。  |
7031 7032 7033 7034

**示例:**

```js
7035 7036 7037 7038 7039 7040 7041
tonePlayer.release((err) => {
  if (err) {
    console.error(`callback call release failed error: ${err.message}`);
    return;
  } else {
    console.info('callback call release success ');
  }
7042 7043 7044
});
```

7045
### release<sup>9+</sup>
7046

7047
release(): Promise&lt;void&gt;
7048

7049
释放与此TonePlayer对象关联的资源。使用Promise方式异步返回结果。
7050

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

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

7055
**返回值:**
7056

7057 7058 7059
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
7060 7061 7062 7063

**示例:**

```js
7064 7065 7066 7067
tonePlayer.release().then(() => {
  console.info('promise call release');
}).catch(() => {
  console.error('promise call release fail');
7068 7069 7070
});
```

7071
## ActiveDeviceType<sup>(deprecated)</sup>
7072

7073
枚举,活跃设备类型。
7074

7075 7076
> **说明:**
> 从 API version 9 开始废弃,建议使用[CommunicationDeviceType](#communicationdevicetype9)替代。
7077

7078 7079 7080 7081 7082 7083 7084 7085 7086 7087
**系统能力:** SystemCapability.Multimedia.Audio.Device

| 名称          |  值     | 说明                                                 |
| ------------- | ------ | ---------------------------------------------------- |
| SPEAKER       | 2      | 扬声器。                                             |
| BLUETOOTH_SCO | 7      | 蓝牙设备SCO(Synchronous Connection Oriented)连接。 |

## InterruptActionType<sup>(deprecated)</sup>

枚举,中断事件返回类型。
7088

7089 7090 7091 7092
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃。

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

7094 7095 7096 7097
| 名称           |  值     | 说明               |
| -------------- | ------ | ------------------ |
| TYPE_ACTIVATED | 0      | 表示触发焦点事件。 |
| TYPE_INTERRUPT | 1      | 表示音频打断事件。 |
7098

7099
## AudioInterrupt<sup>(deprecated)</sup>
7100

7101
音频监听事件传入的参数。
7102

7103 7104
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃。
7105

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

7108 7109 7110 7111 7112
| 名称            | 类型                        | 必填 | 说明                                                         |
| --------------- | --------------------------- | ----| ------------------------------------------------------------ |
| streamUsage     | [StreamUsage](#streamusage) | 是  | 音频流使用类型。                                             |
| contentType     | [ContentType](#contenttype) | 是  | 音频打断媒体类型。                                           |
| pauseWhenDucked | boolean                     | 是  | 音频打断时是否可以暂停音频播放(true表示音频播放可以在音频打断期间暂停,false表示相反)。 |
7113

7114 7115 7116
## InterruptAction<sup>(deprecated)</sup>

音频打断/获取焦点事件的回调方法。
7117

7118
> **说明:**
J
jiaoyanlin3 已提交
7119
> 从 API version 7 开始支持,从 API version 9 开始废弃。建议使用[InterruptEvent](#interruptevent9)替代。
7120

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

7123 7124 7125 7126 7127 7128
| 名称       | 类型                                        | 必填 | 说明                                                         |
| ---------- | ------------------------------------------- | ---- | ------------------------------------------------------------ |
| actionType | [InterruptActionType](#interruptactiontypedeprecated) | 是   | 事件返回类型。TYPE_ACTIVATED为焦点触发事件,TYPE_INTERRUPT为音频打断事件。 |
| type       | [InterruptType](#interrupttype)             | 否   | 打断事件类型。                                               |
| hint       | [InterruptHint](#interrupthint)             | 否   | 打断事件提示。                                               |
| activated  | boolean                                     | 否   | 获得/释放焦点。true表示焦点获取/释放成功,false表示焦点获得/释放失败。 |