js-apis-audio.md 258.8 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) | 是   | 表示渲染器信息。 |
Z
zengyawen 已提交
702

L
lwx1059628 已提交
703
## InterruptEvent<sup>9+</sup>
Z
zengyawen 已提交
704 705 706

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

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

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

J
jiaoyanlin3 已提交
715
## VolumeEvent<sup>9+</sup>
Z
zengyawen 已提交
716 717 718

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

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

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

Z
zengyawen 已提交
729 730 731 732
## MicStateChangeEvent<sup>9+</sup>

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

733
**系统能力:** SystemCapability.Multimedia.Audio.Device
Z
zengyawen 已提交
734 735

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

W
wangtao 已提交
739 740 741 742
## ConnectType<sup>9+</sup>

枚举,设备连接类型。

J
jiao_yanlin 已提交
743 744
**系统接口:** 该接口为系统接口

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

747
| 名称                            |  值     | 说明                   |
W
wangtao 已提交
748 749 750 751
| :------------------------------ | :----- | :--------------------- |
| CONNECT_TYPE_LOCAL              | 1      | 本地设备。         |
| CONNECT_TYPE_DISTRIBUTED        | 2      | 分布式设备。            |

752 753 754 755 756 757 758 759
## VolumeGroupInfos<sup>9+</sup>

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

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

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

W
wangtao 已提交
760 761 762 763
## VolumeGroupInfo<sup>9+</sup>

音量组信息。

764
**系统接口:** 该接口为系统接口
W
wangtao 已提交
765

766
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
767 768 769 770 771 772

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

L
lwx1059628 已提交
776 777 778 779
## DeviceChangeAction

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

780
**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
781 782 783

| 名称              | 类型                                              | 必填 | 说明               |
| :---------------- | :------------------------------------------------ | :--- | :----------------- |
784 785
| type              | [DeviceChangeType](#devicechangetype)             | 是   | 设备连接状态变化。 |
| deviceDescriptors | [AudioDeviceDescriptors](#audiodevicedescriptors) | 是   | 设备信息。         |
L
lwx1059628 已提交
786 787 788 789 790

## DeviceChangeType

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

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

793
| 名称       |  值     | 说明           |
L
lwx1059628 已提交
794 795 796 797
| :--------- | :----- | :------------- |
| CONNECT    | 0      | 设备连接。     |
| DISCONNECT | 1      | 断开设备连接。 |

Z
zengyawen 已提交
798 799 800 801
## AudioCapturerOptions<sup>8+</sup>

音频采集器选项信息。

Z
zengyawen 已提交
802
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Capturer
Z
zengyawen 已提交
803 804 805 806

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

L
lwx1059628 已提交
809 810 811 812 813 814 815 816 817 818 819 820 821 822 823
## 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>

枚举,音源类型。

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

826
| 名称                                         |  值     | 说明                   |
827 828 829 830 831
| :------------------------------------------- | :----- | :--------------------- |
| SOURCE_TYPE_INVALID                          | -1     | 无效的音频源。         |
| SOURCE_TYPE_MIC                              | 0      | Mic音频源。            |
| SOURCE_TYPE_VOICE_RECOGNITION<sup>9+</sup>   | 1      | 语音识别源。        |
| SOURCE_TYPE_VOICE_COMMUNICATION              | 7      | 语音通话场景的音频源。 |
L
lwx1059628 已提交
832 833 834 835 836

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

枚举,音频场景。

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

839
| 名称                   |  值     | 说明                                          |
Z
zengyawen 已提交
840 841
| :--------------------- | :----- | :-------------------------------------------- |
| AUDIO_SCENE_DEFAULT    | 0      | 默认音频场景。                                |
842 843
| AUDIO_SCENE_RINGING    | 1      | 响铃模式。<br/>此接口为系统接口。 |
| AUDIO_SCENE_PHONE_CALL | 2      | 电话模式。<br/>此接口为系统接口。 |
Z
zengyawen 已提交
844
| AUDIO_SCENE_VOICE_CHAT | 3      | 语音聊天模式。                                |
L
lwx1059628 已提交
845

W
wangzx0705 已提交
846
## VolumeAdjustType<sup>10+</sup>
W
wangzx0705 已提交
847

W
wangzx0705 已提交
848
枚举,音量调节类型。
W
wangzx0705 已提交
849 850 851 852 853

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

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

Z
zengyawen 已提交
857
## AudioManager
M
mamingshuai 已提交
858

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

861
### setAudioParameter
M
mamingshuai 已提交
862

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

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

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

869
**需要权限:** ohos.permission.MODIFY_AUDIO_SETTINGS
870

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

M
mamingshuai 已提交
873 874
**参数:**

875 876 877 878 879
| 参数名   | 类型                      | 必填 | 说明                     |
| -------- | ------------------------- | ---- | ------------------------ |
| key      | string                    | 是   | 被设置的音频参数的键。   |
| value    | string                    | 是   | 被设置的音频参数的值。   |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调返回设置成功或失败。 |
880

M
mamingshuai 已提交
881 882
**示例:**

J
jiao_yanlin 已提交
883
```js
884
audioManager.setAudioParameter('key_example', 'value_example', (err) => {
J
jiao_yanlin 已提交
885
  if (err) {
886
    console.error(`Failed to set the audio parameter. ${err}`);
J
jiao_yanlin 已提交
887 888
    return;
  }
889
  console.info('Callback invoked to indicate a successful setting of the audio parameter.');
L
lwx1059628 已提交
890
});
M
mamingshuai 已提交
891 892
```

893
### setAudioParameter
M
mamingshuai 已提交
894

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

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

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

901
**需要权限:** ohos.permission.MODIFY_AUDIO_SETTINGS
902

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

M
mamingshuai 已提交
905 906
**参数:**

907 908 909 910
| 参数名 | 类型   | 必填 | 说明                   |
| ------ | ------ | ---- | ---------------------- |
| key    | string | 是   | 被设置的音频参数的键。 |
| value  | string | 是   | 被设置的音频参数的值。 |
M
mamingshuai 已提交
911 912 913

**返回值:**

914 915 916
| 类型                | 说明                            |
| ------------------- | ------------------------------- |
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |
M
mamingshuai 已提交
917 918 919

**示例:**

J
jiao_yanlin 已提交
920
```js
921 922
audioManager.setAudioParameter('key_example', 'value_example').then(() => {
  console.info('Promise returned to indicate a successful setting of the audio parameter.');
L
lwx1059628 已提交
923
});
M
mamingshuai 已提交
924 925
```

926
### getAudioParameter
Z
zengyawen 已提交
927

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

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

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

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

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

938 939 940 941
| 参数名   | 类型                        | 必填 | 说明                         |
| -------- | --------------------------- | ---- | ---------------------------- |
| key      | string                      | 是   | 待获取的音频参数的键。       |
| callback | AsyncCallback&lt;string&gt; | 是   | 回调返回获取的音频参数的值。 |
942

M
mamingshuai 已提交
943 944
**示例:**

J
jiao_yanlin 已提交
945
```js
946
audioManager.getAudioParameter('key_example', (err, value) => {
J
jiao_yanlin 已提交
947
  if (err) {
948
    console.error(`Failed to obtain the value of the audio parameter. ${err}`);
J
jiao_yanlin 已提交
949 950
    return;
  }
951
  console.info(`Callback invoked to indicate that the value of the audio parameter is obtained ${value}.`);
L
lwx1059628 已提交
952
});
M
mamingshuai 已提交
953 954
```

955
### getAudioParameter
Z
zengyawen 已提交
956

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

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

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

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

M
mamingshuai 已提交
965 966
**参数:**

967 968 969
| 参数名 | 类型   | 必填 | 说明                   |
| ------ | ------ | ---- | ---------------------- |
| key    | string | 是   | 待获取的音频参数的键。 |
M
mamingshuai 已提交
970 971 972

**返回值:**

973 974 975
| 类型                  | 说明                                |
| --------------------- | ----------------------------------- |
| Promise&lt;string&gt; | Promise回调返回获取的音频参数的值。 |
M
mamingshuai 已提交
976 977 978

**示例:**

J
jiao_yanlin 已提交
979
```js
980 981
audioManager.getAudioParameter('key_example').then((value) => {
  console.info(`Promise returned to indicate that the value of the audio parameter is obtained ${value}.`);
L
lwx1059628 已提交
982
});
M
mamingshuai 已提交
983 984
```

985
### setAudioScene<sup>8+</sup>
Z
zengyawen 已提交
986

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

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

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

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

M
mamingshuai 已提交
995 996
**参数:**

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

M
mamingshuai 已提交
1002 1003
**示例:**

J
jiao_yanlin 已提交
1004
```js
1005
audioManager.setAudioScene(audio.AudioScene.AUDIO_SCENE_PHONE_CALL, (err) => {
J
jiao_yanlin 已提交
1006
  if (err) {
1007
    console.error(`Failed to set the audio scene mode.​ ${err}`);
J
jiao_yanlin 已提交
1008 1009
    return;
  }
1010
  console.info('Callback invoked to indicate a successful setting of the audio scene mode.');
L
lwx1059628 已提交
1011
});
M
mamingshuai 已提交
1012 1013
```

1014
### setAudioScene<sup>8+</sup>
Z
zengyawen 已提交
1015

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

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

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

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

M
mamingshuai 已提交
1024 1025
**参数:**

1026 1027 1028
| 参数名 | 类型                                 | 必填 | 说明           |
| :----- | :----------------------------------- | :--- | :------------- |
| scene  | <a href="#audioscene">AudioScene</a> | 是   | 音频场景模式。 |
M
mamingshuai 已提交
1029 1030 1031

**返回值:**

1032 1033 1034
| 类型           | 说明                 |
| :------------- | :------------------- |
| Promise<void\> | 用于返回结果的回调。 |
M
mamingshuai 已提交
1035 1036 1037

**示例:**

J
jiao_yanlin 已提交
1038
```js
1039 1040 1041 1042
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 已提交
1043
});
M
mamingshuai 已提交
1044 1045
```

1046
### getAudioScene<sup>8+</sup>
M
mamingshuai 已提交
1047

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

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

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

M
mamingshuai 已提交
1054 1055
**参数:**

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

M
mamingshuai 已提交
1060 1061
**示例:**

J
jiao_yanlin 已提交
1062
```js
1063
audioManager.getAudioScene((err, value) => {
J
jiao_yanlin 已提交
1064
  if (err) {
1065
    console.error(`Failed to obtain the audio scene mode.​ ${err}`);
J
jiao_yanlin 已提交
1066 1067
    return;
  }
1068
  console.info(`Callback invoked to indicate that the audio scene mode is obtained ${value}.`);
L
lwx1059628 已提交
1069
});
M
mamingshuai 已提交
1070 1071
```

1072
### getAudioScene<sup>8+</sup>
1073

1074
getAudioScene\(\): Promise<AudioScene\>
Z
zengyawen 已提交
1075

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

1078
**系统能力:** SystemCapability.Multimedia.Audio.Communication
M
mamingshuai 已提交
1079 1080 1081

**返回值:**

1082 1083 1084
| 类型                                          | 说明                         |
| :-------------------------------------------- | :--------------------------- |
| Promise<<a href="#audioscene">AudioScene</a>> | 用于返回音频场景模式的回调。 |
M
mamingshuai 已提交
1085 1086 1087

**示例:**

J
jiao_yanlin 已提交
1088
```js
1089 1090 1091 1092
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 已提交
1093
});
Z
zengyawen 已提交
1094 1095
```

1096
### getVolumeManager<sup>9+</sup>
1097

1098
getVolumeManager(): AudioVolumeManager
1099

1100
获取音频音量管理器。
1101

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

Z
zengyawen 已提交
1104 1105
**示例:**

J
jiao_yanlin 已提交
1106
```js
1107
let audioVolumeManager = audioManager.getVolumeManager();
1108 1109
```

1110
### getStreamManager<sup>9+</sup>
1111

1112
getStreamManager(): AudioStreamManager
1113

1114
获取音频流管理器。
1115

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

1118
**示例:**
1119

1120 1121 1122
```js
let audioStreamManager = audioManager.getStreamManager();
```
Z
zengyawen 已提交
1123

1124
### getRoutingManager<sup>9+</sup>
1125

1126
getRoutingManager(): AudioRoutingManager
1127

1128
获取音频路由设备管理器。
1129

1130
**系统能力:** SystemCapability.Multimedia.Audio.Device
1131 1132 1133

**示例:**

J
jiao_yanlin 已提交
1134
```js
1135
let audioRoutingManager = audioManager.getRoutingManager();
1136 1137
```

1138
### setVolume<sup>(deprecated)</sup>
1139

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

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

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

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

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

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

Z
zengyawen 已提交
1153
**参数:**
1154

1155 1156 1157 1158 1159
| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
| volume     | number                              | 是   | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 |
| callback   | AsyncCallback&lt;void&gt;           | 是   | 回调表示成功还是失败。                                   |
1160 1161 1162

**示例:**

J
jiao_yanlin 已提交
1163
```js
1164
audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10, (err) => {
J
jiao_yanlin 已提交
1165
  if (err) {
1166
    console.error(`Failed to set the volume. ${err}`);
J
jiao_yanlin 已提交
1167 1168
    return;
  }
1169
  console.info('Callback invoked to indicate a successful volume setting.');
L
lwx1059628 已提交
1170
});
1171 1172
```

1173
### setVolume<sup>(deprecated)</sup>
1174

1175
setVolume(volumeType: AudioVolumeType, volume: number): Promise&lt;void&gt;
1176

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

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

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

1184 1185 1186 1187 1188 1189 1190 1191 1192 1193
仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。

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

**参数:**

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

1195 1196
**返回值:**

1197 1198 1199
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
1200 1201 1202

**示例:**

J
jiao_yanlin 已提交
1203
```js
1204
audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10).then(() => {
1205
  console.info('Promise returned to indicate a successful volume setting.');
L
lwx1059628 已提交
1206
});
1207 1208
```

1209
### getVolume<sup>(deprecated)</sup>
1210

1211
getVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
1212

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

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

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

1220 1221
**参数:**

1222 1223 1224 1225
| 参数名     | 类型                                | 必填 | 说明               |
| ---------- | ----------------------------------- | ---- | ------------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。       |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回音量大小。 |
1226 1227 1228

**示例:**

J
jiao_yanlin 已提交
1229
```js
1230
audioManager.getVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
1231
  if (err) {
1232
    console.error(`Failed to obtain the volume. ${err}`);
J
jiao_yanlin 已提交
1233 1234
    return;
  }
1235
  console.info('Callback invoked to indicate that the volume is obtained.');
L
lwx1059628 已提交
1236
});
1237 1238
```

1239
### getVolume<sup>(deprecated)</sup>
1240

1241
getVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
1242

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

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

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

1250 1251
**参数:**

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

**返回值:**

1258 1259 1260
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回音量大小。 |
1261 1262 1263

**示例:**

J
jiao_yanlin 已提交
1264
```js
1265 1266
audioManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the volume is obtained ${value} .`);
L
lwx1059628 已提交
1267
});
1268 1269
```

1270
### getMinVolume<sup>(deprecated)</sup>
1271

1272
getMinVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
1273

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

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

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

1281 1282
**参数:**

1283 1284 1285 1286
| 参数名     | 类型                                | 必填 | 说明               |
| ---------- | ----------------------------------- | ---- | ------------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。       |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回最小音量。 |
1287 1288 1289

**示例:**

J
jiao_yanlin 已提交
1290
```js
1291
audioManager.getMinVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
1292
  if (err) {
1293
    console.error(`Failed to obtain the minimum volume. ${err}`);
J
jiao_yanlin 已提交
1294 1295
    return;
  }
1296
  console.info(`Callback invoked to indicate that the minimum volume is obtained. ${value}`);
L
lwx1059628 已提交
1297
});
1298 1299
```

1300
### getMinVolume<sup>(deprecated)</sup>
1301

1302
getMinVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
1303

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

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

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

1311 1312
**参数:**

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

**返回值:**

1319 1320 1321
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回最小音量。 |
1322 1323 1324

**示例:**

J
jiao_yanlin 已提交
1325
```js
1326 1327
audioManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promised returned to indicate that the minimum volume is obtained. ${value}`);
L
lwx1059628 已提交
1328
});
1329 1330
```

1331
### getMaxVolume<sup>(deprecated)</sup>
1332

1333
getMaxVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
1334

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

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

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

1342 1343
**参数:**

1344 1345 1346 1347
| 参数名     | 类型                                | 必填 | 说明                   |
| ---------- | ----------------------------------- | ---- | ---------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。           |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回最大音量大小。 |
1348 1349

**示例:**
1350

J
jiao_yanlin 已提交
1351
```js
1352
audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
1353
  if (err) {
1354
    console.error(`Failed to obtain the maximum volume. ${err}`);
J
jiao_yanlin 已提交
1355 1356
    return;
  }
1357
  console.info(`Callback invoked to indicate that the maximum volume is obtained. ${value}`);
L
lwx1059628 已提交
1358
});
1359 1360
```

1361
### getMaxVolume<sup>(deprecated)</sup>
1362

1363
getMaxVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
1364

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

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

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

1372 1373
**参数:**

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

**返回值:**

1380 1381 1382
| 类型                  | 说明                          |
| --------------------- | ----------------------------- |
| Promise&lt;number&gt; | Promise回调返回最大音量大小。 |
1383 1384 1385

**示例:**

J
jiao_yanlin 已提交
1386
```js
1387
audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((data) => {
1388
  console.info('Promised returned to indicate that the maximum volume is obtained.');
L
lwx1059628 已提交
1389
});
1390 1391
```

1392
### mute<sup>(deprecated)</sup>
Z
zengyawen 已提交
1393

1394
mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback&lt;void&gt;): void
1395

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

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

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

1403 1404
**参数:**

1405 1406 1407 1408 1409
| 参数名     | 类型                                | 必填 | 说明                                  |
| ---------- | ----------------------------------- | ---- | ------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                          |
| mute       | boolean                             | 是   | 静音状态,true为静音,false为非静音。 |
| callback   | AsyncCallback&lt;void&gt;           | 是   | 回调表示成功还是失败。                |
1410 1411 1412

**示例:**

J
jiao_yanlin 已提交
1413
```js
1414
audioManager.mute(audio.AudioVolumeType.MEDIA, true, (err) => {
J
jiao_yanlin 已提交
1415
  if (err) {
1416
    console.error(`Failed to mute the stream. ${err}`);
J
jiao_yanlin 已提交
1417 1418
    return;
  }
1419
  console.info('Callback invoked to indicate that the stream is muted.');
L
lwx1059628 已提交
1420
});
1421 1422
```

1423
### mute<sup>(deprecated)</sup>
Z
zengyawen 已提交
1424

1425
mute(volumeType: AudioVolumeType, mute: boolean): Promise&lt;void&gt;
1426

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

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

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

1434 1435
**参数:**

1436 1437 1438 1439
| 参数名     | 类型                                | 必填 | 说明                                  |
| ---------- | ----------------------------------- | ---- | ------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                          |
| mute       | boolean                             | 是   | 静音状态,true为静音,false为非静音。 |
1440 1441 1442

**返回值:**

1443 1444 1445
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
1446 1447 1448

**示例:**

1449

J
jiao_yanlin 已提交
1450
```js
1451
audioManager.mute(audio.AudioVolumeType.MEDIA, true).then(() => {
1452
  console.info('Promise returned to indicate that the stream is muted.');
L
lwx1059628 已提交
1453
});
1454 1455
```

1456
### isMute<sup>(deprecated)</sup>
1457

1458
isMute(volumeType: AudioVolumeType, callback: AsyncCallback&lt;boolean&gt;): void
1459

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

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

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

1467 1468
**参数:**

1469 1470 1471 1472
| 参数名     | 类型                                | 必填 | 说明                                            |
| ---------- | ----------------------------------- | ---- | ----------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                    |
| callback   | AsyncCallback&lt;boolean&gt;        | 是   | 回调返回流静音状态,true为静音,false为非静音。 |
1473 1474 1475

**示例:**

J
jiao_yanlin 已提交
1476
```js
1477
audioManager.isMute(audio.AudioVolumeType.MEDIA, (err, value) => {
J
jiao_yanlin 已提交
1478
  if (err) {
1479
    console.error(`Failed to obtain the mute status. ${err}`);
J
jiao_yanlin 已提交
1480 1481
    return;
  }
1482
  console.info(`Callback invoked to indicate that the mute status of the stream is obtained. ${value}`);
L
lwx1059628 已提交
1483
});
1484 1485
```

1486
### isMute<sup>(deprecated)</sup>
1487

1488
isMute(volumeType: AudioVolumeType): Promise&lt;boolean&gt;
1489

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

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

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

1497 1498
**参数:**

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

**返回值:**

1505 1506 1507
| 类型                   | 说明                                                   |
| ---------------------- | ------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回流静音状态,true为静音,false为非静音。 |
1508 1509 1510

**示例:**

J
jiao_yanlin 已提交
1511
```js
1512
audioManager.isMute(audio.AudioVolumeType.MEDIA).then((value) => {
1513
  console.info(`Promise returned to indicate that the mute status of the stream is obtained ${value}.`);
L
lwx1059628 已提交
1514
});
1515 1516
```

1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 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
### 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 已提交
1579

1580
setRingerMode(mode: AudioRingMode, callback: AsyncCallback&lt;void&gt;): void
1581

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

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

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

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

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

1593 1594
**参数:**

1595 1596 1597 1598
| 参数名   | 类型                            | 必填 | 说明                     |
| -------- | ------------------------------- | ---- | ------------------------ |
| mode     | [AudioRingMode](#audioringmode) | 是   | 音频铃声模式。           |
| callback | AsyncCallback&lt;void&gt;       | 是   | 回调返回设置成功或失败。 |
1599 1600 1601

**示例:**

J
jiao_yanlin 已提交
1602
```js
1603
audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL, (err) => {
J
jiao_yanlin 已提交
1604
  if (err) {
1605
    console.error(`Failed to set the ringer mode.​ ${err}`);
J
jiao_yanlin 已提交
1606 1607
    return;
  }
1608
  console.info('Callback invoked to indicate a successful setting of the ringer mode.');
L
lwx1059628 已提交
1609
});
1610 1611
```

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

1614
setRingerMode(mode: AudioRingMode): Promise&lt;void&gt;
1615

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

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

1621

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

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

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

1628 1629
**参数:**

1630 1631 1632
| 参数名 | 类型                            | 必填 | 说明           |
| ------ | ------------------------------- | ---- | -------------- |
| mode   | [AudioRingMode](#audioringmode) | 是   | 音频铃声模式。 |
1633 1634 1635

**返回值:**

Z
zengyawen 已提交
1636 1637
| 类型                | 说明                            |
| ------------------- | ------------------------------- |
Z
zengyawen 已提交
1638
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |
1639 1640 1641

**示例:**

J
jiao_yanlin 已提交
1642
```js
1643
audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL).then(() => {
1644
  console.info('Promise returned to indicate a successful setting of the ringer mode.');
L
lwx1059628 已提交
1645
});
1646 1647
```

1648
### getRingerMode<sup>(deprecated)</sup>
1649

1650
getRingerMode(callback: AsyncCallback&lt;AudioRingMode&gt;): void
1651

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

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

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

1659 1660
**参数:**

1661 1662 1663
| 参数名   | 类型                                                 | 必填 | 说明                     |
| -------- | ---------------------------------------------------- | ---- | ------------------------ |
| callback | AsyncCallback&lt;[AudioRingMode](#audioringmode)&gt; | 是   | 回调返回系统的铃声模式。 |
1664 1665 1666

**示例:**

J
jiao_yanlin 已提交
1667
```js
1668
audioManager.getRingerMode((err, value) => {
J
jiao_yanlin 已提交
1669
  if (err) {
1670
    console.error(`Failed to obtain the ringer mode.​ ${err}`);
J
jiao_yanlin 已提交
1671 1672
    return;
  }
1673
  console.info(`Callback invoked to indicate that the ringer mode is obtained ${value}.`);
L
lwx1059628 已提交
1674
});
1675 1676
```

1677
### getRingerMode<sup>(deprecated)</sup>
1678

1679
getRingerMode(): Promise&lt;AudioRingMode&gt;
1680

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

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

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

1688 1689
**返回值:**

1690 1691 1692
| 类型                                           | 说明                            |
| ---------------------------------------------- | ------------------------------- |
| Promise&lt;[AudioRingMode](#audioringmode)&gt; | Promise回调返回系统的铃声模式。 |
1693 1694 1695

**示例:**

J
jiao_yanlin 已提交
1696
```js
1697
audioManager.getRingerMode().then((value) => {
1698
  console.info(`Promise returned to indicate that the ringer mode is obtained ${value}.`);
L
lwx1059628 已提交
1699
});
1700 1701
```

1702
### getDevices<sup>(deprecated)</sup>
Z
zengyawen 已提交
1703

1704
getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback&lt;AudioDeviceDescriptors&gt;): void
1705

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
Z
zengyawen 已提交
1712 1713 1714

**参数:**

1715 1716 1717 1718
| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
| deviceFlag | [DeviceFlag](#deviceflag)                                    | 是   | 设备类型的flag。     |
| callback   | AsyncCallback&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | 是   | 回调,返回设备列表。 |
1719

1720 1721 1722 1723 1724 1725 1726 1727 1728 1729
**示例:**
```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.');
});
```
1730

1731
### getDevices<sup>(deprecated)</sup>
1732

1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752
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 已提交
1753 1754 1755

**示例:**

J
jiao_yanlin 已提交
1756
```js
1757 1758
audioManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((data) => {
  console.info('Promise returned to indicate that the device list is obtained.');
L
lwx1059628 已提交
1759
});
Z
zengyawen 已提交
1760 1761
```

1762
### setDeviceActive<sup>(deprecated)</sup>
Z
zengyawen 已提交
1763

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

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
Z
zengyawen 已提交
1772 1773 1774

**参数:**

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

L
lwx1059628 已提交
1781 1782
**示例:**

J
jiao_yanlin 已提交
1783
```js
1784
audioManager.setDeviceActive(audio.ActiveDeviceType.SPEAKER, true, (err) => {
1785
  if (err) {
1786
    console.error(`Failed to set the active status of the device. ${err}`);
1787 1788
    return;
  }
1789
  console.info('Callback invoked to indicate that the device is set to the active status.');
L
lwx1059628 已提交
1790 1791 1792
});
```

1793
### setDeviceActive<sup>(deprecated)</sup>
L
lwx1059628 已提交
1794

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

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

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

1802
**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
1803 1804 1805

**参数:**

1806 1807 1808 1809
| 参数名     | 类型                                  | 必填 | 说明               |
| ---------- | ------------------------------------- | ---- | ------------------ |
| deviceType | [ActiveDeviceType](#activedevicetypedeprecated) | 是   | 活跃音频设备类型。 |
| active     | boolean                               | 是   | 设备激活状态。     |
1810 1811 1812 1813 1814 1815 1816 1817

**返回值:**

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

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

1819

J
jiao_yanlin 已提交
1820
```js
1821 1822
audioManager.setDeviceActive(audio.ActiveDeviceType.SPEAKER, true).then(() => {
  console.info('Promise returned to indicate that the device is set to the active status.');
L
lwx1059628 已提交
1823 1824 1825
});
```

1826
### isDeviceActive<sup>(deprecated)</sup>
L
lwx1059628 已提交
1827

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

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
1836 1837 1838

**参数:**

1839 1840 1841 1842
| 参数名     | 类型                                  | 必填 | 说明                     |
| ---------- | ------------------------------------- | ---- | ------------------------ |
| deviceType | [ActiveDeviceType](#activedevicetypedeprecated) | 是   | 活跃音频设备类型。       |
| callback   | AsyncCallback&lt;boolean&gt;          | 是   | 回调返回设备的激活状态。 |
L
lwx1059628 已提交
1843 1844 1845

**示例:**

J
jiao_yanlin 已提交
1846
```js
1847
audioManager.isDeviceActive(audio.ActiveDeviceType.SPEAKER, (err, value) => {
1848
  if (err) {
1849
    console.error(`Failed to obtain the active status of the device. ${err}`);
1850 1851
    return;
  }
1852
  console.info('Callback invoked to indicate that the active status of the device is obtained.');
L
lwx1059628 已提交
1853 1854 1855
});
```

1856
### isDeviceActive<sup>(deprecated)</sup>
1857

1858
isDeviceActive(deviceType: ActiveDeviceType): Promise&lt;boolean&gt;
1859

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

1862 1863 1864 1865 1866 1867 1868 1869 1870 1871
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[isCommunicationDeviceActive](#iscommunicationdeviceactive9)替代。

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

**参数:**

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

1873
**返回值:**
1874

1875 1876 1877
| Type                   | Description                     |
| ---------------------- | ------------------------------- |
| Promise&lt;boolean&gt; | Promise回调返回设备的激活状态。 |
1878 1879 1880

**示例:**

J
jiao_yanlin 已提交
1881
```js
1882 1883
audioManager.isDeviceActive(audio.ActiveDeviceType.SPEAKER).then((value) => {
  console.info(`Promise returned to indicate that the active status of the device is obtained ${value}.`);
1884 1885 1886
});
```

1887
### setMicrophoneMute<sup>(deprecated)</sup>
1888

1889
setMicrophoneMute(mute: boolean, callback: AsyncCallback&lt;void&gt;): void
1890

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

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

1896 1897 1898
**需要权限:** ohos.permission.MICROPHONE

**系统能力:** SystemCapability.Multimedia.Audio.Device
1899 1900 1901

**参数:**

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

1907
**示例:**
1908

1909 1910 1911 1912 1913 1914 1915 1916 1917
```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.');
});
```
1918

1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942
### 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回调返回设置成功或失败。 |
1943 1944 1945

**示例:**

J
jiao_yanlin 已提交
1946
```js
1947 1948
audioManager.setMicrophoneMute(true).then(() => {
  console.info('Promise returned to indicate that the microphone is muted.');
1949 1950 1951
});
```

1952
### isMicrophoneMute<sup>(deprecated)</sup>
L
lwx1059628 已提交
1953

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

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

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

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

1963
**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
1964 1965 1966

**参数:**

1967 1968 1969
| 参数名   | 类型                         | 必填 | 说明                                                    |
| -------- | ---------------------------- | ---- | ------------------------------------------------------- |
| callback | AsyncCallback&lt;boolean&gt; | 是   | 回调返回系统麦克风静音状态,true为静音,false为非静音。 |
L
lwx1059628 已提交
1970 1971 1972

**示例:**

J
jiao_yanlin 已提交
1973
```js
1974
audioManager.isMicrophoneMute((err, value) => {
J
jiao_yanlin 已提交
1975
  if (err) {
1976 1977
    console.error(`Failed to obtain the mute status of the microphone. ${err}`);
    return;
J
jiao_yanlin 已提交
1978
  }
1979
  console.info(`Callback invoked to indicate that the mute status of the microphone is obtained ${value}.`);
L
lwx1059628 已提交
1980 1981 1982
});
```

1983
### isMicrophoneMute<sup>(deprecated)</sup>
L
lwx1059628 已提交
1984

1985
isMicrophoneMute(): Promise&lt;boolean&gt;
L
lwx1059628 已提交
1986

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

1989 1990 1991 1992 1993 1994
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[isMicrophoneMute](#ismicrophonemute9)替代。

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
1995 1996 1997

**返回值:**

1998 1999 2000
| 类型                   | 说明                                                         |
| ---------------------- | ------------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回系统麦克风静音状态,true为静音,false为非静音。 |
L
lwx1059628 已提交
2001 2002 2003

**示例:**

J
jiao_yanlin 已提交
2004
```js
2005 2006 2007
audioManager.isMicrophoneMute().then((value) => {
  console.info(`Promise returned to indicate that the mute status of the microphone is obtained ${value}.`);
});
L
lwx1059628 已提交
2008 2009
```

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

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

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

2017 2018 2019 2020 2021 2022 2023
监听系统音量变化事件。

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
L
lwx1059628 已提交
2024 2025 2026

**参数:**

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

**示例:**

J
jiao_yanlin 已提交
2034
```js
2035 2036 2037 2038
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 已提交
2039 2040 2041
});
```

2042
### on('ringerModeChange')<sup>(deprecated)</sup>
2043

2044
on(type: 'ringerModeChange', callback: Callback\<AudioRingMode>): void
2045

2046
监听铃声模式变化事件。
2047

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

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

2053 2054 2055 2056 2057 2058 2059 2060
**系统能力:** SystemCapability.Multimedia.Audio.Communication

**参数:**

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

**示例:**

```js
2065 2066 2067
audioManager.on('ringerModeChange', (ringerMode) => {
  console.info(`Updated ringermode: ${ringerMode}`);
});
2068 2069
```

2070
### on('deviceChange')<sup>(deprecated)</sup>
2071

2072
on(type: 'deviceChange', callback: Callback<DeviceChangeAction\>): void
2073

2074
设备更改。音频设备连接状态变化。
2075

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

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

2081
**参数:**
2082

2083 2084 2085 2086
| 参数名   | 类型                                                 | 必填 | 说明                                       |
| :------- | :--------------------------------------------------- | :--- | :----------------------------------------- |
| type     | string                                               | 是   | 订阅的事件的类型。支持事件:'deviceChange' |
| callback | Callback<[DeviceChangeAction](#devicechangeaction)\> | 是   | 获取设备更新详情。                         |
2087 2088 2089 2090

**示例:**

```js
2091 2092 2093 2094 2095
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} `);
2096
});
2097 2098
```

2099
### off('deviceChange')<sup>(deprecated)</sup>
2100

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

2103
取消订阅音频设备连接变化事件。
2104

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

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

2110
**参数:**
2111

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

2117
**示例:**
W
wangtao 已提交
2118

2119
```js
W
wangtao 已提交
2120
audioManager.off('deviceChange');
2121
```
W
wangtao 已提交
2122

J
jiaoyanlin3 已提交
2123
### on('interrupt')
2124

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

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

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

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

2133
**参数:**
2134

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

W
wangtao 已提交
2141
**示例:**
2142

W
wangtao 已提交
2143
```js
2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156
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 已提交
2157 2158 2159 2160
  }
});
```

J
jiaoyanlin3 已提交
2161
### off('interrupt')
W
wangtao 已提交
2162

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

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

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

2169
**参数:**
2170

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

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

```js
2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190
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 已提交
2191 2192
```

2193
## AudioVolumeManager<sup>9+</sup>
W
wangtao 已提交
2194

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

2197
### getVolumeGroupInfos<sup>9+</sup>
W
wangtao 已提交
2198

2199 2200 2201 2202 2203 2204 2205
getVolumeGroupInfos(networkId: string, callback: AsyncCallback<VolumeGroupInfos\>\): void

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2206 2207 2208

**参数:**

2209 2210 2211 2212
| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
| networkId | string                                    | 是   | 设备的网络id。本地设备audio.LOCAL_NETWORK_ID。    |
| callback  | AsyncCallback&lt;[VolumeGroupInfos](#volumegroupinfos9)&gt; | 是   | 回调,返回音量组信息列表。 |
W
wangtao 已提交
2213 2214 2215

**示例:**
```js
2216
audioVolumeManager.getVolumeGroupInfos(audio.LOCAL_NETWORK_ID, (err, value) => {
2217
  if (err) {
2218
    console.error(`Failed to obtain the volume group infos list. ${err}`);
2219
    return;
W
wangtao 已提交
2220
  }
2221
  console.info('Callback invoked to indicate that the volume group infos list is obtained.');
2222
});
W
wangtao 已提交
2223 2224
```

2225
### getVolumeGroupInfos<sup>9+</sup>
W
wangtao 已提交
2226

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

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

2231 2232 2233
**系统接口:** 该接口为系统接口

**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2234 2235 2236

**参数:**

2237 2238 2239
| 参数名     | 类型               | 必填 | 说明                 |
| ---------- | ------------------| ---- | -------------------- |
| networkId | string             | 是   | 设备的网络id。本地设备audio.LOCAL_NETWORK_ID。   |
W
wangtao 已提交
2240

2241 2242
**返回值:**

2243 2244 2245 2246
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;[VolumeGroupInfos](#volumegroupinfos9)&gt; | 音量组信息列表。 |

W
wangtao 已提交
2247 2248 2249
**示例:**

```js
2250 2251 2252 2253
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 已提交
2254
```
J
jiao_yanlin 已提交
2255

2256
### getVolumeGroupManager<sup>9+</sup>
J
jiao_yanlin 已提交
2257

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

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

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

2264
**参数:**
2265

2266 2267
| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
2268 2269
| groupId    | number                                    | 是   | 音量组id。     |
| callback   | AsyncCallback&lt;[AudioVolumeGroupManager](#audiovolumegroupmanager9)&gt; | 是   | 回调,返回一个音量组实例。 |
J
jiao_yanlin 已提交
2270 2271 2272 2273

**示例:**

```js
2274 2275
let groupid = audio.DEFAULT_VOLUME_GROUP_ID;
audioVolumeManager.getVolumeGroupManager(groupid, (err, value) => {
2276
  if (err) {
2277
    console.error(`Failed to obtain the volume group infos list. ${err}`);
2278
    return;
2279
  }
2280
  console.info('Callback invoked to indicate that the volume group infos list is obtained.');
2281
});
2282

J
jiao_yanlin 已提交
2283 2284
```

2285
### getVolumeGroupManager<sup>9+</sup>
J
jiao_yanlin 已提交
2286

2287
getVolumeGroupManager(groupId: number\): Promise<AudioVolumeGroupManager\>
2288

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

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

2293
**参数:**
2294

2295 2296 2297
| 参数名     | 类型                                      | 必填 | 说明              |
| ---------- | ---------------------------------------- | ---- | ---------------- |
| groupId    | number                                   | 是   | 音量组id。     |
2298

2299
**返回值:**
2300

2301 2302 2303
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt; [AudioVolumeGroupManager](#audiovolumegroupmanager9) &gt; | 音量组实例。 |
2304 2305 2306 2307

**示例:**

```js
2308 2309 2310 2311 2312 2313 2314 2315
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.');
}

2316 2317
```

2318
### on('volumeChange')<sup>9+</sup>
2319

2320
on(type: 'volumeChange', callback: Callback\<VolumeEvent>): void
2321

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

2324
**系统能力:** SystemCapability.Multimedia.Audio.Volume
2325 2326 2327

**参数:**

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

2333
**错误码:**
2334

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
2339
| 6800101 | if input parameter value error              |
2340 2341 2342 2343

**示例:**

```js
2344 2345 2346 2347
audioVolumeManager.on('volumeChange', (volumeEvent) => {
  console.info(`VolumeType of stream: ${volumeEvent.volumeType} `);
  console.info(`Volume level: ${volumeEvent.volume} `);
  console.info(`Whether to updateUI: ${volumeEvent.updateUi} `);
2348
});
2349 2350
```

2351
## AudioVolumeGroupManager<sup>9+</sup>
2352

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

2355
### setVolume<sup>9+</sup>
W
wangtao 已提交
2356

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

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

2361
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
W
wangtao 已提交
2362

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

2365
**系统接口:** 该接口为系统接口
W
wangtao 已提交
2366

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

2369
**参数:**
W
wangtao 已提交
2370

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

**示例:**
2378

2379 2380 2381 2382 2383 2384 2385 2386
```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 已提交
2387 2388
```

2389
### setVolume<sup>9+</sup>
W
wangtao 已提交
2390

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

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

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

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2402 2403 2404

**参数:**

2405 2406 2407 2408
| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
| volume     | number                              | 是   | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 |
2409 2410 2411

**返回值:**

2412 2413 2414
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
W
wangtao 已提交
2415 2416 2417 2418

**示例:**

```js
2419 2420 2421
audioVolumeGroupManager.setVolume(audio.AudioVolumeType.MEDIA, 10).then(() => {
  console.info('Promise returned to indicate a successful volume setting.');
});
W
wangtao 已提交
2422 2423
```

2424
### getVolume<sup>9+</sup>
W
wangtao 已提交
2425

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

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

2430
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2431 2432 2433

**参数:**

2434 2435 2436 2437
| 参数名     | 类型                                | 必填 | 说明               |
| ---------- | ----------------------------------- | ---- | ------------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。       |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回音量大小。 |
W
wangtao 已提交
2438 2439 2440 2441

**示例:**

```js
2442
audioVolumeGroupManager.getVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
W
wangtao 已提交
2443
  if (err) {
2444
    console.error(`Failed to obtain the volume. ${err}`);
W
wangtao 已提交
2445 2446
    return;
  }
2447
  console.info('Callback invoked to indicate that the volume is obtained.');
W
wangtao 已提交
2448 2449 2450
});
```

2451
### getVolume<sup>9+</sup>
W
wangtao 已提交
2452

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

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

2457
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2458 2459 2460

**参数:**

2461 2462 2463
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
W
wangtao 已提交
2464 2465 2466

**返回值:**

2467 2468 2469
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回音量大小。 |
W
wangtao 已提交
2470 2471 2472 2473

**示例:**

```js
2474 2475
audioVolumeGroupManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the volume is obtained ${value}.`);
W
wangtao 已提交
2476 2477 2478
});
```

2479
### getMinVolume<sup>9+</sup>
2480

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

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

2485
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2486 2487 2488

**参数:**

2489 2490 2491 2492
| 参数名     | 类型                                | 必填 | 说明               |
| ---------- | ----------------------------------- | ---- | ------------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。       |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回最小音量。 |
W
wangtao 已提交
2493 2494 2495 2496

**示例:**

```js
2497
audioVolumeGroupManager.getMinVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
W
wangtao 已提交
2498
  if (err) {
2499
    console.error(`Failed to obtain the minimum volume. ${err}`);
W
wangtao 已提交
2500 2501
    return;
  }
2502
  console.info(`Callback invoked to indicate that the minimum volume is obtained. ${value}`);
W
wangtao 已提交
2503 2504 2505
});
```

2506
### getMinVolume<sup>9+</sup>
2507

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

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

2512
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2513 2514 2515

**参数:**

2516 2517 2518
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
W
wangtao 已提交
2519 2520 2521

**返回值:**

2522 2523 2524
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回最小音量。 |
W
wangtao 已提交
2525 2526 2527 2528

**示例:**

```js
2529 2530
audioVolumeGroupManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promised returned to indicate that the minimum volume is obtained ${value}.`);
W
wangtao 已提交
2531 2532 2533
});
```

2534
### getMaxVolume<sup>9+</sup>
W
wangtao 已提交
2535

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

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

2540
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2541 2542 2543

**参数:**

2544 2545 2546 2547
| 参数名     | 类型                                | 必填 | 说明                   |
| ---------- | ----------------------------------- | ---- | ---------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。           |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回最大音量大小。 |
W
wangtao 已提交
2548 2549

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

2551 2552 2553 2554 2555 2556 2557 2558
```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 已提交
2559 2560
```

2561
### getMaxVolume<sup>9+</sup>
W
wangtao 已提交
2562

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

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

2567
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2568 2569 2570

**参数:**

2571 2572 2573
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
W
wangtao 已提交
2574 2575 2576

**返回值:**

2577 2578 2579
| 类型                  | 说明                          |
| --------------------- | ----------------------------- |
| Promise&lt;number&gt; | Promise回调返回最大音量大小。 |
W
wangtao 已提交
2580 2581 2582 2583

**示例:**

```js
2584 2585 2586
audioVolumeGroupManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((data) => {
  console.info('Promised returned to indicate that the maximum volume is obtained.');
});
2587
```
2588

2589
### mute<sup>9+</sup>
2590

2591
mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback&lt;void&gt;): void
2592

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

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

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
2602 2603 2604

**参数:**

2605 2606 2607 2608 2609
| 参数名     | 类型                                | 必填 | 说明                                  |
| ---------- | ----------------------------------- | ---- | ------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                          |
| mute       | boolean                             | 是   | 静音状态,true为静音,false为非静音。 |
| callback   | AsyncCallback&lt;void&gt;           | 是   | 回调表示成功还是失败。                |
2610 2611 2612

**示例:**

2613 2614 2615 2616 2617 2618 2619 2620
```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.');
});
2621
```
2622

2623
### mute<sup>9+</sup>
2624

2625
mute(volumeType: AudioVolumeType, mute: boolean): Promise&lt;void&gt;
2626

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

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

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
2636 2637 2638

**参数:**

2639 2640 2641 2642
| 参数名     | 类型                                | 必填 | 说明                                  |
| ---------- | ----------------------------------- | ---- | ------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                          |
| mute       | boolean                             | 是   | 静音状态,true为静音,false为非静音。 |
2643 2644 2645

**返回值:**

2646 2647 2648
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
2649 2650 2651 2652

**示例:**

```js
2653 2654 2655 2656
audioVolumeGroupManager.mute(audio.AudioVolumeType.MEDIA, true).then(() => {
  console.info('Promise returned to indicate that the stream is muted.');
});
```
J
jiao_yanlin 已提交
2657

2658
### isMute<sup>9+</sup>
2659

2660
isMute(volumeType: AudioVolumeType, callback: AsyncCallback&lt;boolean&gt;): void
2661

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

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

2666
**参数:**
2667

2668 2669 2670 2671
| 参数名     | 类型                                | 必填 | 说明                                            |
| ---------- | ----------------------------------- | ---- | ----------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                    |
| callback   | AsyncCallback&lt;boolean&gt;        | 是   | 回调返回流静音状态,true为静音,false为非静音。 |
2672 2673 2674 2675

**示例:**

```js
2676 2677 2678 2679
audioVolumeGroupManager.isMute(audio.AudioVolumeType.MEDIA, (err, value) => {
  if (err) {
    console.error(`Failed to obtain the mute status. ${err}`);
    return;
2680
  }
2681
  console.info(`Callback invoked to indicate that the mute status of the stream is obtained ${value}.`);
2682 2683 2684
});
```

2685
### isMute<sup>9+</sup>
2686

2687
isMute(volumeType: AudioVolumeType): Promise&lt;boolean&gt;
2688

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

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

2693
**参数:**
2694

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

2699
**返回值:**
2700

2701 2702 2703
| 类型                   | 说明                                                   |
| ---------------------- | ------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回流静音状态,true为静音,false为非静音。 |
2704 2705 2706 2707

**示例:**

```js
2708 2709
audioVolumeGroupManager.isMute(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the mute status of the stream is obtained ${value}.`);
2710 2711 2712
});
```

2713
### setRingerMode<sup>9+</sup>
2714

2715
setRingerMode(mode: AudioRingMode, callback: AsyncCallback&lt;void&gt;): void
2716

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

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

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

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

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

2727
**参数:**
2728

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

2734 2735 2736 2737 2738 2739 2740
**示例:**

```js
audioVolumeGroupManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL, (err) => {
  if (err) {
    console.error(`Failed to set the ringer mode.​ ${err}`);
    return;
2741
  }
2742
  console.info('Callback invoked to indicate a successful setting of the ringer mode.');
2743 2744 2745
});
```

2746
### setRingerMode<sup>9+</sup>
2747

2748
setRingerMode(mode: AudioRingMode): Promise&lt;void&gt;
2749

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

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

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

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

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

2760
**参数:**
2761

2762 2763 2764
| 参数名 | 类型                            | 必填 | 说明           |
| ------ | ------------------------------- | ---- | -------------- |
| mode   | [AudioRingMode](#audioringmode) | 是   | 音频铃声模式。 |
2765

2766
**返回值:**
2767

2768 2769 2770
| 类型                | 说明                            |
| ------------------- | ------------------------------- |
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |
2771 2772 2773 2774

**示例:**

```js
2775 2776 2777
audioVolumeGroupManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL).then(() => {
  console.info('Promise returned to indicate a successful setting of the ringer mode.');
});
2778 2779
```

2780
### getRingerMode<sup>9+</sup>
2781

2782
getRingerMode(callback: AsyncCallback&lt;AudioRingMode&gt;): void
2783

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

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

2788
**参数:**
2789

2790 2791 2792
| 参数名   | 类型                                                 | 必填 | 说明                     |
| -------- | ---------------------------------------------------- | ---- | ------------------------ |
| callback | AsyncCallback&lt;[AudioRingMode](#audioringmode)&gt; | 是   | 回调返回系统的铃声模式。 |
2793 2794 2795 2796

**示例:**

```js
2797 2798 2799 2800 2801 2802
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}.`);
2803 2804 2805
});
```

2806
### getRingerMode<sup>9+</sup>
2807

2808
getRingerMode(): Promise&lt;AudioRingMode&gt;
2809

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

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

2814 2815
**返回值:**

2816 2817 2818
| 类型                                           | 说明                            |
| ---------------------------------------------- | ------------------------------- |
| Promise&lt;[AudioRingMode](#audioringmode)&gt; | Promise回调返回系统的铃声模式。 |
2819 2820 2821 2822

**示例:**

```js
2823 2824
audioVolumeGroupManager.getRingerMode().then((value) => {
  console.info(`Promise returned to indicate that the ringer mode is obtained ${value}.`);
2825 2826 2827
});
```

2828
### on('ringerModeChange')<sup>9+</sup>
2829

2830
on(type: 'ringerModeChange', callback: Callback\<AudioRingMode>): void
2831

2832
监听铃声模式变化事件。
2833

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

2836
**参数:**
2837

2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849
| 参数名   | 类型                                      | 必填 | 说明                                                         |
| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                                    | 是   | 事件回调类型,支持的事件为:'ringerModeChange'(铃声模式变化事件,检测到铃声模式改变时,触发该事件)。 |
| callback | Callback<[AudioRingMode](#audioringmode)> | 是   | 回调方法。                                                   |

**错误码:**

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

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

2851
**示例:**
J
jiao_yanlin 已提交
2852 2853

```js
2854 2855
audioVolumeGroupManager.on('ringerModeChange', (ringerMode) => {
  console.info(`Updated ringermode: ${ringerMode}`);
2856 2857
});
```
2858
### setMicrophoneMute<sup>9+</sup>
2859

2860
setMicrophoneMute(mute: boolean, callback: AsyncCallback&lt;void&gt;): void
2861

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

2864
**需要权限:** ohos.permission.MANAGE_AUDIO_CONFIG
2865

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

2868
**参数:**
2869

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

2875
**示例:**
J
jiao_yanlin 已提交
2876 2877

```js
2878 2879 2880 2881 2882 2883
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.');
2884
});
2885 2886
```

2887
### setMicrophoneMute<sup>9+</sup>
2888

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

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

2893 2894 2895
**需要权限:** ohos.permission.MANAGE_AUDIO_CONFIG

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

2897
**参数:**
2898

2899 2900 2901 2902 2903 2904 2905 2906 2907
| 参数名 | 类型    | 必填 | 说明                                          |
| ------ | ------- | ---- | --------------------------------------------- |
| mute   | boolean | 是   | 待设置的静音状态,true为静音,false为非静音。 |

**返回值:**

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

2909
**示例:**
J
jiao_yanlin 已提交
2910 2911

```js
2912 2913
audioVolumeGroupManager.setMicrophoneMute(true).then(() => {
  console.info('Promise returned to indicate that the microphone is muted.');
2914 2915 2916
});
```

2917
### isMicrophoneMute<sup>9+</sup>
2918

2919
isMicrophoneMute(callback: AsyncCallback&lt;boolean&gt;): void
2920

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

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

2925
**参数:**
2926

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

2931
**示例:**
J
jiao_yanlin 已提交
2932 2933

```js
2934 2935 2936 2937 2938 2939
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}.`);
2940
});
2941 2942
```

2943
### isMicrophoneMute<sup>9+</sup>
2944

2945
isMicrophoneMute(): Promise&lt;boolean&gt;
2946

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

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

2951
**返回值:**
2952

2953 2954 2955
| 类型                   | 说明                                                         |
| ---------------------- | ------------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回系统麦克风静音状态,true为静音,false为非静音。 |
2956

2957
**示例:**
J
jiao_yanlin 已提交
2958 2959

```js
2960 2961
audioVolumeGroupManager.isMicrophoneMute().then((value) => {
  console.info(`Promise returned to indicate that the mute status of the microphone is obtained ${value}.`);
2962 2963 2964
});
```

2965
### on('micStateChange')<sup>9+</sup>
2966

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

2969
监听系统麦克风状态更改事件。
2970

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

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

2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988
**参数:**

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

**错误码:**

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

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

2990
**示例:**
J
jiao_yanlin 已提交
2991 2992

```js
2993 2994
audioVolumeGroupManager.on('micStateChange', (micStateChange) => {
  console.info(`Current microphone status is: ${micStateChange.mute} `);
2995
});
2996 2997
```

W
wangzx0705 已提交
2998
### isVolumeUnadjustable<sup>10+</sup>
W
wangzx0705 已提交
2999

W
wangzx0705 已提交
3000
isVolumeUnadjustable(): boolean
W
wangzx0705 已提交
3001

W
wangzx0705 已提交
3002
获取固定音量模式开关状态,打开时进入固定音量模式,此时音量固定无法被调节,使用同步方式返回结果。
W
wangzx0705 已提交
3003 3004 3005 3006 3007 3008 3009

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

**返回值:**

| 类型                   | 说明                                                   |
| ---------------------- | ------------------------------------------------------ |
W
wangzx0705 已提交
3010
| boolean            | 同步接口,返回固定音量模式开关状态,true为固定音量模式,false为非固定音量模式。 |
W
wangzx0705 已提交
3011 3012 3013 3014

**示例:**

```js
W
wangzx0705 已提交
3015 3016
bool volumeAdjustSwitch = audioVolumeGroupManager.isVolumeUnadjustable();
console.info(`Whether it is volume unadjustable: ${volumeAdjustSwitch}.`);
W
wangzx0705 已提交
3017 3018 3019 3020 3021 3022
```

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

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

W
wangzx0705 已提交
3023
调节当前最高优先级的流的音量,使音量值按步长加或减,使用callback方式异步返回结果。
W
wangzx0705 已提交
3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036

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

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

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

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

**参数:**

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

W
wangzx0705 已提交
3040 3041 3042 3043 3044 3045 3046 3047 3048
**错误码:**

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

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

W
wangzx0705 已提交
3049 3050 3051
**示例:**

```js
W
wangzx0705 已提交
3052
audioVolumeGroupManager.adjustVolumeByStep(audio.VolumeAdjustType.VOLUME_UP, (err) => {
W
wangzx0705 已提交
3053 3054 3055
  if (err) {
    console.error(`Failed to adjust the volume by step. ${err}`);
    return;
W
wangzx0705 已提交
3056 3057
  } else {
    console.info('Success to adjust the volume by step.');
W
wangzx0705 已提交
3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078
  }
});
```
### 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 已提交
3079
| adjustType | [VolumeAdjustType](#volumeadjusttype10) | 是   | 音量调节方向。                                             |
W
wangzx0705 已提交
3080 3081 3082 3083 3084 3085 3086

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |

W
wangzx0705 已提交
3087 3088 3089 3090 3091 3092 3093 3094 3095
**错误码:**

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

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

W
wangzx0705 已提交
3096 3097 3098
**示例:**

```js
W
wangzx0705 已提交
3099
audioVolumeGroupManager.adjustVolumeByStep(audio.VolumeAdjustType.VOLUME_UP).then((value) => {
W
wangzx0705 已提交
3100
  console.info('Success to adjust the volume by step.');
W
wangzx0705 已提交
3101
}).catch((error) => {
W
wangzx0705 已提交
3102
  console.error('Fail to adjust the volume by step.');
W
wangzx0705 已提交
3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124
});
```

### 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 已提交
3125
| adjustType | [VolumeAdjustType](#volumeadjusttype10) | 是   | 音量调节方向。                                             |
W
wangzx0705 已提交
3126 3127
| callback   | AsyncCallback&lt;void&gt;           | 是   | 回调表示成功还是失败。                                   |

W
wangzx0705 已提交
3128 3129 3130 3131 3132 3133 3134 3135 3136
**错误码:**

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

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

W
wangzx0705 已提交
3137 3138 3139
**示例:**

```js
W
wangzx0705 已提交
3140
audioVolumeGroupManager.adjustSystemVolumeByStep(audio.AudioVolumeType.MEDIA, audio.VolumeAdjustType.VOLUME_UP, (err) => {
W
wangzx0705 已提交
3141
  if (err) {
W
wangzx0705 已提交
3142 3143 3144
    console.error(`Failed to adjust the system volume by step ${err}`);
  } else {
    console.info('Success to adjust the system volume by step.');
W
wangzx0705 已提交
3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166
  }
});
```
### 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 已提交
3167
| adjustType | [VolumeAdjustType](#volumeadjusttype10) | 是   | 音量调节方向。                                             |
W
wangzx0705 已提交
3168 3169 3170 3171 3172 3173 3174

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |

W
wangzx0705 已提交
3175 3176 3177 3178 3179 3180 3181 3182 3183
**错误码:**

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

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

W
wangzx0705 已提交
3184 3185 3186
**示例:**

```js
W
wangzx0705 已提交
3187
audioVolumeGroupManager.adjustSystemVolumeByStep(audio.AudioVolumeType.MEDIA, audio.VolumeAdjustType.VOLUME_UP).then((value) => {
W
wangzx0705 已提交
3188
  console.info('Success to adjust the system volume by step.');
W
wangzx0705 已提交
3189
}).catch((error) => {
W
wangzx0705 已提交
3190
  console.error('Fail to adjust the system volume by step.');
W
wangzx0705 已提交
3191 3192 3193 3194 3195 3196 3197
});
```

### getSystemVolumeInDb<sup>10+</sup>

getSystemVolumeInDb(volumeType: AudioVolumeType, volumeLevel: number, device: DeviceType, callback: AsyncCallback&lt;number&gt;): void

W
wangzx0705 已提交
3198
获取音量增益dB值,使用callback方式异步返回结果。
W
wangzx0705 已提交
3199 3200 3201 3202 3203 3204 3205 3206 3207 3208

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

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

**参数:**

| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
W
wangzx0705 已提交
3209
| volumeLevel | number                         | 是   | 音量等级。                                               |
W
wangzx0705 已提交
3210
| device     | [DeviceType](#devicetype)           | 是   | 设备类型。                                               |
W
wangzx0705 已提交
3211 3212 3213 3214 3215 3216 3217 3218 3219 3220
| callback   | AsyncCallback&lt;number&gt;           | 是   | 回调返回对应的音量增益dB值。                              |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | Invalid parameter error                     |
| 6800301 | System error                                |
W
wangzx0705 已提交
3221 3222 3223 3224 3225 3226 3227

**示例:**

```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 已提交
3228 3229
  } else {
    console.info(`Success to get the volume DB. ${dB}`);
W
wangzx0705 已提交
3230 3231 3232 3233 3234 3235 3236
  }
});
```
### getSystemVolumeInDb<sup>10+</sup>

getSystemVolumeInDb(volumeType: AudioVolumeType, volumeLevel: number, device: DeviceType): Promise&lt;number&gt;

W
wangzx0705 已提交
3237
获取音量增益dB值,使用Promise方式异步返回结果。
W
wangzx0705 已提交
3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254

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

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

**参数:**

| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
| volumeLevel | number                              | 是   | 音量等级。                                             |
| device     | [DeviceType](#devicetype)           | 是   | 设备类型。                                               |

**返回值:**

| 类型                  | 说明                               |
| --------------------- | ---------------------------------- |
W
wangzx0705 已提交
3255 3256 3257 3258 3259 3260 3261 3262 3263 3264
| Promise&lt;number&gt; | Promise回调返回对应的音量增益dB值。 |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | Invalid parameter error                     |
| 6800301 | System error                                |
W
wangzx0705 已提交
3265 3266 3267 3268

**示例:**

```js
W
wangzx0705 已提交
3269 3270
audioVolumeGroupManager.getSystemVolumeInDb(audio.AudioVolumeType.MEDIA, 3, audio.DeviceType.SPEAKER).then((value) => {
  console.info(`Success to get the volume DB. ${value}`);
W
wangzx0705 已提交
3271
}).catch((error) => {
W
wangzx0705 已提交
3272
  console.error(`Fail to adjust the system volume by step. ${error}`);
W
wangzx0705 已提交
3273 3274 3275
});
```

3276
## AudioStreamManager<sup>9+</sup>
3277

3278
管理音频流。在使用AudioStreamManager的API前,需要使用[getStreamManager](#getstreammanager9)获取AudioStreamManager实例。
3279

3280
### getCurrentAudioRendererInfoArray<sup>9+</sup>
3281

3282 3283 3284 3285 3286
getCurrentAudioRendererInfoArray(callback: AsyncCallback&lt;AudioRendererChangeInfoArray&gt;): void

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

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

3288
**参数:**
3289

3290 3291 3292
| 参数名     | 类型                                 | 必填     | 说明                         |
| -------- | ----------------------------------- | -------- | --------------------------- |
| callback | AsyncCallback<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | 是     |  回调函数,返回当前音频渲染器的信息。 |
3293

3294
**示例:**
J
jiao_yanlin 已提交
3295 3296

```js
3297 3298
audioStreamManager.getCurrentAudioRendererInfoArray(async (err, AudioRendererChangeInfoArray) => {
  console.info('getCurrentAudioRendererInfoArray **** Get Callback Called ****');
3299
  if (err) {
3300
    console.error(`getCurrentAudioRendererInfoArray :ERROR: ${err}`);
3301
  } else {
3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322
    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 已提交
3323
  }
3324 3325 3326
});
```

3327
### getCurrentAudioRendererInfoArray<sup>9+</sup>
3328

3329
getCurrentAudioRendererInfoArray(): Promise&lt;AudioRendererChangeInfoArray&gt;
3330

3331
获取当前音频渲染器的信息。使用Promise异步回调。
3332

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

3335
**返回值:**
3336

3337 3338 3339
| 类型                                                                              | 说明                                    |
| ---------------------------------------------------------------------------------| --------------------------------------- |
| Promise<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)>          | Promise对象,返回当前音频渲染器信息。      |
3340 3341 3342 3343

**示例:**

```js
3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371
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}`);
  });
}
3372 3373
```

3374
### getCurrentAudioCapturerInfoArray<sup>9+</sup>
3375

3376
getCurrentAudioCapturerInfoArray(callback: AsyncCallback&lt;AudioCapturerChangeInfoArray&gt;): void
3377

3378
获取当前音频采集器的信息。使用callback异步回调。
3379

3380
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3381 3382 3383

**参数:**

3384 3385 3386
| 参数名        | 类型                                 | 必填      | 说明                                                      |
| ---------- | ----------------------------------- | --------- | -------------------------------------------------------- |
| callback   | AsyncCallback<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | 是    | 回调函数,返回当前音频采集器的信息。 |
3387 3388 3389 3390

**示例:**

```js
3391 3392
audioStreamManager.getCurrentAudioCapturerInfoArray(async (err, AudioCapturerChangeInfoArray) => {
  console.info('getCurrentAudioCapturerInfoArray **** Get Callback Called ****');
3393
  if (err) {
3394
    console.error(`getCurrentAudioCapturerInfoArray :ERROR: ${err}`);
3395
  } else {
3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414
    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}`);
        }
      }
    }
3415 3416 3417 3418
  }
});
```

3419
### getCurrentAudioCapturerInfoArray<sup>9+</sup>
3420

3421
getCurrentAudioCapturerInfoArray(): Promise&lt;AudioCapturerChangeInfoArray&gt;
3422

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

3425
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3426 3427 3428

**返回值:**

3429 3430 3431
| 类型                                                                         | 说明                                 |
| -----------------------------------------------------------------------------| ----------------------------------- |
| Promise<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)>      | Promise对象,返回当前音频渲染器信息。  |
3432 3433 3434 3435

**示例:**

```js
3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461
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}`);
  });
}
3462 3463
```

3464
### on('audioRendererChange')<sup>9+</sup>
3465

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

3468
监听音频渲染器更改事件。
3469

3470
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3471 3472 3473

**参数:**

3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485
| 参数名      | 类型        | 必填      | 说明                                                                     |
| -------- | ---------- | --------- | ------------------------------------------------------------------------ |
| type     | string     | 是        | 事件类型,支持的事件`'audioRendererChange'`:当音频渲染器发生更改时触发。     |
| callback | Callback<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | 是  |  回调函数。        |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
3486 3487 3488 3489

**示例:**

```js
3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509
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}`);
    }
3510
  }
3511
});
3512 3513
```

3514
### off('audioRendererChange')<sup>9+</sup>
3515

3516
off(type: "audioRendererChange"): void
3517

3518
取消监听音频渲染器更改事件。
3519

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

3522
**参数:**
3523

3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534
| 参数名     | 类型     | 必填 | 说明              |
| -------- | ------- | ---- | ---------------- |
| type     | string  | 是   | 事件类型,支持的事件`'audioRendererChange'`:音频渲染器更改事件。 |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
3535 3536 3537 3538

**示例:**

```js
3539 3540
audioStreamManager.off('audioRendererChange');
console.info('######### RendererChange Off is called #########');
3541 3542
```

3543
### on('audioCapturerChange')<sup>9+</sup>
3544

3545
on(type: "audioCapturerChange", callback: Callback&lt;AudioCapturerChangeInfoArray&gt;): void
3546

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

3549
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
3550 3551 3552

**参数:**

3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564
| 参数名     | 类型     | 必填      | 说明                                                                                           |
| -------- | ------- | --------- | ----------------------------------------------------------------------- |
| type     | string  | 是        | 事件类型,支持的事件`'audioCapturerChange'`:当音频采集器发生更改时触发。     |
| callback | Callback<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | 是     | 回调函数。   |

**错误码:**

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

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

3566 3567 3568
**示例:**

```js
3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587
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}`);
    }
3588 3589 3590 3591
  }
});
```

3592
### off('audioCapturerChange')<sup>9+</sup>
3593

3594
off(type: "audioCapturerChange"): void;
3595

3596
取消监听音频采集器更改事件。
3597

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

3600
**参数:**
3601

3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612
| 参数名       | 类型     | 必填 | 说明                                                          |
| -------- | -------- | --- | ------------------------------------------------------------- |
| type     | string   |是   | 事件类型,支持的事件`'audioCapturerChange'`:音频采集器更改事件。 |

**错误码:**

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

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

3614 3615 3616
**示例:**

```js
3617 3618 3619
audioStreamManager.off('audioCapturerChange');
console.info('######### CapturerChange Off is called #########');

3620 3621
```

3622
### isActive<sup>9+</sup>
3623

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

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

3628
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3629 3630 3631

**参数:**

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

**示例:**

3639
```js
3640 3641 3642 3643
audioStreamManager.isActive(audio.AudioVolumeType.MEDIA, (err, value) => {
  if (err) {
    console.error(`Failed to obtain the active status of the stream. ${err}`);
    return;
3644
  }
3645
  console.info(`Callback invoked to indicate that the active status of the stream is obtained ${value}.`);
3646
});
3647 3648
```

3649
### isActive<sup>9+</sup>
3650

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

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

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

3657 3658 3659 3660 3661 3662
**参数:**

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

3663 3664
**返回值:**

3665 3666 3667
| 类型                   | 说明                                                     |
| ---------------------- | -------------------------------------------------------- |
| Promise&lt;boolean&gt; | Promise回调返回流的活跃状态,true为活跃,false为不活跃。 |
3668 3669 3670 3671

**示例:**

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

X
Xiangyu Li 已提交
3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688
### getAudioEffectInfoArray<sup>10+</sup>

getAudioEffectInfoArray(content: ContentType, usage: StreamUsage, callback: AsyncCallback&lt;AudioEffectInfoArray&gt;): void

获取当前音效模式的信息。使用callback异步回调。

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

**参数:**

| 参数名    | 类型                                | 必填     | 说明                         |
| -------- | ----------------------------------- | -------- | --------------------------- |
3689 3690
| content  | [ContentType](#contenttype)                                    | 是     |  音频内容类型。                  |
| usage    | [StreamUsage](#streamusage)                                    | 是     |  音频流使用类型。                |
X
Xiangyu Li 已提交
3691 3692 3693 3694 3695
| callback | AsyncCallback<[AudioEffectInfoArray](#audioeffectinfoarray10)> | 是     |  回调函数,返回当前音效模式的信息。|

**示例:**

```js
Q
update  
Qin Peng 已提交
3696
audioStreamManager.getAudioEffectInfoArray(audio.ContentType.CONTENT_TYPE_MUSIC, audio.StreamUsage.STREAM_USAGE_MEDIA, async (err, audioEffectInfoArray) => {
X
Xiangyu Li 已提交
3697 3698 3699 3700 3701
  console.info('getAudioEffectInfoArray **** Get Callback Called ****');
  if (err) {
    console.error(`getAudioEffectInfoArray :ERROR: ${err}`);
    return;
  } else {
X
Xiangyu Li 已提交
3702
    console.info(`The effect modes are: ${audioEffectInfoArray}`);
X
Xiangyu Li 已提交
3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718
  }
});
```

### getAudioEffectInfoArray<sup>10+</sup>

getAudioEffectInfoArray(content: ContentType, usage: StreamUsage): Promise&lt;AudioEffectInfoArray&gt;

获取当前音效模式的信息。使用Promise异步回调。

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

**参数:**

| 参数名    | 类型                                | 必填     | 说明                         |
| -------- | ----------------------------------- | -------- | --------------------------- |
Q
update  
Qin Peng 已提交
3719 3720
| content  | [ContentType](#contenttype)         | 是     |  音频内容类型。                 |
| usage    | [StreamUsage](#streamusage)         | 是     |  音频流使用类型。               |
X
Xiangyu Li 已提交
3721 3722 3723 3724 3725 3726 3727 3728 3729 3730

**返回值:**

| 类型                                                                      | 说明                                    |
| --------------------------------------------------------------------------| --------------------------------------- |
| Promise<[AudioEffectInfoArray](#audioeffectinfoarray10)>                  | Promise对象,返回当前音效模式的信息。      |

**示例:**

```js
X
Xiangyu Li 已提交
3731
audioStreamManager.getAudioEffectInfoArray(audio.ContentType.CONTENT_TYPE_MUSIC, audio.StreamUsage.STREAM_USAGE_MEDIA).then((audioEffectInfoArray) => {
X
Xiangyu Li 已提交
3732
  console.info('getAudioEffectInfoArray ######### Get Promise is called ##########');
X
Xiangyu Li 已提交
3733
  console.info(`The effect modes are: ${audioEffectInfoArray}`);
Q
update  
Qin Peng 已提交
3734 3735 3736
}).catch((err) => {
  console.error(`getAudioEffectInfoArray :ERROR: ${err}`);
});
X
Xiangyu Li 已提交
3737 3738
```

3739
## AudioRoutingManager<sup>9+</sup>
3740

3741
音频路由管理。在使用AudioRoutingManager的接口前,需要使用[getRoutingManager](#getroutingmanager9)获取AudioRoutingManager实例。
3742

3743
### getDevices<sup>9+</sup>
3744

3745 3746 3747 3748 3749
getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback&lt;AudioDeviceDescriptors&gt;): void

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
3750 3751 3752

**参数:**

3753 3754 3755 3756
| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
| deviceFlag | [DeviceFlag](#deviceflag)                                    | 是   | 设备类型的flag。     |
| callback   | AsyncCallback&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | 是   | 回调,返回设备列表。 |
3757 3758 3759 3760

**示例:**

```js
3761 3762 3763 3764 3765 3766
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.');
3767 3768 3769
});
```

3770
### getDevices<sup>9+</sup>
3771

3772
getDevices(deviceFlag: DeviceFlag): Promise&lt;AudioDeviceDescriptors&gt;
3773

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

3776 3777 3778 3779 3780 3781 3782
**系统能力:** SystemCapability.Multimedia.Audio.Device

**参数:**

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

**返回值:**

3786 3787 3788
| 类型                                                         | 说明                      |
| ------------------------------------------------------------ | ------------------------- |
| Promise&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | Promise回调返回设备列表。 |
3789 3790 3791 3792

**示例:**

```js
3793 3794
audioRoutingManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((data) => {
  console.info('Promise returned to indicate that the device list is obtained.');
3795 3796 3797
});
```

3798
### on('deviceChange')<sup>9+</sup>
3799

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

3802
设备更改。音频设备连接状态变化。
3803

3804
**系统能力:** SystemCapability.Multimedia.Audio.Device
3805 3806 3807

**参数:**

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

3814
**错误码:**
3815

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

3818 3819 3820
| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
3821 3822 3823 3824

**示例:**

```js
3825 3826 3827 3828 3829
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);
3830 3831 3832
});
```

3833
### off('deviceChange')<sup>9+</sup>
3834

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

3837
取消订阅音频设备连接变化事件。
3838

3839
**系统能力:** SystemCapability.Multimedia.Audio.Device
3840 3841 3842

**参数:**

3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854
| 参数名   | 类型                                                | 必填 | 说明                                       |
| -------- | --------------------------------------------------- | ---- | ------------------------------------------ |
| type     | string                                              | 是   | 订阅的事件的类型。支持事件:'deviceChange' |
| callback | Callback<[DeviceChangeAction](#devicechangeaction)> | 否   | 获取设备更新详情。                         |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
J
jiao_yanlin 已提交
3855

3856
**示例:**
3857

3858
```js
W
wangtao 已提交
3859
audioRoutingManager.off('deviceChange');
3860
```
3861

3862
### selectInputDevice<sup>9+</sup>
3863

3864
selectInputDevice(inputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback&lt;void&gt;): void
3865

3866
选择音频输入设备,当前只能选择一个输入设备,使用callback方式异步返回结果。
3867

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

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

3872
**参数:**
3873

3874 3875 3876 3877
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| inputAudioDevices           | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输入设备类。               |
| callback                    | AsyncCallback&lt;void&gt;                                    | 是   | 回调,返回选择输入设备结果。 |
3878 3879 3880

**示例:**
```js
3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892
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,
3893
    displayName : "",
3894 3895 3896 3897 3898 3899 3900 3901 3902 3903
}];

async function selectInputDevice(){
  audioRoutingManager.selectInputDevice(inputAudioDeviceDescriptor, (err) => {
    if (err) {
      console.error(`Result ERROR: ${err}`);
    } else {
      console.info('Select input devices result callback: SUCCESS'); }
  });
}
3904 3905
```

3906
### selectInputDevice<sup>9+</sup>
3907

3908
selectInputDevice(inputAudioDevices: AudioDeviceDescriptors): Promise&lt;void&gt;
3909

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
3915 3916 3917

**参数:**

3918 3919 3920 3921 3922 3923 3924 3925 3926
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| inputAudioDevices           | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输入设备类。               |

**返回值:**

| 类型                  | 说明                         |
| --------------------- | --------------------------- |
| Promise&lt;void&gt;   | Promise返回选择输入设备结果。 |
3927 3928

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

3930
```js
3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942
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,
3943
    displayName : "",
3944 3945 3946 3947 3948 3949 3950 3951 3952
}];

async function getRoutingManager(){
    audioRoutingManager.selectInputDevice(inputAudioDeviceDescriptor).then(() => {
      console.info('Select input devices result promise: SUCCESS');
    }).catch((err) => {
      console.error(`Result ERROR: ${err}`);
    });
}
3953 3954
```

3955
### setCommunicationDevice<sup>9+</sup>
3956

3957
setCommunicationDevice(deviceType: CommunicationDeviceType, active: boolean, callback: AsyncCallback&lt;void&gt;): void
3958

3959
设置通信设备激活状态,使用callback方式异步返回结果。
3960

3961
**系统能力:** SystemCapability.Multimedia.Audio.Communication
3962

3963
**参数:**
3964

3965 3966 3967 3968 3969
| 参数名     | 类型                                  | 必填 | 说明                     |
| ---------- | ------------------------------------- | ---- | ------------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是   | 音频设备类型。       |
| active     | boolean                               | 是   | 设备激活状态。           |
| callback   | AsyncCallback&lt;void&gt;             | 是   | 回调返回设置成功或失败。 |
3970 3971 3972 3973

**示例:**

```js
3974 3975 3976 3977 3978 3979
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.');
3980
});
3981 3982
```

3983
### setCommunicationDevice<sup>9+</sup>
3984

3985
setCommunicationDevice(deviceType: CommunicationDeviceType, active: boolean): Promise&lt;void&gt;
3986

3987 3988 3989
设置通信设备激活状态,使用Promise方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Communication
3990

3991
**参数:**
3992

3993 3994 3995 3996
| 参数名     | 类型                                                   | 必填 | 说明               |
| ---------- | ----------------------------------------------------- | ---- | ------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9)  | 是   | 活跃音频设备类型。 |
| active     | boolean                                               | 是   | 设备激活状态。     |
3997

3998
**返回值:**
3999

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

4004 4005
**示例:**

J
jiao_yanlin 已提交
4006
```js
4007 4008
audioRoutingManager.setCommunicationDevice(audio.CommunicationDeviceType.SPEAKER, true).then(() => {
  console.info('Promise returned to indicate that the device is set to the active status.');
4009 4010
});
```
4011

4012
### isCommunicationDeviceActive<sup>9+</sup>
4013

4014
isCommunicationDeviceActive(deviceType: CommunicationDeviceType, callback: AsyncCallback&lt;boolean&gt;): void
4015

4016 4017 4018
获取指定通信设备的激活状态,使用callback方式异步返回结果。

**系统能力:** SystemCapability.Multimedia.Audio.Communication
4019 4020 4021

**参数:**

4022 4023 4024 4025
| 参数名     | 类型                                                  | 必填 | 说明                     |
| ---------- | ---------------------------------------------------- | ---- | ------------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是   | 活跃音频设备类型。       |
| callback   | AsyncCallback&lt;boolean&gt;                         | 是   | 回调返回设备的激活状态。 |
4026 4027 4028 4029

**示例:**

```js
4030 4031 4032 4033
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 已提交
4034
  }
4035
  console.info('Callback invoked to indicate that the active status of the device is obtained.');
4036 4037 4038
});
```

4039
### isCommunicationDeviceActive<sup>9+</sup>
4040

4041
isCommunicationDeviceActive(deviceType: CommunicationDeviceType): Promise&lt;boolean&gt;
4042

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

4045
**系统能力:** SystemCapability.Multimedia.Audio.Communication
4046

4047
**参数:**
4048

4049 4050 4051
| 参数名     | 类型                                                  | 必填 | 说明               |
| ---------- | ---------------------------------------------------- | ---- | ------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是   | 活跃音频设备类型。 |
4052

4053
**返回值:**
4054

4055 4056 4057
| Type                   | Description                     |
| ---------------------- | ------------------------------- |
| Promise&lt;boolean&gt; | Promise回调返回设备的激活状态。 |
4058

4059 4060
**示例:**

J
jiao_yanlin 已提交
4061
```js
4062 4063
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 已提交
4064
});
4065
```
J
jiao_yanlin 已提交
4066

4067
### selectOutputDevice<sup>9+</sup>
4068

4069
selectOutputDevice(outputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback&lt;void&gt;): void
4070

4071 4072 4073 4074 4075
选择音频输出设备,当前只能选择一个输出设备,使用callback方式异步返回结果。

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
4076 4077 4078

**参数:**

4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| 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,
4098
    displayName : "",
4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147
}];

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,
4148
    displayName : "",
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
}];

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 已提交
4183 4184
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199
    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,
4200
    displayName : "",
4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241
}];

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 已提交
4242 4243
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258
    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,
4259
    displayName : "",
4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270
}];

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}`);
  })
}
```

4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290
### 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,
4291
    rendererFlags : 0 }
4292 4293 4294 4295

async function getPreferOutputDevice() {
  audioRoutingManager.getPreferOutputDeviceForRendererInfo(rendererInfo, (err, desc) => {
    if (err) {
4296
      console.error(`Result ERROR: ${err}`);
4297
    } else {
4298
      console.info(`device descriptor: ${desc}`);
4299 4300 4301 4302 4303
    }
  });
}
```

4304
### getPreferOutputDeviceForRendererInfo<sup>10+</sup>
4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322
getPreferOutputDeviceForRendererInfo(rendererInfo: AudioRendererInfo): Promise&lt;AudioDeviceDescriptors&gt;

根据音频信息,返回优先级最高的输出设备,使用promise方式异步返回结果。

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

**参数:**

| 参数名                 | 类型                                                         | 必填 | 说明                      |
| ----------------------| ------------------------------------------------------------ | ---- | ------------------------- |
| rendererInfo          | [AudioRendererInfo](#audiorendererinfo8)                     | 是   | 表示渲染器信息。            |

**返回值:**

| 类型                  | 说明                         |
| --------------------- | --------------------------- |
| Promise&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt;   | Promise返回优先级最高的输出设备信息。 |

4323 4324 4325 4326 4327 4328 4329 4330
**错误码:**

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

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

4331 4332 4333 4334 4335 4336
**示例:**

```js
let rendererInfo = {
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4337
    rendererFlags : 0 }
4338 4339 4340

async function getPreferOutputDevice() {
  audioRoutingManager.getPreferOutputDeviceForRendererInfo(rendererInfo).then((desc) => {
4341
    console.info(`device descriptor: ${desc}`);
4342
  }).catch((err) => {
4343
    console.error(`Result ERROR: ${err}`);
4344 4345 4346 4347 4348 4349 4350 4351 4352 4353
  })
}
```

### on('preferOutputDeviceChangeForRendererInfo')<sup>10+</sup>

on(type: 'preferOutputDeviceChangeForRendererInfo', rendererInfo: AudioRendererInfo, callback: Callback<AudioDeviceDescriptors\>): void

订阅最高优先级输出设备变化事件,使用callback获取最高优先级输出设备。

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

4356 4357 4358 4359 4360 4361 4362 4363
**参数:**

| 参数名   | 类型                                                 | 必填 | 说明                                       |
| :------- | :--------------------------------------------------- | :--- | :----------------------------------------- |
| type     | string                                               | 是   | 订阅的事件的类型。支持事件:'preferOutputDeviceChangeForRendererInfo' |
| rendererInfo  | [AudioRendererInfo](#audiorendererinfo8)        | 是   | 表示渲染器信息。              |
| callback | Callback<[AudioDeviceDescriptors](#audiodevicedescriptors)\> | 是   | 获取优先级最高的输出设备信息。                         |

4364 4365 4366 4367 4368 4369 4370 4371
**错误码:**

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

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

4372 4373 4374 4375 4376 4377
**示例:**

```js
let rendererInfo = {
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4378
    rendererFlags : 0 }
4379 4380

audioRoutingManager.on('preferOutputDeviceChangeForRendererInfo', rendererInfo, (desc) => {
4381
  console.info(`device descriptor: ${desc}`);
4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399
});
```

### off('preferOutputDeviceChangeForRendererInfo')<sup>10+</sup>

off(type: 'preferOutputDeviceChangeForRendererInfo', callback?: Callback<AudioDeviceDescriptors\>): void

取消订阅最高优先级输出音频设备变化事件。

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

**参数:**

| 参数名   | 类型                                                | 必填 | 说明                                       |
| -------- | --------------------------------------------------- | ---- | ------------------------------------------ |
| type     | string                                              | 是   | 订阅的事件的类型。支持事件:'preferOutputDeviceChangeForRendererInfo' |
| callback | Callback<[AudioDeviceDescriptors](#audiodevicedescriptors)> | 否   | 监听方法的回调函数。                         |

4400 4401 4402 4403 4404 4405 4406 4407
**错误码:**

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

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

4408 4409 4410
**示例:**

```js
W
wangtao 已提交
4411
audioRoutingManager.off('preferOutputDeviceChangeForRendererInfo');
4412 4413
```

4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431
## 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/>此接口为系统接口。|
4432
| deviceDescriptors  | [AudioDeviceDescriptors](#audiodevicedescriptors)      | 是   | 否   | 音频设备描述。|
4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490

**示例:**

```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/>此接口为系统接口。|
4491
| deviceDescriptors  | [AudioDeviceDescriptors](#audiodevicedescriptors)      | 是   | 否   | 音频设备描述。|
4492 4493 4494 4495

**示例:**

```js
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
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 已提交
4525
  }
4526 4527 4528
});
```

4529 4530
## AudioEffectInfoArray<sup>10+</sup>

Q
update  
Qin Peng 已提交
4531
待查询ContentType和StreamUsage组合场景下的音效模式数组类型,[AudioEffectMode](#audioeffectmode10)数组,只读。
4532

4533
## AudioDeviceDescriptors
Z
zengyawen 已提交
4534

4535
设备属性数组类型,为[AudioDeviceDescriptor](#audiodevicedescriptor)的数组,只读。
M
mamingshuai 已提交
4536

4537
## AudioDeviceDescriptor
Z
zengyawen 已提交
4538

4539
描述音频设备。
Z
zengyawen 已提交
4540

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

4543 4544 4545 4546
| 名称                          | 类型                       | 可读 | 可写 | 说明       |
| ----------------------------- | -------------------------- | ---- | ---- | ---------- |
| deviceRole                    | [DeviceRole](#devicerole)  | 是   | 否   | 设备角色。 |
| deviceType                    | [DeviceType](#devicetype)  | 是   | 否   | 设备类型。 |
J
jiao_yanlin 已提交
4547
| id<sup>9+</sup>               | number                     | 是   | 否   | 设备id,唯一。  |
J
jiaoyanlin3 已提交
4548 4549
| name<sup>9+</sup>             | string                     | 是   | 否   | 设备名称。<br>如果是蓝牙设备,需要申请权限ohos.permission.USE_BLUETOOTH。 |
| address<sup>9+</sup>          | string                     | 是   | 否   | 设备地址。<br>如果是蓝牙设备,需要申请权限ohos.permission.USE_BLUETOOTH。 |
4550 4551 4552
| 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 已提交
4553
| displayName<sup>10+</sup>     | string                     | 是   | 否   | 设备显示名。 |
4554 4555 4556
| networkId<sup>9+</sup>        | string                     | 是   | 否   | 设备组网的ID。<br/>此接口为系统接口。 |
| interruptGroupId<sup>9+</sup> | number                     | 是   | 否   | 设备所处的焦点组ID。<br/>此接口为系统接口。 |
| volumeGroupId<sup>9+</sup>    | number                     | 是   | 否   | 设备所处的音量组ID。<br/>此接口为系统接口。 |
Z
zengyawen 已提交
4557

4558 4559 4560
**示例:**

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

4563 4564 4565
function displayDeviceProp(value) {
  deviceRoleValue = value.deviceRole;
  deviceTypeValue = value.deviceType;
4566
}
4567

4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580
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');
  }
});
```
4581

4582
## AudioRendererFilter<sup>9+</sup>
4583

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

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

4588 4589
| 名称          | 类型                                     | 必填 | 说明          |
| -------------| ---------------------------------------- | ---- | -------------- |
4590
| uid          | number                                   |  否  | 表示应用ID。<br> **系统能力:** SystemCapability.Multimedia.Audio.Core|
4591 4592
| rendererInfo | [AudioRendererInfo](#audiorendererinfo8) |  否  | 表示渲染器信息。<br> **系统能力:** SystemCapability.Multimedia.Audio.Renderer|
| rendererId   | number                                   |  否  | 音频流唯一id。<br> **系统能力:** SystemCapability.Multimedia.Audio.Renderer|
4593 4594 4595 4596

**示例:**

```js
4597 4598 4599 4600 4601 4602 4603
let outputAudioRendererFilter = {
  "uid":20010041,
  "rendererInfo": {
    "contentType":audio.ContentType.CONTENT_TYPE_MUSIC,
    "streamUsage":audio.StreamUsage.STREAM_USAGE_MEDIA,
    "rendererFlags":0 },
  "rendererId":0 };
4604 4605
```

4606
## AudioRenderer<sup>8+</sup>
Z
zengyawen 已提交
4607

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

4610
### 属性
Z
zengyawen 已提交
4611

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

4614 4615 4616
| 名称  | 类型                     | 可读 | 可写 | 说明               |
| ----- | -------------------------- | ---- | ---- | ------------------ |
| state<sup>8+</sup> | [AudioState](#audiostate8) | 是   | 否   | 音频渲染器的状态。 |
Z
zengyawen 已提交
4617 4618 4619

**示例:**

J
jiao_yanlin 已提交
4620
```js
4621
let state = audioRenderer.state;
Z
zengyawen 已提交
4622 4623
```

4624
### getRendererInfo<sup>8+</sup>
Z
zengyawen 已提交
4625

4626
getRendererInfo(callback: AsyncCallback<AudioRendererInfo\>): void
Z
zengyawen 已提交
4627

4628
获取当前被创建的音频渲染器的信息,使用callback方式异步返回结果。
Z
zengyawen 已提交
4629

4630
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4631 4632 4633

**参数:**

4634 4635 4636
| 参数名   | 类型                                                     | 必填 | 说明                   |
| :------- | :------------------------------------------------------- | :--- | :--------------------- |
| callback | AsyncCallback<[AudioRendererInfo](#audiorendererinfo8)\> | 是   | 返回音频渲染器的信息。 |
Z
zengyawen 已提交
4637 4638 4639

**示例:**

J
jiao_yanlin 已提交
4640
```js
4641 4642 4643 4644 4645
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 已提交
4646
});
Z
zengyawen 已提交
4647 4648
```

4649
### getRendererInfo<sup>8+</sup>
Z
zengyawen 已提交
4650

4651
getRendererInfo(): Promise<AudioRendererInfo\>
Z
zengyawen 已提交
4652

4653
获取当前被创建的音频渲染器的信息,使用Promise方式异步返回结果。
Z
zengyawen 已提交
4654

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

4657
**返回值:**
Z
zengyawen 已提交
4658

4659 4660 4661
| 类型                                               | 说明                            |
| -------------------------------------------------- | ------------------------------- |
| Promise<[AudioRendererInfo](#audiorendererinfo8)\> | Promise用于返回音频渲染器信息。 |
Z
zengyawen 已提交
4662 4663 4664

**示例:**

J
jiao_yanlin 已提交
4665
```js
4666 4667 4668 4669 4670 4671 4672 4673
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 已提交
4674 4675
```

4676
### getStreamInfo<sup>8+</sup>
Z
zengyawen 已提交
4677

4678
getStreamInfo(callback: AsyncCallback<AudioStreamInfo\>): void
Z
zengyawen 已提交
4679

4680
获取音频流信息,使用callback方式异步返回结果。
Z
zengyawen 已提交
4681

4682
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4683 4684 4685

**参数:**

4686 4687 4688
| 参数名   | 类型                                                 | 必填 | 说明                 |
| :------- | :--------------------------------------------------- | :--- | :------------------- |
| callback | AsyncCallback<[AudioStreamInfo](#audiostreaminfo8)\> | 是   | 回调返回音频流信息。 |
Z
zengyawen 已提交
4689 4690 4691

**示例:**

J
jiao_yanlin 已提交
4692
```js
4693 4694 4695 4696 4697 4698
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 已提交
4699
});
Z
zengyawen 已提交
4700 4701
```

4702
### getStreamInfo<sup>8+</sup>
Z
zengyawen 已提交
4703

4704
getStreamInfo(): Promise<AudioStreamInfo\>
Z
zengyawen 已提交
4705

4706
获取音频流信息,使用Promise方式异步返回结果。
Z
zengyawen 已提交
4707

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

4710 4711 4712 4713 4714
**返回值:**

| 类型                                           | 说明                   |
| :--------------------------------------------- | :--------------------- |
| Promise<[AudioStreamInfo](#audiostreaminfo8)\> | Promise返回音频流信息. |
Z
zengyawen 已提交
4715 4716 4717

**示例:**

J
jiao_yanlin 已提交
4718
```js
4719 4720 4721 4722 4723 4724 4725 4726 4727
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 已提交
4728 4729
```

4730
### getAudioStreamId<sup>9+</sup>
4731

4732
getAudioStreamId(callback: AsyncCallback<number\>): void
4733

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

4736
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
4737 4738 4739

**参数:**

4740 4741 4742
| 参数名   | 类型                                                 | 必填 | 说明                 |
| :------- | :--------------------------------------------------- | :--- | :------------------- |
| callback | AsyncCallback<number\> | 是   | 回调返回音频流id。 |
4743 4744 4745 4746

**示例:**

```js
4747 4748
audioRenderer.getAudioStreamId((err, streamid) => {
  console.info(`Renderer GetStreamId: ${streamid}`);
4749 4750 4751
});
```

4752
### getAudioStreamId<sup>9+</sup>
4753

4754
getAudioStreamId(): Promise<number\>
4755

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

4758
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
4759 4760 4761

**返回值:**

4762 4763 4764
| 类型                                           | 说明                   |
| :--------------------------------------------- | :--------------------- |
| Promise<number\> | Promise返回音频流id。 |
4765 4766 4767 4768

**示例:**

```js
4769 4770
audioRenderer.getAudioStreamId().then((streamid) => {
  console.info(`Renderer getAudioStreamId: ${streamid}`);
4771
}).catch((err) => {
4772
  console.error(`ERROR: ${err}`);
4773 4774 4775
});
```

Q
Qin Peng 已提交
4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787
### setAudioEffectMode<sup>10+</sup>

setAudioEffectMode(mode: AudioEffectMode, callback: AsyncCallback\<void>): void

设置当前音效模式。使用callback方式异步返回结果。

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

**参数:**

| 参数名   | 类型                                     | 必填 | 说明                     |
| -------- | ---------------------------------------- | ---- | ------------------------ |
Q
update  
Qin Peng 已提交
4788 4789
| mode     | [AudioEffectMode](#audioeffectmode10)    | 是   | 音效模式。               |
| callback | AsyncCallback\<void>                     | 是   | 用于返回执行结果的回调。  |
Q
Qin Peng 已提交
4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814

**示例:**

```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 已提交
4815
| mode   | [AudioEffectMode](#audioeffectmode10)   | 是   | 音效模式。 |
Q
Qin Peng 已提交
4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850

**返回值:**

| 类型           | 说明                      |
| -------------- | ------------------------- |
| 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 已提交
4851 4852 4853 4854 4855
  if (err) {
    console.error('Failed to get params');
  } else {
    console.info(`getAudioEffectMode: ${effectmode}`);
  }
Q
Qin Peng 已提交
4856 4857 4858
});
```

Q
update  
Qin Peng 已提交
4859
### getAudioEffectMode<sup>10+</sup>
Q
Qin Peng 已提交
4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882

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}`);
});
```

4883
### start<sup>8+</sup>
Z
zengyawen 已提交
4884

4885
start(callback: AsyncCallback<void\>): void
Z
zengyawen 已提交
4886

4887
启动音频渲染器。使用callback方式异步返回结果。
Z
zengyawen 已提交
4888

4889
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4890 4891 4892

**参数:**

4893 4894 4895
| 参数名   | 类型                 | 必填 | 说明       |
| -------- | -------------------- | ---- | ---------- |
| callback | AsyncCallback\<void> | 是   | 回调函数。 |
Z
zengyawen 已提交
4896 4897 4898

**示例:**

J
jiao_yanlin 已提交
4899
```js
4900
audioRenderer.start((err) => {
J
jiao_yanlin 已提交
4901
  if (err) {
4902
    console.error('Renderer start failed.');
J
jiao_yanlin 已提交
4903
  } else {
4904
    console.info('Renderer start success.');
J
jiao_yanlin 已提交
4905
  }
L
lwx1059628 已提交
4906
});
Z
zengyawen 已提交
4907 4908
```

4909
### start<sup>8+</sup>
Z
zengyawen 已提交
4910

4911
start(): Promise<void\>
Z
zengyawen 已提交
4912

4913
启动音频渲染器。使用Promise方式异步返回结果。
Z
zengyawen 已提交
4914

4915
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4916 4917 4918

**返回值:**

4919 4920 4921
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
4922 4923 4924

**示例:**

J
jiao_yanlin 已提交
4925
```js
4926 4927
audioRenderer.start().then(() => {
  console.info('Renderer started');
L
lwx1059628 已提交
4928
}).catch((err) => {
4929
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
4930
});
Z
zengyawen 已提交
4931 4932
```

4933
### pause<sup>8+</sup>
Z
zengyawen 已提交
4934

4935
pause(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
4936

4937
暂停渲染。使用callback方式异步返回结果。
Z
zengyawen 已提交
4938

4939
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4940 4941 4942

**参数:**

4943 4944 4945
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
4946 4947 4948

**示例:**

J
jiao_yanlin 已提交
4949
```js
4950 4951 4952 4953 4954 4955
audioRenderer.pause((err) => {
  if (err) {
    console.error('Renderer pause failed');
  } else {
    console.info('Renderer paused.');
  }
L
lwx1059628 已提交
4956
});
Z
zengyawen 已提交
4957 4958
```

4959
### pause<sup>8+</sup>
Z
zengyawen 已提交
4960

4961
pause(): Promise\<void>
Z
zengyawen 已提交
4962

4963
暂停渲染。使用Promise方式异步返回结果。
Z
zengyawen 已提交
4964

4965
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4966 4967 4968

**返回值:**

4969 4970 4971
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
4972 4973 4974

**示例:**

J
jiao_yanlin 已提交
4975
```js
4976 4977
audioRenderer.pause().then(() => {
  console.info('Renderer paused');
L
lwx1059628 已提交
4978
}).catch((err) => {
4979
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
4980
});
Z
zengyawen 已提交
4981 4982
```

4983
### drain<sup>8+</sup>
Z
zengyawen 已提交
4984

4985
drain(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
4986

4987
检查缓冲区是否已被耗尽。使用callback方式异步返回结果。
Z
zengyawen 已提交
4988

4989
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4990 4991 4992

**参数:**

4993 4994 4995
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
4996 4997 4998

**示例:**

J
jiao_yanlin 已提交
4999
```js
5000
audioRenderer.drain((err) => {
J
jiao_yanlin 已提交
5001
  if (err) {
5002
    console.error('Renderer drain failed');
J
jiao_yanlin 已提交
5003
  } else {
5004
    console.info('Renderer drained.');
J
jiao_yanlin 已提交
5005
  }
L
lwx1059628 已提交
5006
});
Z
zengyawen 已提交
5007 5008
```

5009
### drain<sup>8+</sup>
Z
zengyawen 已提交
5010

5011
drain(): Promise\<void>
Z
zengyawen 已提交
5012

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

5015
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5016 5017 5018

**返回值:**

5019 5020 5021
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
5022 5023 5024

**示例:**

J
jiao_yanlin 已提交
5025
```js
5026 5027
audioRenderer.drain().then(() => {
  console.info('Renderer drained successfully');
L
lwx1059628 已提交
5028
}).catch((err) => {
5029
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5030
});
Z
zengyawen 已提交
5031 5032 5033 5034
```

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

5035
stop(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5036

5037
停止渲染。使用callback方式异步返回结果。
Z
zengyawen 已提交
5038

5039
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5040 5041 5042

**参数:**

5043 5044 5045
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
5046 5047 5048

**示例:**

J
jiao_yanlin 已提交
5049
```js
5050
audioRenderer.stop((err) => {
J
jiao_yanlin 已提交
5051
  if (err) {
5052
    console.error('Renderer stop failed');
J
jiao_yanlin 已提交
5053
  } else {
5054
    console.info('Renderer stopped.');
J
jiao_yanlin 已提交
5055
  }
L
lwx1059628 已提交
5056
});
Z
zengyawen 已提交
5057 5058 5059 5060
```

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

5061
stop(): Promise\<void>
Z
zengyawen 已提交
5062

5063
停止渲染。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5064

5065
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5066 5067 5068

**返回值:**

5069 5070 5071
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
5072

5073 5074 5075 5076 5077
**示例:**

```js
audioRenderer.stop().then(() => {
  console.info('Renderer stopped successfully');
L
lwx1059628 已提交
5078
}).catch((err) => {
5079
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5080
});
Z
zengyawen 已提交
5081 5082 5083 5084
```

### release<sup>8+</sup>

5085
release(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5086

5087
释放音频渲染器。使用callback方式异步返回结果。
Z
zengyawen 已提交
5088

5089
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5090 5091 5092

**参数:**

5093 5094 5095
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
5096 5097 5098

**示例:**

J
jiao_yanlin 已提交
5099
```js
5100
audioRenderer.release((err) => {
J
jiao_yanlin 已提交
5101
  if (err) {
5102
    console.error('Renderer release failed');
J
jiao_yanlin 已提交
5103
  } else {
5104
    console.info('Renderer released.');
J
jiao_yanlin 已提交
5105
  }
L
lwx1059628 已提交
5106
});
Z
zengyawen 已提交
5107 5108 5109 5110
```

### release<sup>8+</sup>

5111
release(): Promise\<void>
Z
zengyawen 已提交
5112

5113
释放渲染器。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5114

5115
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5116 5117 5118

**返回值:**

5119 5120 5121
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
5122 5123 5124

**示例:**

J
jiao_yanlin 已提交
5125
```js
5126 5127
audioRenderer.release().then(() => {
  console.info('Renderer released successfully');
L
lwx1059628 已提交
5128
}).catch((err) => {
5129
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5130
});
Z
zengyawen 已提交
5131 5132
```

5133
### write<sup>8+</sup>
Z
zengyawen 已提交
5134

5135
write(buffer: ArrayBuffer, callback: AsyncCallback\<number>): void
Z
zengyawen 已提交
5136

5137
写入缓冲区。使用callback方式异步返回结果。
Z
zengyawen 已提交
5138

5139
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5140 5141 5142

**参数:**

5143 5144 5145 5146
| 参数名   | 类型                   | 必填 | 说明                                                |
| -------- | ---------------------- | ---- | --------------------------------------------------- |
| buffer   | ArrayBuffer            | 是   | 要写入缓冲区的数据。                                |
| callback | AsyncCallback\<number> | 是   | 回调如果成功,返回写入的字节数,否则返回errorcode。 |
Z
zengyawen 已提交
5147 5148 5149

**示例:**

J
jiao_yanlin 已提交
5150
```js
J
jiao_yanlin 已提交
5151
let bufferSize;
5152 5153
audioRenderer.getBufferSize().then((data)=> {
  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
J
jiao_yanlin 已提交
5154 5155
  bufferSize = data;
  }).catch((err) => {
5156
  console.error(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
J
jiao_yanlin 已提交
5157
  });
5158 5159 5160 5161 5162 5163 5164
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';
5165
let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY);
5166 5167 5168 5169
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++) {
5170
    let options = {
J
jiao_yanlin 已提交
5171 5172
      offset: i * bufferSize,
      length: bufferSize
5173 5174 5175
    }
    let readsize = await fs.read(file.fd, buf, options)
    let writeSize = await new Promise((resolve,reject)=>{
J
jiao_yanlin 已提交
5176
      audioRenderer.write(buf,(err,writeSize)=>{
5177 5178 5179 5180 5181 5182 5183
        if(err){
          reject(err)
        }else{
          resolve(writeSize)
        }
      })
    })	  
5184 5185 5186
  }
});

5187

Z
zengyawen 已提交
5188 5189
```

5190
### write<sup>8+</sup>
Z
zengyawen 已提交
5191

5192
write(buffer: ArrayBuffer): Promise\<number>
5193

5194
写入缓冲区。使用Promise方式异步返回结果。
5195

5196
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5197 5198 5199

**返回值:**

5200 5201 5202
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
| Promise\<number> | Promise返回结果,如果成功,返回写入的字节数,否则返回errorcode。 |
Z
zengyawen 已提交
5203 5204 5205

**示例:**

J
jiao_yanlin 已提交
5206
```js
J
jiao_yanlin 已提交
5207
let bufferSize;
5208 5209
audioRenderer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
J
jiao_yanlin 已提交
5210 5211
  bufferSize = data;
  }).catch((err) => {
5212
  console.info(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
J
jiao_yanlin 已提交
5213
  });
5214 5215 5216 5217 5218 5219 5220
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';
5221
let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY);
5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237
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 已提交
5238 5239 5240 5241
```

### getAudioTime<sup>8+</sup>

5242
getAudioTime(callback: AsyncCallback\<number>): void
Z
zengyawen 已提交
5243

5244
获取时间戳(从 1970 年 1 月 1 日开始)。使用callback方式异步返回结果。
Z
zengyawen 已提交
5245

5246
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5247 5248 5249

**参数:**

5250 5251 5252
| 参数名   | 类型                   | 必填 | 说明             |
| -------- | ---------------------- | ---- | ---------------- |
| callback | AsyncCallback\<number> | 是   | 回调返回时间戳。 |
Z
zengyawen 已提交
5253 5254 5255

**示例:**

J
jiao_yanlin 已提交
5256
```js
5257
audioRenderer.getAudioTime((err, timestamp) => {
5258
  console.info(`Current timestamp: ${timestamp}`);
L
lwx1059628 已提交
5259
});
Z
zengyawen 已提交
5260 5261 5262 5263
```

### getAudioTime<sup>8+</sup>

5264
getAudioTime(): Promise\<number>
Z
zengyawen 已提交
5265

5266
获取时间戳(从 1970 年 1 月 1 日开始)。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5267

5268
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5269 5270 5271

**返回值:**

5272 5273 5274
| 类型             | 描述                    |
| ---------------- | ----------------------- |
| Promise\<number> | Promise回调返回时间戳。 |
Z
zengyawen 已提交
5275 5276 5277

**示例:**

J
jiao_yanlin 已提交
5278
```js
5279 5280
audioRenderer.getAudioTime().then((timestamp) => {
  console.info(`Current timestamp: ${timestamp}`);
L
lwx1059628 已提交
5281
}).catch((err) => {
5282
  console.error(`ERROR: ${err}`);
5283 5284 5285 5286 5287
});
```

### getBufferSize<sup>8+</sup>

5288
getBufferSize(callback: AsyncCallback\<number>): void
5289

5290
获取音频渲染器的最小缓冲区大小。使用callback方式异步返回结果。
5291

5292
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
5293 5294 5295

**参数:**

5296 5297 5298
| 参数名   | 类型                   | 必填 | 说明                 |
| -------- | ---------------------- | ---- | -------------------- |
| callback | AsyncCallback\<number> | 是   | 回调返回缓冲区大小。 |
5299 5300 5301 5302

**示例:**

```js
5303 5304 5305
let bufferSize = audioRenderer.getBufferSize(async(err, bufferSize) => {
  if (err) {
    console.error('getBufferSize error');
5306 5307 5308 5309 5310 5311
  }
});
```

### getBufferSize<sup>8+</sup>

5312
getBufferSize(): Promise\<number>
5313

5314
获取音频渲染器的最小缓冲区大小。使用Promise方式异步返回结果。
5315

5316
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
5317 5318 5319

**返回值:**

5320 5321 5322
| 类型             | 说明                        |
| ---------------- | --------------------------- |
| Promise\<number> | promise回调返回缓冲区大小。 |
5323 5324 5325 5326 5327

**示例:**

```js
let bufferSize;
5328 5329
audioRenderer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
5330 5331
  bufferSize = data;
}).catch((err) => {
5332
  console.error(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
L
lwx1059628 已提交
5333
});
Z
zengyawen 已提交
5334 5335
```

5336
### setRenderRate<sup>8+</sup>
Z
zengyawen 已提交
5337

5338
setRenderRate(rate: AudioRendererRate, callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5339

5340
设置音频渲染速率。使用callback方式异步返回结果。
Z
zengyawen 已提交
5341

5342
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5343 5344 5345

**参数:**

5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381
| 参数名   | 类型                                     | 必填 | 说明                     |
| -------- | ---------------------------------------- | ---- | ------------------------ |
| 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 已提交
5382 5383 5384

**示例:**

J
jiao_yanlin 已提交
5385
```js
5386 5387 5388 5389
audioRenderer.setRenderRate(audio.AudioRendererRate.RENDER_RATE_NORMAL).then(() => {
  console.info('setRenderRate SUCCESS');
}).catch((err) => {
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5390
});
Z
zengyawen 已提交
5391 5392
```

5393
### getRenderRate<sup>8+</sup>
Z
zengyawen 已提交
5394

5395
getRenderRate(callback: AsyncCallback\<AudioRendererRate>): void
Z
zengyawen 已提交
5396

5397
获取当前渲染速率。使用callback方式异步返回结果。
Z
zengyawen 已提交
5398

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

5401
**参数:**
Z
zengyawen 已提交
5402

5403 5404 5405
| 参数名   | 类型                                                    | 必填 | 说明               |
| -------- | ------------------------------------------------------- | ---- | ------------------ |
| callback | AsyncCallback<[AudioRendererRate](#audiorendererrate8)> | 是   | 回调返回渲染速率。 |
Z
zengyawen 已提交
5406 5407 5408

**示例:**

J
jiao_yanlin 已提交
5409
```js
5410 5411 5412
audioRenderer.getRenderRate((err, renderrate) => {
  console.info(`getRenderRate: ${renderrate}`);
});
Z
zengyawen 已提交
5413 5414
```

5415
### getRenderRate<sup>8+</sup>
Z
zengyawen 已提交
5416

5417
getRenderRate(): Promise\<AudioRendererRate>
Z
zengyawen 已提交
5418

5419
获取当前渲染速率。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5420

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

5423
**返回值:**
Z
zengyawen 已提交
5424

5425 5426 5427
| 类型                                              | 说明                      |
| ------------------------------------------------- | ------------------------- |
| Promise<[AudioRendererRate](#audiorendererrate8)> | Promise回调返回渲染速率。 |
Z
zengyawen 已提交
5428 5429 5430

**示例:**

J
jiao_yanlin 已提交
5431
```js
5432 5433 5434 5435
audioRenderer.getRenderRate().then((renderRate) => {
  console.info(`getRenderRate: ${renderRate}`);
}).catch((err) => {
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5436
});
Z
zengyawen 已提交
5437
```
5438
### setInterruptMode<sup>9+</sup>
Z
zengyawen 已提交
5439

5440
setInterruptMode(mode: InterruptMode): Promise&lt;void&gt;
Z
zengyawen 已提交
5441

5442
设置应用的焦点模型。使用Promise异步回调。
Z
zengyawen 已提交
5443

5444
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
Z
zengyawen 已提交
5445 5446 5447

**参数:**

5448 5449 5450 5451 5452 5453 5454 5455 5456
| 参数名     | 类型                                | 必填   | 说明        |
| ---------- | ---------------------------------- | ------ | ---------- |
| mode       | [InterruptMode](#interruptmode9)    | 是     | 焦点模型。  |

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | 以Promise对象返回结果,设置成功时返回undefined,否则返回error。 |
Z
zengyawen 已提交
5457 5458 5459

**示例:**

J
jiao_yanlin 已提交
5460
```js
5461 5462 5463 5464 5465 5466
let mode = 0;
audioRenderer.setInterruptMode(mode).then(data=>{
  console.info('setInterruptMode Success!');
}).catch((err) => {
  console.error(`setInterruptMode Fail: ${err}`);
});
Z
zengyawen 已提交
5467
```
5468
### setInterruptMode<sup>9+</sup>
Z
zengyawen 已提交
5469

5470
setInterruptMode(mode: InterruptMode, callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5471

5472
设置应用的焦点模型。使用Callback回调返回执行结果。
Z
zengyawen 已提交
5473

5474
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
Z
zengyawen 已提交
5475 5476 5477

**参数:**

5478 5479 5480 5481
| 参数名   | 类型                                | 必填   | 说明            |
| ------- | ----------------------------------- | ------ | -------------- |
|mode     | [InterruptMode](#interruptmode9)     | 是     | 焦点模型。|
|callback | AsyncCallback\<void>                 | 是     |回调返回执行结果。|
Z
zengyawen 已提交
5482 5483 5484

**示例:**

J
jiao_yanlin 已提交
5485
```js
5486 5487 5488 5489
let mode = 1;
audioRenderer.setInterruptMode(mode, (err, data)=>{
  if(err){
    console.error(`setInterruptMode Fail: ${err}`);
5490
  }
5491
  console.info('setInterruptMode Success!');
L
lwx1059628 已提交
5492
});
Z
zengyawen 已提交
5493 5494
```

5495
### setVolume<sup>9+</sup>
Z
zengyawen 已提交
5496

5497
setVolume(volume: number): Promise&lt;void&gt;
Z
zengyawen 已提交
5498

5499
设置应用的音量。使用Promise异步回调。
5500

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

5503
**参数:**
Z
zengyawen 已提交
5504

5505 5506 5507
| 参数名     | 类型    | 必填   | 说明                 |
| ---------- | ------- | ------ | ------------------- |
| volume     | number  | 是     | 音量值范围为0.0-1.0。 |
Z
zengyawen 已提交
5508

5509
**返回值:**
5510

5511 5512 5513
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | 以Promise对象返回结果,设置成功时返回undefined,否则返回error。 |
5514

5515
**示例:**
5516

5517
```js
5518
audioRenderer.setVolume(0.5).then(data=>{
5519 5520 5521 5522 5523 5524
  console.info('setVolume Success!');
}).catch((err) => {
  console.error(`setVolume Fail: ${err}`);
});
```
### setVolume<sup>9+</sup>
5525

5526
setVolume(volume: number, callback: AsyncCallback\<void>): void
5527

5528
设置应用的音量。使用Callback回调返回执行结果。
5529

5530
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
5531 5532 5533

**参数:**

5534 5535 5536
| 参数名  | 类型       | 必填   | 说明                 |
| ------- | -----------| ------ | ------------------- |
|volume   | number     | 是     | 音量值范围为0.0-1.0。 |
5537
|callback | AsyncCallback\<void> | 是     |回调返回执行结果。|
Z
zengyawen 已提交
5538 5539 5540

**示例:**

J
jiao_yanlin 已提交
5541
```js
5542
audioRenderer.setVolume(0.5, (err, data)=>{
5543 5544
  if(err){
    console.error(`setVolume Fail: ${err}`);
5545
  }
5546
  console.info('setVolume Success!');
L
lwx1059628 已提交
5547
});
Z
zengyawen 已提交
5548
```
5549

W
wangzx0705 已提交
5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561
### getMinStreamVolume<sup>10+</sup>

getMinStreamVolume(callback: AsyncCallback&lt;number&gt;): void

获取应用基于音频流的最小音量。使用Callback回调返回。

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

**参数:**

| 参数名  | 类型       | 必填   | 说明                 |
| ------- | -----------| ------ | ------------------- |
W
wangzx0705 已提交
5562
|callback |AsyncCallback&lt;number&gt; | 是     |Callback回调返回音频流最小音量(音量范围0-1)。|
W
wangzx0705 已提交
5563 5564 5565 5566

**示例:**

```js
W
wangzx0705 已提交
5567
audioRenderer.getMinStreamVolume((err, minVolume) => {
W
wangzx0705 已提交
5568 5569 5570 5571
  if (err) {
    console.error(`getMinStreamVolume error: ${err}`);
  } else {
    console.info(`getMinStreamVolume Success! ${minVolume}`);
W
wangzx0705 已提交
5572 5573 5574 5575 5576 5577 5578
  }
});
```
### getMinStreamVolume<sup>10+</sup>

getMinStreamVolume(): Promise&lt;number&gt;

W
wangzx0705 已提交
5579
获取应用基于音频流的最小音量。使用Promise异步回调。
W
wangzx0705 已提交
5580 5581 5582 5583 5584 5585 5586

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
W
wangzx0705 已提交
5587
| Promise&lt;number&gt;| Promise回调返回音频流最小音量(音量范围0-1)。|
W
wangzx0705 已提交
5588 5589 5590 5591

**示例:**

```js
W
wangzx0705 已提交
5592
audioRenderer.getMinStreamVolume().then((value) => {
W
wangzx0705 已提交
5593
  console.info(`Get min stream volume Success! ${value}`);
W
wangzx0705 已提交
5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610
}).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 已提交
5611
|callback | AsyncCallback&lt;number&gt; | 是     |Callback回调返回音频流最大音量(音量范围0-1)。|
W
wangzx0705 已提交
5612 5613 5614 5615

**示例:**

```js
W
wangzx0705 已提交
5616
audioRenderer.getMaxStreamVolume((err, maxVolume) => {
W
wangzx0705 已提交
5617 5618 5619 5620
  if (err) {
    console.error(`getMaxStreamVolume Fail: ${err}`);
  } else {
    console.info(`getMaxStreamVolume Success! ${maxVolume}`);
W
wangzx0705 已提交
5621 5622 5623 5624 5625 5626 5627
  }
});
```
### getMaxStreamVolume<sup>10+</sup>

getMaxStreamVolume(): Promise&lt;number&gt;

W
wangzx0705 已提交
5628
获取应用基于音频流的最大音量。使用Promise异步回调。
W
wangzx0705 已提交
5629 5630 5631 5632 5633 5634 5635

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
W
wangzx0705 已提交
5636
| Promise&lt;number&gt;| Promise回调返回音频流最大音量(音量范围0-1)。|
W
wangzx0705 已提交
5637 5638 5639 5640

**示例:**

```js
W
wangzx0705 已提交
5641
audioRenderer.getMaxStreamVolume().then((value) => {
W
wangzx0705 已提交
5642
  console.info(`Get max stream volume Success! ${value}`);
W
wangzx0705 已提交
5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664
}).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 已提交
5665
audioRenderer.getUnderflowCount((err, underflowCount) => {
W
wangzx0705 已提交
5666 5667 5668 5669
  if (err) {
    console.error(`getUnderflowCount Fail: ${err}`);
  } else {
    console.info(`getUnderflowCount Success! ${underflowCount}`);
W
wangzx0705 已提交
5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689
  }
});
```
### getUnderflowCount<sup>10+</sup>

getUnderflowCount(): Promise&lt;number&gt;

获取当前播放音频流的欠载音频帧数量。使用Promise异步回调。

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;number&gt;| Promise回调返回音频流的欠载音频帧数量。|

**示例:**

```js
W
wangzx0705 已提交
5690
audioRenderer.getUnderflowCount().then((value) => {
W
wangzx0705 已提交
5691
  console.info(`Get underflow count Success! ${value}`);
W
wangzx0705 已提交
5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713
}).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 已提交
5714
audioRenderer.getCurrentOutputDevices((err, deviceInfo) => {
W
wangzx0705 已提交
5715
  if (err) {
W
wangzx0705 已提交
5716
    console.error(`getCurrentOutputDevices Fail: ${err}`);
W
wangzx0705 已提交
5717
  } else {
W
wangzx0705 已提交
5718 5719 5720 5721 5722 5723 5724 5725
    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 已提交
5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740
  }
});
```
### getCurrentOutputDevices<sup>10+</sup>

getCurrentOutputDevices(): Promise&lt;AudioDeviceDescriptors&gt;

获取音频流输出设备描述符。使用Promise异步回调。

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
W
wangzx0705 已提交
5741
| Promise&lt;AudioDeviceDescriptors&gt;| Promise回调返回音频流的输出设备描述信息 |
W
wangzx0705 已提交
5742 5743 5744 5745

**示例:**

```js
W
wangzx0705 已提交
5746
audioRenderer.getCurrentOutputDevices().then((deviceInfo) => {
W
wangzx0705 已提交
5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759
  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}`);
});
```

5760
### on('audioInterrupt')<sup>9+</sup>
5761

5762
on(type: 'audioInterrupt', callback: Callback\<InterruptEvent>): void
5763

5764
监听音频中断事件。使用callback获取中断事件。
5765

J
jiaoyanlin3 已提交
5766
[on('interrupt')](#oninterrupt)一致,均用于监听焦点变化。AudioRenderer对象在start事件发生时会主动获取焦点,在pause、stop等事件发生时会主动释放焦点,不需要开发者主动发起获取焦点或释放焦点的申请。
5767

5768
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
5769 5770 5771

**参数:**

5772 5773
| 参数名   | 类型                                         | 必填 | 说明                                                         |
| -------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
5774 5775
| type     | string                                       | 是   | 事件回调类型,支持的事件为:'audioInterrupt'(中断事件被触发,音频渲染被中断。) |
| callback | Callback\<[InterruptEvent](#interruptevent9)\> | 是   | 被监听的中断事件的回调。                                     |
5776

5777
**错误码:**
5778

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

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

**示例:**
Z
zengyawen 已提交
5786

J
jiao_yanlin 已提交
5787
```js
5788 5789
let isPlaying; // 标识符,表示是否正在渲染
let isDucked; // 标识符,表示是否被降低音量
5790 5791 5792 5793 5794
onAudioInterrupt();

async function onAudioInterrupt(){
  audioRenderer.on('audioInterrupt', async(interruptEvent) => {
    if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_FORCE) {
5795
      // 由系统进行操作,强制打断音频渲染,应用需更新自身状态及显示内容等
5796 5797
      switch (interruptEvent.hintType) {
        case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
5798 5799 5800
          // 音频流已被暂停,临时失去焦点,待可重获焦点时会收到resume对应的interruptEvent
          console.info('Force paused. Update playing status and stop writing');
          isPlaying = false; // 简化处理,代表应用切换至暂停状态的若干操作
5801 5802
          break;
        case audio.InterruptHint.INTERRUPT_HINT_STOP:
5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818
          // 音频流已被停止,永久失去焦点,若想恢复渲染,需用户主动触发
          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');
5819 5820 5821
          break;
      }
    } else if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_SHARE) {
5822
      // 由应用进行操作,应用可以自主选择打断或忽略
5823 5824
      switch (interruptEvent.hintType) {
        case audio.InterruptHint.INTERRUPT_HINT_RESUME:
5825
          // 建议应用继续渲染(说明音频流此前被强制暂停,临时失去焦点,现在可以恢复渲染)
5826
          console.info('Resume force paused renderer or ignore');
5827
          // 若选择继续渲染,需在此处主动执行开始渲染的若干操作
5828 5829
          break;
        case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
5830
          // 建议应用暂停渲染
5831
          console.info('Choose to pause or ignore');
5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849
          // 若选择暂停渲染,需在此处主动执行暂停渲染的若干操作
          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:
5850 5851 5852 5853 5854
          break;
      }
   }
  });
}
Z
zhujie81 已提交
5855 5856
```

5857
### on('markReach')<sup>8+</sup>
Z
zhujie81 已提交
5858

5859
on(type: "markReach", frame: number, callback: Callback&lt;number&gt;): void
5860

5861
订阅到达标记的事件。 当渲染的帧数达到 frame 参数的值时,回调被调用。
5862

5863
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zhujie81 已提交
5864 5865

**参数:**
5866

5867 5868 5869 5870 5871
| 参数名   | 类型                     | 必填 | 说明                                      |
| :------- | :----------------------- | :--- | :---------------------------------------- |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'markReach'。 |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于 0。         |
| callback | Callback\<number>         | 是   | 触发事件时调用的回调。                    |
Z
zengyawen 已提交
5872

Z
zhujie81 已提交
5873 5874
**示例:**

J
jiao_yanlin 已提交
5875
```js
5876 5877 5878
audioRenderer.on('markReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
J
jiao_yanlin 已提交
5879
  }
5880
});
5881
```
Z
zengyawen 已提交
5882

5883

5884
### off('markReach') <sup>8+</sup>
5885

5886
off(type: 'markReach'): void
5887

5888
取消订阅标记事件。
5889

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

5892
**参数:**
5893

5894 5895 5896
| 参数名 | 类型   | 必填 | 说明                                              |
| :----- | :----- | :--- | :------------------------------------------------ |
| type   | string | 是   | 要取消订阅事件的类型。支持的事件为:'markReach'。 |
5897 5898 5899 5900

**示例:**

```js
5901
audioRenderer.off('markReach');
5902 5903
```

5904
### on('periodReach') <sup>8+</sup>
Z
zengyawen 已提交
5905

5906
on(type: "periodReach", frame: number, callback: Callback&lt;number&gt;): void
5907

5908
订阅到达标记的事件。 当渲染的帧数达到 frame 参数的值时,触发回调并返回设定的值。
5909

5910
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5911 5912 5913

**参数:**

5914 5915 5916 5917 5918
| 参数名   | 类型                     | 必填 | 说明                                        |
| :------- | :----------------------- | :--- | :------------------------------------------ |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'periodReach'。 |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于 0。           |
| callback | Callback\<number>         | 是   | 触发事件时调用的回调。                      |
5919 5920 5921 5922

**示例:**

```js
5923 5924 5925
audioRenderer.on('periodReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
5926 5927 5928 5929
  }
});
```

5930
### off('periodReach') <sup>8+</sup>
5931

5932
off(type: 'periodReach'): void
Z
zengyawen 已提交
5933

5934
取消订阅标记事件。
5935

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

5938
**参数:**
5939

5940 5941 5942
| 参数名 | 类型   | 必填 | 说明                                                |
| :----- | :----- | :--- | :-------------------------------------------------- |
| type   | string | 是   | 要取消订阅事件的类型。支持的事件为:'periodReach'。 |
5943

Z
zengyawen 已提交
5944 5945
**示例:**

J
jiao_yanlin 已提交
5946
```js
5947
audioRenderer.off('periodReach')
Z
zengyawen 已提交
5948 5949
```

5950
### on('stateChange') <sup>8+</sup>
L
lwx1059628 已提交
5951

5952
on(type: 'stateChange', callback: Callback<AudioState\>): void
L
lwx1059628 已提交
5953

5954
订阅监听状态变化。
5955

5956
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
L
lwx1059628 已提交
5957 5958 5959

**参数:**

5960 5961 5962 5963
| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'stateChange'。 |
| callback | Callback\<[AudioState](#audiostate8)> | 是   | 返回监听的状态。                            |
L
lwx1059628 已提交
5964 5965 5966

**示例:**

J
jiao_yanlin 已提交
5967
```js
5968 5969 5970 5971 5972 5973
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 已提交
5974
  }
L
lwx1059628 已提交
5975 5976 5977
});
```

W
wangzx0705 已提交
5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990
### on('outputDeviceChange') <sup>10+</sup>

on(type: 'outputDeviceChange', callback: Callback<AudioDeviceDescriptors\>): void

订阅监听音频输出设备变化。

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

**参数:**

| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'outputDeviceChange'。 |
W
wangzx0705 已提交
5991
| callback | Callback\<[AudioDeviceDescriptors](#audiodevicedescriptors)> | 是   | 返回监听的音频设备变化。                            |
W
wangzx0705 已提交
5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002

**错误码:**

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

**示例:**

```js
audioRenderer.on('outputDeviceChange', (deviceChangeInfo) => {
W
wangzx0705 已提交
6003
  if (err) {
W
wangzx0705 已提交
6004 6005 6006 6007
    console.error(`Subscribes output device change event callback Fail: ${err}`);
  } else {
    console.info(`Subscribes output device change event callback Success!`);
  }
W
wangzx0705 已提交
6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022
});
```
### off('outputDeviceChange') <sup>10+</sup>

off(type: 'outputDeviceChange', callback?: Callback<AudioDeviceDescriptors\>): void

取消订阅监听音频输出设备变化。

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

**参数:**

| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'outputDeviceChange'。 |
W
wangzx0705 已提交
6023
| callback | Callback\<[AudioDeviceDescriptors](#audiodevicedescriptors)> | 是   | 取消监听的音频设备变化。                            |
W
wangzx0705 已提交
6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034

**错误码:**

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

**示例:**

```js
audioRenderer.off('outputDeviceChange', (deviceChangeInfo) => {
W
wangzx0705 已提交
6035
  if (err) {
W
wangzx0705 已提交
6036 6037 6038 6039
    console.error(`Unsubscribes output device change event callback Fail: ${err}`);
  } else {
    console.info(`Unsubscribes output device change event callback Success!`);
  }
W
wangzx0705 已提交
6040 6041 6042
});
```

6043
## AudioCapturer<sup>8+</sup>
L
lwx1059628 已提交
6044

6045
提供音频采集的相关接口。在调用AudioCapturer的接口前,需要先通过[createAudioCapturer](#audiocreateaudiocapturer8)创建实例。
6046

6047
### 属性
L
lwx1059628 已提交
6048

6049
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6050

6051 6052 6053
| 名称  | 类型                     | 可读 | 可写 | 说明             |
| :---- | :------------------------- | :--- | :--- | :--------------- |
| state<sup>8+</sup>  | [AudioState](#audiostate8) | 是 | 否   | 音频采集器状态。 |
L
lwx1059628 已提交
6054 6055 6056

**示例:**

J
jiao_yanlin 已提交
6057
```js
6058
let state = audioCapturer.state;
L
lwx1059628 已提交
6059 6060
```

6061
### getCapturerInfo<sup>8+</sup>
6062

6063
getCapturerInfo(callback: AsyncCallback<AudioCapturerInfo\>): void
6064

6065
获取采集器信息。使用callback方式异步返回结果。
6066

6067
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6068 6069 6070

**参数:**

6071 6072 6073
| 参数名   | 类型                              | 必填 | 说明                                 |
| :------- | :-------------------------------- | :--- | :----------------------------------- |
| callback | AsyncCallback<AudioCapturerInfo\> | 是   | 使用callback方式异步返回采集器信息。 |
L
lwx1059628 已提交
6074 6075 6076

**示例:**

J
jiao_yanlin 已提交
6077
```js
6078
audioCapturer.getCapturerInfo((err, capturerInfo) => {
6079
  if (err) {
6080 6081 6082 6083 6084
    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 已提交
6085
  }
L
lwx1059628 已提交
6086 6087 6088
});
```

6089

6090
### getCapturerInfo<sup>8+</sup>
6091

6092
getCapturerInfo(): Promise<AudioCapturerInfo\>
6093

6094
获取采集器信息。使用Promise方式异步返回结果。
6095

6096
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6097 6098 6099

**返回值:**

6100 6101 6102
| 类型                                              | 说明                                |
| :------------------------------------------------ | :---------------------------------- |
| Promise<[AudioCapturerInfo](#audiocapturerinfo)\> | 使用Promise方式异步返回采集器信息。 |
L
lwx1059628 已提交
6103 6104 6105

**示例:**

J
jiao_yanlin 已提交
6106
```js
6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117
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}`);
6118
});
L
lwx1059628 已提交
6119 6120
```

6121
### getStreamInfo<sup>8+</sup>
L
lwx1059628 已提交
6122

6123
getStreamInfo(callback: AsyncCallback<AudioStreamInfo\>): void
L
lwx1059628 已提交
6124

6125
获取采集器流信息。使用callback方式异步返回结果。
6126

6127
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6128 6129 6130

**参数:**

6131 6132 6133
| 参数名   | 类型                                                 | 必填 | 说明                             |
| :------- | :--------------------------------------------------- | :--- | :------------------------------- |
| callback | AsyncCallback<[AudioStreamInfo](#audiostreaminfo8)\> | 是   | 使用callback方式异步返回流信息。 |
L
lwx1059628 已提交
6134 6135 6136

**示例:**

J
jiao_yanlin 已提交
6137
```js
6138
audioCapturer.getStreamInfo((err, streamInfo) => {
J
jiao_yanlin 已提交
6139
  if (err) {
6140 6141 6142 6143 6144 6145 6146
    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 已提交
6147
  }
L
lwx1059628 已提交
6148 6149 6150
});
```

6151
### getStreamInfo<sup>8+</sup>
L
lwx1059628 已提交
6152

6153
getStreamInfo(): Promise<AudioStreamInfo\>
6154

6155
获取采集器流信息。使用Promise方式异步返回结果。
6156

6157
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6158 6159 6160

**返回值:**

6161 6162 6163
| 类型                                           | 说明                            |
| :--------------------------------------------- | :------------------------------ |
| Promise<[AudioStreamInfo](#audiostreaminfo8)\> | 使用Promise方式异步返回流信息。 |
L
lwx1059628 已提交
6164 6165 6166

**示例:**

J
jiao_yanlin 已提交
6167
```js
6168 6169 6170 6171 6172 6173 6174 6175
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 已提交
6176 6177 6178
});
```

6179
### getAudioStreamId<sup>9+</sup>
L
lwx1059628 已提交
6180

6181
getAudioStreamId(callback: AsyncCallback<number\>): void
L
lwx1059628 已提交
6182

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

6185
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6186 6187 6188

**参数:**

6189 6190 6191
| 参数名   | 类型                                                 | 必填 | 说明                 |
| :------- | :--------------------------------------------------- | :--- | :------------------- |
| callback | AsyncCallback<number\> | 是   | 回调返回音频流id。 |
L
lwx1059628 已提交
6192 6193 6194

**示例:**

J
jiao_yanlin 已提交
6195
```js
6196 6197
audioCapturer.getAudioStreamId((err, streamid) => {
  console.info(`audioCapturer GetStreamId: ${streamid}`);
L
lwx1059628 已提交
6198 6199 6200
});
```

6201
### getAudioStreamId<sup>9+</sup>
6202

6203
getAudioStreamId(): Promise<number\>
6204

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

6207
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6208 6209 6210

**返回值:**

6211 6212 6213
| 类型             | 说明                   |
| :----------------| :--------------------- |
| Promise<number\> | Promise返回音频流id。 |
L
lwx1059628 已提交
6214 6215 6216

**示例:**

J
jiao_yanlin 已提交
6217
```js
6218 6219 6220 6221
audioCapturer.getAudioStreamId().then((streamid) => {
  console.info(`audioCapturer getAudioStreamId: ${streamid}`);
}).catch((err) => {
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
6222 6223 6224
});
```

6225
### start<sup>8+</sup>
6226

6227
start(callback: AsyncCallback<void\>): void
6228

6229
启动音频采集器。使用callback方式异步返回结果。
6230

6231
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6232 6233 6234

**参数:**

6235 6236 6237
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
6238 6239 6240 6241

**示例:**

```js
6242
audioCapturer.start((err) => {
6243
  if (err) {
6244 6245 6246
    console.error('Capturer start failed.');
  } else {
    console.info('Capturer start success.');
6247
  }
6248 6249 6250 6251
});
```


6252
### start<sup>8+</sup>
6253

6254
start(): Promise<void\>
6255

6256
启动音频采集器。使用Promise方式异步返回结果。
6257

6258
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6259 6260 6261

**返回值:**

6262 6263 6264
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
6265 6266 6267 6268

**示例:**

```js
6269 6270 6271 6272 6273 6274 6275 6276 6277 6278
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}`);
6279 6280 6281
});
```

6282
### stop<sup>8+</sup>
6283

6284
stop(callback: AsyncCallback<void\>): void
6285

6286
停止采集。使用callback方式异步返回结果。
6287

6288
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6289

6290
**参数:**
L
lwx1059628 已提交
6291

6292 6293 6294
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6295 6296 6297

**示例:**

J
jiao_yanlin 已提交
6298
```js
6299
audioCapturer.stop((err) => {
J
jiao_yanlin 已提交
6300
  if (err) {
6301 6302 6303
    console.error('Capturer stop failed');
  } else {
    console.info('Capturer stopped.');
J
jiao_yanlin 已提交
6304
  }
L
lwx1059628 已提交
6305 6306 6307 6308
});
```


6309
### stop<sup>8+</sup>
L
lwx1059628 已提交
6310

6311
stop(): Promise<void\>
L
lwx1059628 已提交
6312

6313
停止采集。使用Promise方式异步返回结果。
6314

6315
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6316 6317 6318

**返回值:**

6319 6320 6321
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
L
lwx1059628 已提交
6322 6323 6324

**示例:**

J
jiao_yanlin 已提交
6325
```js
6326 6327 6328 6329 6330 6331 6332 6333
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 已提交
6334 6335 6336
});
```

6337
### release<sup>8+</sup>
L
lwx1059628 已提交
6338

6339
release(callback: AsyncCallback<void\>): void
L
lwx1059628 已提交
6340

6341
释放采集器。使用callback方式异步返回结果。
6342

6343
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6344 6345 6346

**参数:**

6347 6348
| 参数名   | 类型                 | 必填 | 说明                                |
| :------- | :------------------- | :--- | :---------------------------------- |
J
jiao_yanlin 已提交
6349
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6350 6351 6352

**示例:**

J
jiao_yanlin 已提交
6353
```js
6354
audioCapturer.release((err) => {
J
jiao_yanlin 已提交
6355
  if (err) {
6356 6357 6358
    console.error('capturer release failed');
  } else {
    console.info('capturer released.');
J
jiao_yanlin 已提交
6359
  }
L
lwx1059628 已提交
6360 6361 6362 6363
});
```


6364
### release<sup>8+</sup>
L
lwx1059628 已提交
6365

6366
release(): Promise<void\>
6367

6368
释放采集器。使用Promise方式异步返回结果。
6369

6370
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6371 6372 6373

**返回值:**

6374 6375 6376
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
L
lwx1059628 已提交
6377 6378 6379

**示例:**

J
jiao_yanlin 已提交
6380
```js
6381 6382 6383 6384 6385 6386 6387 6388
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 已提交
6389 6390 6391
});
```

6392
### read<sup>8+</sup>
L
lwx1059628 已提交
6393

6394
read(size: number, isBlockingRead: boolean, callback: AsyncCallback<ArrayBuffer\>): void
L
lwx1059628 已提交
6395

6396
读入缓冲区。使用callback方式异步返回结果。
6397

6398
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6399 6400 6401

**参数:**

6402 6403 6404 6405 6406
| 参数名         | 类型                        | 必填 | 说明                             |
| :------------- | :-------------------------- | :--- | :------------------------------- |
| size           | number                      | 是   | 读入的字节数。                   |
| isBlockingRead | boolean                     | 是   | 是否阻塞读操作。                 |
| callback       | AsyncCallback<ArrayBuffer\> | 是   | 使用callback方式异步返回缓冲区。 |
L
lwx1059628 已提交
6407 6408 6409

**示例:**

J
jiao_yanlin 已提交
6410
```js
6411 6412 6413 6414 6415 6416 6417 6418 6419 6420
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 已提交
6421
  }
L
lwx1059628 已提交
6422 6423 6424
});
```

6425
### read<sup>8+</sup>
L
lwx1059628 已提交
6426

6427
read(size: number, isBlockingRead: boolean): Promise<ArrayBuffer\>
L
lwx1059628 已提交
6428

6429
读入缓冲区。使用Promise方式异步返回结果。
L
lwx1059628 已提交
6430

6431
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6432 6433 6434

**参数:**

6435 6436 6437 6438
| 参数名         | 类型    | 必填 | 说明             |
| :------------- | :------ | :--- | :--------------- |
| size           | number  | 是   | 读入的字节数。   |
| isBlockingRead | boolean | 是   | 是否阻塞读操作。 |
L
lwx1059628 已提交
6439 6440 6441

**返回值:**

6442 6443 6444
| 类型                  | 说明                                                   |
| :-------------------- | :----------------------------------------------------- |
| Promise<ArrayBuffer\> | 如果操作成功,返回读取的缓冲区数据;否则返回错误代码。 |
L
lwx1059628 已提交
6445 6446 6447

**示例:**

J
jiao_yanlin 已提交
6448
```js
6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460
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 已提交
6461 6462 6463
});
```

6464
### getAudioTime<sup>8+</sup>
6465

6466
getAudioTime(callback: AsyncCallback<number\>): void
6467

6468
获取时间戳(从1970年1月1日开始),单位为纳秒。使用callback方式异步返回结果。
6469

6470
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6471

6472
**参数:**
L
lwx1059628 已提交
6473

6474 6475 6476
| 参数名   | 类型                   | 必填 | 说明                           |
| :------- | :--------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<number\> | 是   | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6477 6478 6479

**示例:**

J
jiao_yanlin 已提交
6480
```js
6481 6482
audioCapturer.getAudioTime((err, timestamp) => {
  console.info(`Current timestamp: ${timestamp}`);
J
jiao_yanlin 已提交
6483
});
L
lwx1059628 已提交
6484 6485
```

6486
### getAudioTime<sup>8+</sup>
6487

6488
getAudioTime(): Promise<number\>
L
lwx1059628 已提交
6489

6490
获取时间戳(从1970年1月1日开始),单位为纳秒。使用Promise方式异步返回结果。
L
lwx1059628 已提交
6491

6492
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6493 6494 6495

**返回值:**

6496 6497 6498
| 类型             | 说明                          |
| :--------------- | :---------------------------- |
| Promise<number\> | 使用Promise方式异步返回结果。 |
L
lwx1059628 已提交
6499 6500 6501

**示例:**

J
jiao_yanlin 已提交
6502
```js
6503 6504 6505 6506
audioCapturer.getAudioTime().then((audioTime) => {
  console.info(`AudioFrameworkRecLog: AudioCapturer getAudioTime : Success ${audioTime}`);
}).catch((err) => {
  console.info(`AudioFrameworkRecLog: AudioCapturer Created : ERROR : ${err}`);
L
lwx1059628 已提交
6507 6508 6509
});
```

6510
### getBufferSize<sup>8+</sup>
L
lwx1059628 已提交
6511

6512
getBufferSize(callback: AsyncCallback<number\>): void
L
lwx1059628 已提交
6513

6514
获取采集器合理的最小缓冲区大小。使用callback方式异步返回结果。
6515

6516
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6517 6518 6519

**参数:**

6520 6521 6522
| 参数名   | 类型                   | 必填 | 说明                                 |
| :------- | :--------------------- | :--- | :----------------------------------- |
| callback | AsyncCallback<number\> | 是   | 使用callback方式异步返回缓冲区大小。 |
L
lwx1059628 已提交
6523 6524 6525

**示例:**

J
jiao_yanlin 已提交
6526
```js
6527 6528 6529 6530 6531 6532 6533 6534
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}`);
    });
6535
  }
L
lwx1059628 已提交
6536 6537 6538
});
```

6539
### getBufferSize<sup>8+</sup>
6540

6541
getBufferSize(): Promise<number\>
L
lwx1059628 已提交
6542

6543
获取采集器合理的最小缓冲区大小。使用Promise方式异步返回结果。
L
lwx1059628 已提交
6544

6545
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6546

6547 6548 6549 6550 6551
**返回值:**

| 类型             | 说明                                |
| :--------------- | :---------------------------------- |
| Promise<number\> | 使用Promise方式异步返回缓冲区大小。 |
L
lwx1059628 已提交
6552 6553 6554

**示例:**

J
jiao_yanlin 已提交
6555
```js
6556 6557 6558 6559 6560 6561
let bufferSize;
audioCapturer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRecLog: getBufferSize :SUCCESS ${data}`);
  bufferSize = data;
}).catch((err) => {
  console.info(`AudioFrameworkRecLog: getBufferSize :ERROR : ${err}`);
L
lwx1059628 已提交
6562 6563 6564
});
```

6565 6566 6567 6568 6569 6570
### on('audioInterrupt')<sup>10+</sup>

on(type: 'audioInterrupt', callback: Callback\<InterruptEvent>): void

监听音频中断事件。使用callback获取中断事件。

J
jiaoyanlin3 已提交
6571
[on('interrupt')](#oninterrupt)一致,均用于监听焦点变化。AudioCapturer对象在start事件发生时会主动获取焦点,在pause、stop等事件发生时会主动释放焦点,不需要开发者主动发起获取焦点或释放焦点的申请。
6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 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

**系统能力:** 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;
      }
   }
  });
}
```


6642
### on('markReach')<sup>8+</sup>
L
lwx1059628 已提交
6643

6644
on(type: "markReach", frame: number, callback: Callback&lt;number&gt;): void
L
lwx1059628 已提交
6645

6646
订阅标记到达的事件。 当采集的帧数达到 frame 参数的值时,回调被触发。
6647

6648
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6649 6650 6651

**参数:**

6652 6653 6654 6655 6656
| 参数名   | 类型                     | 必填 | 说明                                       |
| :------- | :----------------------  | :--- | :----------------------------------------- |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'markReach'。  |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于0。           |
| callback | Callback\<number>         | 是   | 使用callback方式异步返回被触发事件的回调。 |
L
lwx1059628 已提交
6657 6658

**示例:**
6659

J
jiao_yanlin 已提交
6660
```js
6661 6662 6663
audioCapturer.on('markReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
J
jiao_yanlin 已提交
6664
  }
L
lwx1059628 已提交
6665 6666 6667
});
```

6668
### off('markReach')<sup>8+</sup>
L
lwx1059628 已提交
6669

6670
off(type: 'markReach'): void
L
lwx1059628 已提交
6671

6672
取消订阅标记到达的事件。
6673

6674
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6675 6676 6677

**参数:**

6678 6679 6680
| 参数名 | 类型   | 必填 | 说明                                          |
| :----- | :----- | :--- | :-------------------------------------------- |
| type   | string | 是   | 取消事件回调类型,支持的事件为:'markReach'。 |
L
lwx1059628 已提交
6681 6682 6683

**示例:**

J
jiao_yanlin 已提交
6684
```js
6685
audioCapturer.off('markReach');
L
lwx1059628 已提交
6686 6687
```

6688
### on('periodReach')<sup>8+</sup>
L
lwx1059628 已提交
6689

6690
on(type: "periodReach", frame: number, callback: Callback&lt;number&gt;): void
L
lwx1059628 已提交
6691

6692
订阅到达标记的事件。 当采集的帧数达到 frame 参数的值时,触发回调并返回设定的值。
6693

6694
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6695 6696 6697

**参数:**

6698 6699 6700 6701 6702
| 参数名   | 类型                     | 必填 | 说明                                        |
| :------- | :----------------------- | :--- | :------------------------------------------ |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'periodReach'。 |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于0。            |
| callback | Callback\<number>         | 是   | 使用callback方式异步返回被触发事件的回调    |
L
lwx1059628 已提交
6703 6704 6705

**示例:**

J
jiao_yanlin 已提交
6706
```js
6707 6708 6709
audioCapturer.on('periodReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
J
jiao_yanlin 已提交
6710
  }
L
lwx1059628 已提交
6711 6712 6713
});
```

6714
### off('periodReach')<sup>8+</sup>
L
lwx1059628 已提交
6715

6716
off(type: 'periodReach'): void
L
lwx1059628 已提交
6717

6718
取消订阅标记到达的事件。
6719

6720
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6721 6722 6723

**参数:**

6724 6725 6726
| 参数名 | 类型   | 必填 | 说明                                            |
| :----- | :----- | :--- | :---------------------------------------------- |
| type   | string | 是  | 取消事件回调类型,支持的事件为:'periodReach'。 |
L
lwx1059628 已提交
6727 6728 6729

**示例:**

J
jiao_yanlin 已提交
6730
```js
6731
audioCapturer.off('periodReach')
L
lwx1059628 已提交
6732 6733
```

6734
### on('stateChange') <sup>8+</sup>
L
lwx1059628 已提交
6735

6736
on(type: 'stateChange', callback: Callback<AudioState\>): void
L
lwx1059628 已提交
6737

6738
订阅监听状态变化。
6739

6740
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6741 6742 6743

**参数:**

6744 6745 6746 6747
| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'stateChange'。 |
| callback | Callback\<[AudioState](#audiostate8)> | 是   | 返回监听的状态。                            |
L
lwx1059628 已提交
6748 6749 6750

**示例:**

J
jiao_yanlin 已提交
6751
```js
6752 6753 6754 6755 6756 6757
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 已提交
6758
  }
L
lwx1059628 已提交
6759 6760 6761
});
```

6762
## ToneType<sup>9+</sup>
L
lwx1059628 已提交
6763

6764
枚举,播放器的音调类型。
L
lwx1059628 已提交
6765

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

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

6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798
| 名称                                              |  值    | 说明                          |
| :------------------------------------------------ | :----- | :----------------------------|
| 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 已提交
6799

6800
## TonePlayer<sup>9+</sup>
L
lwx1059628 已提交
6801

6802
提供播放和管理DTMF(Dual Tone Multi Frequency,双音多频)音调的方法,包括各种系统监听音调、专有音调,如拨号音、通话回铃音等。
L
lwx1059628 已提交
6803

6804
**系统接口:** 该接口为系统接口
L
lwx1059628 已提交
6805

6806
### load<sup>9+</sup>
L
lwx1059628 已提交
6807

6808
load(type: ToneType, callback: AsyncCallback&lt;void&gt;): void
L
lwx1059628 已提交
6809

6810
加载DTMF音调配置。使用callback方式异步返回结果。
6811

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

6814
**系统能力:** SystemCapability.Multimedia.Audio.Tone
L
lwx1059628 已提交
6815 6816 6817

**参数:**

6818 6819 6820 6821
| 参数名          | 类型                        | 必填  | 说明                            |
| :--------------| :-------------------------- | :-----| :------------------------------ |
| type           | [ToneType](#tonetype9)       | 是    | 配置的音调类型。                 |
| callback       | AsyncCallback<void\>        | 是    | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6822 6823 6824

**示例:**

J
jiao_yanlin 已提交
6825
```js
6826
tonePlayer.load(audio.ToneType.TONE_TYPE_DIAL_5, (err) => {
6827
  if (err) {
6828
    console.error(`callback call load failed error: ${err.message}`);
6829
    return;
6830 6831
  } else {
    console.info('callback call load success');
J
jiao_yanlin 已提交
6832
  }
L
lwx1059628 已提交
6833
});
6834 6835
```

6836
### load<sup>9+</sup>
6837

6838
load(type: ToneType): Promise&lt;void&gt;
6839

6840
加载DTMF音调配置。使用Promise方式异步返回结果。
6841

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

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

6846
**参数:**
6847

6848 6849 6850
| 参数名         | 类型                    | 必填  |  说明             |
| :------------- | :--------------------- | :---  | ---------------- |
| type           | [ToneType](#tonetype9)   | 是    | 配置的音调类型。  |
6851

6852
**返回值:**
6853

6854 6855 6856
| 类型            | 说明                        |
| :--------------| :-------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
6857

6858
**示例:**
6859

6860
```js
6861 6862 6863 6864
tonePlayer.load(audio.ToneType.TONE_TYPE_DIAL_1).then(() => {
  console.info('promise call load ');
}).catch(() => {
  console.error('promise call load fail');
6865 6866
});
```
6867

6868
### start<sup>9+</sup>
6869

6870
start(callback: AsyncCallback&lt;void&gt;): void
6871

6872
启动DTMF音调播放。使用callback方式异步返回结果。
6873

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

6876
**系统能力:** SystemCapability.Multimedia.Audio.Tone
6877 6878 6879

**参数:**

6880 6881 6882
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
6883 6884 6885 6886

**示例:**

```js
6887
tonePlayer.start((err) => {
6888
  if (err) {
6889
    console.error(`callback call start failed error: ${err.message}`);
6890
    return;
6891 6892
  } else {
    console.info('callback call start success');
6893 6894 6895 6896
  }
});
```

6897
### start<sup>9+</sup>
6898

6899
start(): Promise&lt;void&gt;
6900

6901
启动DTMF音调播放。使用Promise方式异步返回结果。
6902

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

6905
**系统能力:** SystemCapability.Multimedia.Audio.Tone
6906 6907 6908

**返回值:**

6909 6910 6911
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
6912 6913 6914 6915

**示例:**

```js
6916 6917 6918 6919
tonePlayer.start().then(() => {
  console.info('promise call start');
}).catch(() => {
  console.error('promise call start fail');
6920 6921 6922
});
```

6923
### stop<sup>9+</sup>
6924

6925
stop(callback: AsyncCallback&lt;void&gt;): void
6926

6927
停止当前正在播放的音调。使用callback方式异步返回结果。
6928 6929 6930

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

6931
**系统能力:** SystemCapability.Multimedia.Audio.Tone
6932 6933 6934

**参数:**

6935 6936 6937
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
6938 6939 6940 6941

**示例:**

```js
6942 6943 6944 6945 6946 6947 6948
tonePlayer.stop((err) => {
  if (err) {
    console.error(`callback call stop error: ${err.message}`);
    return;
  } else {
    console.error('callback call stop success ');
  }
6949 6950 6951
});
```

6952
### stop<sup>9+</sup>
6953

6954
stop(): Promise&lt;void&gt;
6955

6956
停止当前正在播放的音调。使用Promise方式异步返回结果。
6957

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

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

6962
**返回值:**
6963

6964 6965 6966
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
6967 6968 6969 6970

**示例:**

```js
6971 6972 6973 6974
tonePlayer.stop().then(() => {
  console.info('promise call stop finish');
}).catch(() => {
  console.error('promise call stop fail');
6975 6976 6977
});
```

6978
### release<sup>9+</sup>
6979

6980
release(callback: AsyncCallback&lt;void&gt;): void
6981

6982
释放与此TonePlayer对象关联的资源。使用callback方式异步返回结果。
6983

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

6986
**系统能力:** SystemCapability.Multimedia.Audio.Tone
6987 6988 6989

**参数:**

6990 6991 6992
| 参数名   | 类型                 | 必填 | 说明                            |
| :------- | :------------------- | :--- | :---------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。  |
6993 6994 6995 6996

**示例:**

```js
6997 6998 6999 7000 7001 7002 7003
tonePlayer.release((err) => {
  if (err) {
    console.error(`callback call release failed error: ${err.message}`);
    return;
  } else {
    console.info('callback call release success ');
  }
7004 7005 7006
});
```

7007
### release<sup>9+</sup>
7008

7009
release(): Promise&lt;void&gt;
7010

7011
释放与此TonePlayer对象关联的资源。使用Promise方式异步返回结果。
7012

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

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

7017
**返回值:**
7018

7019 7020 7021
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
7022 7023 7024 7025

**示例:**

```js
7026 7027 7028 7029
tonePlayer.release().then(() => {
  console.info('promise call release');
}).catch(() => {
  console.error('promise call release fail');
7030 7031 7032
});
```

7033
## ActiveDeviceType<sup>(deprecated)</sup>
7034

7035
枚举,活跃设备类型。
7036

7037 7038
> **说明:**
> 从 API version 9 开始废弃,建议使用[CommunicationDeviceType](#communicationdevicetype9)替代。
7039

7040 7041 7042 7043 7044 7045 7046 7047 7048 7049
**系统能力:** SystemCapability.Multimedia.Audio.Device

| 名称          |  值     | 说明                                                 |
| ------------- | ------ | ---------------------------------------------------- |
| SPEAKER       | 2      | 扬声器。                                             |
| BLUETOOTH_SCO | 7      | 蓝牙设备SCO(Synchronous Connection Oriented)连接。 |

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

枚举,中断事件返回类型。
7050

7051 7052 7053 7054
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃。

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

7056 7057 7058 7059
| 名称           |  值     | 说明               |
| -------------- | ------ | ------------------ |
| TYPE_ACTIVATED | 0      | 表示触发焦点事件。 |
| TYPE_INTERRUPT | 1      | 表示音频打断事件。 |
7060

7061
## AudioInterrupt<sup>(deprecated)</sup>
7062

7063
音频监听事件传入的参数。
7064

7065 7066
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃。
7067

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

7070 7071 7072 7073 7074
| 名称            | 类型                        | 必填 | 说明                                                         |
| --------------- | --------------------------- | ----| ------------------------------------------------------------ |
| streamUsage     | [StreamUsage](#streamusage) | 是  | 音频流使用类型。                                             |
| contentType     | [ContentType](#contenttype) | 是  | 音频打断媒体类型。                                           |
| pauseWhenDucked | boolean                     | 是  | 音频打断时是否可以暂停音频播放(true表示音频播放可以在音频打断期间暂停,false表示相反)。 |
7075

7076 7077 7078
## InterruptAction<sup>(deprecated)</sup>

音频打断/获取焦点事件的回调方法。
7079

7080
> **说明:**
J
jiaoyanlin3 已提交
7081
> 从 API version 7 开始支持,从 API version 9 开始废弃。建议使用[InterruptEvent](#interruptevent9)替代。
7082

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

7085 7086 7087 7088 7089 7090
| 名称       | 类型                                        | 必填 | 说明                                                         |
| ---------- | ------------------------------------------- | ---- | ------------------------------------------------------------ |
| actionType | [InterruptActionType](#interruptactiontypedeprecated) | 是   | 事件返回类型。TYPE_ACTIVATED为焦点触发事件,TYPE_INTERRUPT为音频打断事件。 |
| type       | [InterruptType](#interrupttype)             | 否   | 打断事件类型。                                               |
| hint       | [InterruptHint](#interrupthint)             | 否   | 打断事件提示。                                               |
| activated  | boolean                                     | 否   | 获得/释放焦点。true表示焦点获取/释放成功,false表示焦点获得/释放失败。 |