js-apis-audio.md 262.1 KB
Newer Older
Z
zengyawen 已提交
1
# @ohos.multimedia.audio (音频管理)
2

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

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

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

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

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

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

21 22
## 常量

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

**示例:**

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

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

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

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

获取音频管理器。

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

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

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

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

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

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

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

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

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

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

**示例:**

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

J
jiao_yanlin 已提交
80
let audioStreamInfo = {
J
jiao_yanlin 已提交
81 82 83 84
  samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
  channels: audio.AudioChannel.CHANNEL_1,
  sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
  encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
L
lwx1059628 已提交
85 86
}

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

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

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

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

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

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

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

**参数:**

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

**返回值:**

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

**示例:**

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

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

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

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

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

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

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

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

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

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

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

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

**示例:**

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

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

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

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

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

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

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

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

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

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

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

**返回值:**

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

**示例:**

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

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

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

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

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

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

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

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

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

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

273
**参数:**
274 275 276

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

**示例:**

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

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

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

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

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

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

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

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

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

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

**返回值:**

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

**示例:**

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

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

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

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

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

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

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

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

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

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

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

372
枚举,焦点模型。
373

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

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

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

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

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

387
| 名称                            |  值     | 说明                                              |
388
| ------------------------------- | ------ | ------------------------------------------------- |
389
| NONE_DEVICES_FLAG<sup>9+</sup>  | 0      | 无 <br/>此接口为系统接口。        |
390 391 392
| OUTPUT_DEVICES_FLAG             | 1      | 输出设备。 |
| INPUT_DEVICES_FLAG              | 2      | 输入设备。 |
| ALL_DEVICES_FLAG                | 3      | 所有设备。 |
393 394 395
| DISTRIBUTED_OUTPUT_DEVICES_FLAG<sup>9+</sup> | 4   | 分布式输出设备。<br/>此接口为系统接口。  |
| DISTRIBUTED_INPUT_DEVICES_FLAG<sup>9+</sup>  | 8   | 分布式输入设备。<br/>此接口为系统接口。  |
| ALL_DISTRIBUTED_DEVICES_FLAG<sup>9+</sup>    | 12  | 分布式输入和输出设备。<br/>此接口为系统接口。  |
Z
zengyawen 已提交
396 397

## DeviceRole
M
mamingshuai 已提交
398

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

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

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

Z
zengyawen 已提交
408 409 410
## DeviceType

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

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

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

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

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

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

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

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

枚举,铃声模式。

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

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

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

枚举,音频采样格式。

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

455
| 名称                                |  值    | 说明                       |
456 457 458 459 460 461
| ---------------------------------- | ------ | -------------------------- |
| SAMPLE_FORMAT_INVALID              | -1     | 无效格式。                 |
| SAMPLE_FORMAT_U8                   | 0      | 无符号8位整数。            |
| SAMPLE_FORMAT_S16LE                | 1      | 带符号的16位整数,小尾数。 |
| SAMPLE_FORMAT_S24LE                | 2      | 带符号的24位整数,小尾数。 <br>由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。|
| SAMPLE_FORMAT_S32LE                | 3      | 带符号的32位整数,小尾数。 <br>由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。|
J
jiao_yanlin 已提交
462
| SAMPLE_FORMAT_F32LE<sup>9+</sup>   | 4      | 带符号的32位浮点数,小尾数。 <br>由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。|
Z
zengyawen 已提交
463

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

枚举,音频错误码。

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

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

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

枚举, 音频声道。

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

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

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

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

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

497
| 名称              |  值    | 说明            |
Z
zengyawen 已提交
498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514
| ----------------- | ------ | --------------- |
| SAMPLE_RATE_8000  | 8000   | 采样率为8000。  |
| SAMPLE_RATE_11025 | 11025  | 采样率为11025。 |
| SAMPLE_RATE_12000 | 12000  | 采样率为12000。 |
| SAMPLE_RATE_16000 | 16000  | 采样率为16000。 |
| SAMPLE_RATE_22050 | 22050  | 采样率为22050。 |
| SAMPLE_RATE_24000 | 24000  | 采样率为24000。 |
| SAMPLE_RATE_32000 | 32000  | 采样率为32000。 |
| SAMPLE_RATE_44100 | 44100  | 采样率为44100。 |
| SAMPLE_RATE_48000 | 48000  | 采样率为48000。 |
| SAMPLE_RATE_64000 | 64000  | 采样率为64000。 |
| SAMPLE_RATE_96000 | 96000  | 采样率为96000。 |

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

枚举,音频编码类型。

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

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

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

枚举,音频内容类型。

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

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

枚举,音频流使用类型。

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

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

Z
zengyawen 已提交
565

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

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

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

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

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

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

枚举,音频状态。

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

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

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

枚举,音效模式。

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

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

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

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

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

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

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

枚举,中断类型。

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

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

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

枚举,强制打断类型。

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

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

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

枚举,中断提示。

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

645
| 名称                               |  值     | 说明                                         |
L
lwx1059628 已提交
646 647 648 649 650 651 652
| ---------------------------------- | ------ | -------------------------------------------- |
| INTERRUPT_HINT_NONE<sup>8+</sup>   | 0      | 无提示。                                     |
| INTERRUPT_HINT_RESUME              | 1      | 提示音频恢复。                               |
| INTERRUPT_HINT_PAUSE               | 2      | 提示音频暂停。                               |
| INTERRUPT_HINT_STOP                | 3      | 提示音频停止。                               |
| INTERRUPT_HINT_DUCK                | 4      | 提示音频躲避。(躲避:音量减弱,而不会停止) |
| INTERRUPT_HINT_UNDUCK<sup>8+</sup> | 5      | 提示音量恢复。                               |
Z
zengyawen 已提交
653 654 655 656 657

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

音频流信息。

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

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

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

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

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

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

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

音频中断结果。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

枚举,设备连接类型。

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

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

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

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

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

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

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

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

音量组信息。

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

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

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

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

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

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

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

## DeviceChangeType

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

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

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

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

音频采集器选项信息。

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

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

枚举,音源类型。

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

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

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

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

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

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

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

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

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

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

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

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

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

枚举,音频场景。

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

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

W
wangzx0705 已提交
882
## VolumeAdjustType<sup>10+</sup>
W
wangzx0705 已提交
883

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

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

| 名称                   |  值     | 说明                                          |
| :--------------------- | :----- | :-------------------------------------------- |
890 891
| VOLUME_UP              | 0      | 向上调节音量。<br/>此接口为系统接口。   |
| VOLUME_DOWN            | 1      | 向下调节音量。<br/>此接口为系统接口。   |
W
wangzx0705 已提交
892

Z
zengyawen 已提交
893
## AudioManager
M
mamingshuai 已提交
894

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

897
### setAudioParameter
M
mamingshuai 已提交
898

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

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

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

905
**需要权限:** ohos.permission.MODIFY_AUDIO_SETTINGS
906

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

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

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

M
mamingshuai 已提交
917 918
**示例:**

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

929
### setAudioParameter
M
mamingshuai 已提交
930

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

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

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

937
**需要权限:** ohos.permission.MODIFY_AUDIO_SETTINGS
938

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

M
mamingshuai 已提交
941 942
**参数:**

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

**返回值:**

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

**示例:**

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

962
### getAudioParameter
Z
zengyawen 已提交
963

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

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

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

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

M
mamingshuai 已提交
972 973
**参数:**

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

M
mamingshuai 已提交
979 980
**示例:**

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

991
### getAudioParameter
Z
zengyawen 已提交
992

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

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

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

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

M
mamingshuai 已提交
1001 1002
**参数:**

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

**返回值:**

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

**示例:**

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

1021
### setAudioScene<sup>8+</sup>
Z
zengyawen 已提交
1022

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

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

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

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

M
mamingshuai 已提交
1031 1032
**参数:**

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

M
mamingshuai 已提交
1038 1039
**示例:**

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

1050
### setAudioScene<sup>8+</sup>
Z
zengyawen 已提交
1051

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

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

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

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

M
mamingshuai 已提交
1060 1061
**参数:**

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

**返回值:**

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

**示例:**

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

1082
### getAudioScene<sup>8+</sup>
M
mamingshuai 已提交
1083

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

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

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

M
mamingshuai 已提交
1090 1091
**参数:**

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

M
mamingshuai 已提交
1096 1097
**示例:**

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

1108
### getAudioScene<sup>8+</sup>
1109

1110
getAudioScene\(\): Promise<AudioScene\>
Z
zengyawen 已提交
1111

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

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

**返回值:**

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

**示例:**

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

1132
### getVolumeManager<sup>9+</sup>
1133

1134
getVolumeManager(): AudioVolumeManager
1135

1136
获取音频音量管理器。
1137

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

Z
zengyawen 已提交
1140 1141
**示例:**

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

1146
### getStreamManager<sup>9+</sup>
1147

1148
getStreamManager(): AudioStreamManager
1149

1150
获取音频流管理器。
1151

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

1154
**示例:**
1155

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

1160
### getRoutingManager<sup>9+</sup>
1161

1162
getRoutingManager(): AudioRoutingManager
1163

1164
获取音频路由设备管理器。
1165

1166
**系统能力:** SystemCapability.Multimedia.Audio.Device
1167 1168 1169

**示例:**

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

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

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

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

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

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

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

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

Z
zengyawen 已提交
1189
**参数:**
1190

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

**示例:**

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

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

1211
setVolume(volumeType: AudioVolumeType, volume: number): Promise&lt;void&gt;
1212

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

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

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

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

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

**参数:**

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

1231 1232
**返回值:**

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

**示例:**

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

1245
### getVolume<sup>(deprecated)</sup>
1246

1247
getVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
1248

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

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

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

1256 1257
**参数:**

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

**示例:**

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

1275
### getVolume<sup>(deprecated)</sup>
1276

1277
getVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
1278

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

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

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

1286 1287
**参数:**

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

**返回值:**

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

**示例:**

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

1306
### getMinVolume<sup>(deprecated)</sup>
1307

1308
getMinVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
1309

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

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

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

1317 1318
**参数:**

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

**示例:**

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

1336
### getMinVolume<sup>(deprecated)</sup>
1337

1338
getMinVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
1339

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

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

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

1347 1348
**参数:**

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

**返回值:**

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

**示例:**

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

1367
### getMaxVolume<sup>(deprecated)</sup>
1368

1369
getMaxVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
1370

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

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

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

1378 1379
**参数:**

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

**示例:**
1386

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

1397
### getMaxVolume<sup>(deprecated)</sup>
1398

1399
getMaxVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
1400

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

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

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

1408 1409
**参数:**

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

**返回值:**

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

**示例:**

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

1428
### mute<sup>(deprecated)</sup>
Z
zengyawen 已提交
1429

1430
mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback&lt;void&gt;): void
1431

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

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

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

1439 1440
**参数:**

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

**示例:**

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

1459
### mute<sup>(deprecated)</sup>
Z
zengyawen 已提交
1460

1461
mute(volumeType: AudioVolumeType, mute: boolean): Promise&lt;void&gt;
1462

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

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

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

1470 1471
**参数:**

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

**返回值:**

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

**示例:**

1485

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

1492
### isMute<sup>(deprecated)</sup>
1493

1494
isMute(volumeType: AudioVolumeType, callback: AsyncCallback&lt;boolean&gt;): void
1495

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

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

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

1503 1504
**参数:**

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

**示例:**

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

1522
### isMute<sup>(deprecated)</sup>
1523

1524
isMute(volumeType: AudioVolumeType): Promise&lt;boolean&gt;
1525

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

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

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

1533 1534
**参数:**

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

**返回值:**

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

**示例:**

J
jiao_yanlin 已提交
1547
```js
1548
audioManager.isMute(audio.AudioVolumeType.MEDIA).then((value) => {
1549
  console.info(`Promise returned to indicate that the mute status of the stream is obtained ${value}.`);
L
lwx1059628 已提交
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 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614
### 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 已提交
1615

1616
setRingerMode(mode: AudioRingMode, callback: AsyncCallback&lt;void&gt;): void
1617

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

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

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

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

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

1629 1630
**参数:**

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

**示例:**

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

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

1650
setRingerMode(mode: AudioRingMode): Promise&lt;void&gt;
1651

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

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

1657

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

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

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

1664 1665
**参数:**

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

**返回值:**

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

**示例:**

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

1684
### getRingerMode<sup>(deprecated)</sup>
1685

1686
getRingerMode(callback: AsyncCallback&lt;AudioRingMode&gt;): void
1687

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

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

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

1695 1696
**参数:**

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

**示例:**

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

1713
### getRingerMode<sup>(deprecated)</sup>
1714

1715
getRingerMode(): Promise&lt;AudioRingMode&gt;
1716

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

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

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

1724 1725
**返回值:**

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

**示例:**

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

1738
### getDevices<sup>(deprecated)</sup>
Z
zengyawen 已提交
1739

1740
getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback&lt;AudioDeviceDescriptors&gt;): void
1741

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

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

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

**参数:**

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

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

1767
### getDevices<sup>(deprecated)</sup>
1768

1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788
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 已提交
1789 1790 1791

**示例:**

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

1798
### setDeviceActive<sup>(deprecated)</sup>
Z
zengyawen 已提交
1799

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

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

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

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

**参数:**

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

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

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

1829
### setDeviceActive<sup>(deprecated)</sup>
L
lwx1059628 已提交
1830

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

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

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

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

**参数:**

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

**返回值:**

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

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

1855

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

1862
### isDeviceActive<sup>(deprecated)</sup>
L
lwx1059628 已提交
1863

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

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

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

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

**参数:**

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

**示例:**

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

1892
### isDeviceActive<sup>(deprecated)</sup>
1893

1894
isDeviceActive(deviceType: ActiveDeviceType): Promise&lt;boolean&gt;
1895

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

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

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

**参数:**

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

1909
**返回值:**
1910

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

**示例:**

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

1923
### setMicrophoneMute<sup>(deprecated)</sup>
1924

1925
setMicrophoneMute(mute: boolean, callback: AsyncCallback&lt;void&gt;): void
1926

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

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

1932 1933 1934
**需要权限:** ohos.permission.MICROPHONE

**系统能力:** SystemCapability.Multimedia.Audio.Device
1935 1936 1937

**参数:**

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

1943
**示例:**
1944

1945 1946 1947 1948 1949 1950 1951 1952 1953
```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.');
});
```
1954

1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978
### 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回调返回设置成功或失败。 |
1979 1980 1981

**示例:**

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

1988
### isMicrophoneMute<sup>(deprecated)</sup>
L
lwx1059628 已提交
1989

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

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

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

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

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

**参数:**

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

**示例:**

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

2019
### isMicrophoneMute<sup>(deprecated)</sup>
L
lwx1059628 已提交
2020

2021
isMicrophoneMute(): Promise&lt;boolean&gt;
L
lwx1059628 已提交
2022

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

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

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

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

**返回值:**

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

**示例:**

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

2046
### on('volumeChange')<sup>(deprecated)</sup>
L
lwx1059628 已提交
2047

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

2050
> **说明:**
2051
> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeManager中的[on('volumeChange')](#onvolumechange9)替代。
L
lwx1059628 已提交
2052

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

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

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

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

**参数:**

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

**示例:**

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

2078
### on('ringerModeChange')<sup>(deprecated)</sup>
2079

2080
on(type: 'ringerModeChange', callback: Callback\<AudioRingMode>): void
2081

2082
监听铃声模式变化事件。
2083

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

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

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

**参数:**

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

**示例:**

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

2106
### on('deviceChange')<sup>(deprecated)</sup>
2107

2108
on(type: 'deviceChange', callback: Callback<DeviceChangeAction\>): void
2109

2110
设备更改。音频设备连接状态变化。
2111

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

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

2117
**参数:**
2118

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

**示例:**

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

2135
### off('deviceChange')<sup>(deprecated)</sup>
2136

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

2139
取消订阅音频设备连接变化事件。
2140

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

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

2146
**参数:**
2147

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

2153
**示例:**
W
wangtao 已提交
2154

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

J
jiaoyanlin3 已提交
2159
### on('interrupt')
2160

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

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

2165
[on('audioInterrupt')](#onaudiointerrupt9)作用一致,均用于监听焦点变化。为无音频流的场景(未曾创建AudioRenderer对象),比如FM、语音唤醒等提供焦点变化监听功能。
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

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

J
jiaoyanlin3 已提交
2197
### off('interrupt')
W
wangtao 已提交
2198

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

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

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

2205
**参数:**
2206

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

W
wangtao 已提交
2213 2214 2215
**示例:**

```js
2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226
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 已提交
2227 2228
```

2229
## AudioVolumeManager<sup>9+</sup>
W
wangtao 已提交
2230

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

2233
### getVolumeGroupInfos<sup>9+</sup>
W
wangtao 已提交
2234

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

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

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

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

**参数:**

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

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

2261
### getVolumeGroupInfos<sup>9+</sup>
W
wangtao 已提交
2262

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

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

2267 2268 2269
**系统接口:** 该接口为系统接口

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

**参数:**

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

2277 2278
**返回值:**

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

W
wangtao 已提交
2283 2284 2285
**示例:**

```js
2286 2287 2288 2289
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 已提交
2290
```
J
jiao_yanlin 已提交
2291

2292
### getVolumeGroupManager<sup>9+</sup>
J
jiao_yanlin 已提交
2293

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

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

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

2300
**参数:**
2301

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

**示例:**

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

J
jiao_yanlin 已提交
2319 2320
```

2321
### getVolumeGroupManager<sup>9+</sup>
J
jiao_yanlin 已提交
2322

2323
getVolumeGroupManager(groupId: number\): Promise<AudioVolumeGroupManager\>
2324

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

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

2329
**参数:**
2330

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

2335
**返回值:**
2336

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

**示例:**

```js
2344 2345 2346 2347 2348 2349 2350 2351
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.');
}

2352 2353
```

2354
### on('volumeChange')<sup>9+</sup>
2355

2356
on(type: 'volumeChange', callback: Callback\<VolumeEvent>): void
2357

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

2360
**系统能力:** SystemCapability.Multimedia.Audio.Volume
2361 2362 2363

**参数:**

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

2369
**错误码:**
2370

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

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

**示例:**

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

2387
## AudioVolumeGroupManager<sup>9+</sup>
2388

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

2391
### setVolume<sup>9+</sup>
W
wangtao 已提交
2392

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

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

2397
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
W
wangtao 已提交
2398

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

2401
**系统接口:** 该接口为系统接口
W
wangtao 已提交
2402

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

2405
**参数:**
W
wangtao 已提交
2406

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

**示例:**
2414

2415 2416 2417 2418 2419 2420 2421 2422
```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 已提交
2423 2424
```

2425
### setVolume<sup>9+</sup>
W
wangtao 已提交
2426

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

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

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

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

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

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

**参数:**

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

**返回值:**

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

**示例:**

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

2460
### getVolume<sup>9+</sup>
W
wangtao 已提交
2461

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

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

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

**参数:**

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

**示例:**

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

2487
### getVolume<sup>9+</sup>
W
wangtao 已提交
2488

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

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

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

**参数:**

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

**返回值:**

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

**示例:**

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

2515
### getMinVolume<sup>9+</sup>
2516

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

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

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

**参数:**

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

**示例:**

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

2542
### getMinVolume<sup>9+</sup>
2543

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

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

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

**参数:**

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

**返回值:**

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

**示例:**

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

2570
### getMaxVolume<sup>9+</sup>
W
wangtao 已提交
2571

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

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

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

**参数:**

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

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

2587 2588 2589 2590 2591 2592 2593 2594
```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 已提交
2595 2596
```

2597
### getMaxVolume<sup>9+</sup>
W
wangtao 已提交
2598

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

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

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

**参数:**

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

**返回值:**

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

**示例:**

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

2625
### mute<sup>9+</sup>
2626

2627
mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback&lt;void&gt;): void
2628

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

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

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
2638 2639 2640

**参数:**

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

**示例:**

2649 2650 2651 2652 2653 2654 2655 2656
```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.');
});
2657
```
2658

2659
### mute<sup>9+</sup>
2660

2661
mute(volumeType: AudioVolumeType, mute: boolean): Promise&lt;void&gt;
2662

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

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

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
2672 2673 2674

**参数:**

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

**返回值:**

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

**示例:**

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

2694
### isMute<sup>9+</sup>
2695

2696
isMute(volumeType: AudioVolumeType, callback: AsyncCallback&lt;boolean&gt;): void
2697

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

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

2702
**参数:**
2703

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

**示例:**

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

2721
### isMute<sup>9+</sup>
2722

2723
isMute(volumeType: AudioVolumeType): Promise&lt;boolean&gt;
2724

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

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

2729
**参数:**
2730

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

2735
**返回值:**
2736

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

**示例:**

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

2749
### setRingerMode<sup>9+</sup>
2750

2751
setRingerMode(mode: AudioRingMode, callback: AsyncCallback&lt;void&gt;): void
2752

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

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

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

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

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

2763
**参数:**
2764

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

2770 2771 2772 2773 2774 2775 2776
**示例:**

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

2782
### setRingerMode<sup>9+</sup>
2783

2784
setRingerMode(mode: AudioRingMode): Promise&lt;void&gt;
2785

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

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

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

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

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

2796
**参数:**
2797

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

2802
**返回值:**
2803

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

**示例:**

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

2816
### getRingerMode<sup>9+</sup>
2817

2818
getRingerMode(callback: AsyncCallback&lt;AudioRingMode&gt;): void
2819

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

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

2824
**参数:**
2825

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

**示例:**

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

2842
### getRingerMode<sup>9+</sup>
2843

2844
getRingerMode(): Promise&lt;AudioRingMode&gt;
2845

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

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

2850 2851
**返回值:**

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

**示例:**

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

2864
### on('ringerModeChange')<sup>9+</sup>
2865

2866
on(type: 'ringerModeChange', callback: Callback\<AudioRingMode>): void
2867

2868
监听铃声模式变化事件。
2869

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

2872
**参数:**
2873

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

**错误码:**

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

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

2887
**示例:**
J
jiao_yanlin 已提交
2888 2889

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

2896
setMicrophoneMute(mute: boolean, callback: AsyncCallback&lt;void&gt;): void
2897

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

2900
**需要权限:** ohos.permission.MANAGE_AUDIO_CONFIG
2901

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

2904
**参数:**
2905

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

2911
**示例:**
J
jiao_yanlin 已提交
2912 2913

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

2923
### setMicrophoneMute<sup>9+</sup>
2924

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

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

2929 2930 2931
**需要权限:** ohos.permission.MANAGE_AUDIO_CONFIG

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

2933
**参数:**
2934

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

**返回值:**

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

2945
**示例:**
J
jiao_yanlin 已提交
2946 2947

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

2953
### isMicrophoneMute<sup>9+</sup>
2954

2955
isMicrophoneMute(callback: AsyncCallback&lt;boolean&gt;): void
2956

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

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

2961
**参数:**
2962

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

2967
**示例:**
J
jiao_yanlin 已提交
2968 2969

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

2979
### isMicrophoneMute<sup>9+</sup>
2980

2981
isMicrophoneMute(): Promise&lt;boolean&gt;
2982

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

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

2987
**返回值:**
2988

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

2993
**示例:**
J
jiao_yanlin 已提交
2994 2995

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

3001
### on('micStateChange')<sup>9+</sup>
3002

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

3005
监听系统麦克风状态更改事件。
3006

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

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

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

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

**错误码:**

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

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

3026
**示例:**
J
jiao_yanlin 已提交
3027 3028

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

W
wangzx0705 已提交
3034
### isVolumeUnadjustable<sup>10+</sup>
W
wangzx0705 已提交
3035

W
wangzx0705 已提交
3036
isVolumeUnadjustable(): boolean
W
wangzx0705 已提交
3037

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

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

**返回值:**

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

**示例:**

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

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

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

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

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

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

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

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

**参数:**

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

W
wangzx0705 已提交
3076 3077 3078 3079 3080 3081
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3082 3083
| 6800101 | Invalid parameter error. Return by callback.                     |
| 6800301 | System error. Return by callback.                                |
W
wangzx0705 已提交
3084

W
wangzx0705 已提交
3085 3086 3087
**示例:**

```js
W
wangzx0705 已提交
3088
audioVolumeGroupManager.adjustVolumeByStep(audio.VolumeAdjustType.VOLUME_UP, (err) => {
W
wangzx0705 已提交
3089 3090 3091
  if (err) {
    console.error(`Failed to adjust the volume by step. ${err}`);
    return;
W
wangzx0705 已提交
3092 3093
  } else {
    console.info('Success to adjust the volume by step.');
W
wangzx0705 已提交
3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114
  }
});
```
### 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 已提交
3115
| adjustType | [VolumeAdjustType](#volumeadjusttype10) | 是   | 音量调节方向。                                             |
W
wangzx0705 已提交
3116 3117 3118 3119 3120 3121 3122

**返回值:**

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

W
wangzx0705 已提交
3123 3124 3125 3126 3127 3128
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3129 3130
| 6800101 | Invalid parameter error. Return by promise.                     |
| 6800301 | System error. Return by promise.                                |
W
wangzx0705 已提交
3131

W
wangzx0705 已提交
3132 3133 3134
**示例:**

```js
W
wangzx0705 已提交
3135
audioVolumeGroupManager.adjustVolumeByStep(audio.VolumeAdjustType.VOLUME_UP).then((value) => {
W
wangzx0705 已提交
3136
  console.info('Success to adjust the volume by step.');
W
wangzx0705 已提交
3137
}).catch((error) => {
W
wangzx0705 已提交
3138
  console.error('Fail to adjust the volume by step.');
W
wangzx0705 已提交
3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160
});
```

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

W
wangzx0705 已提交
3164 3165 3166 3167 3168 3169
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3170 3171
| 6800101 | Invalid parameter error. Return by callback.                     |
| 6800301 | System error. Return by callback.                                |
W
wangzx0705 已提交
3172

W
wangzx0705 已提交
3173 3174 3175
**示例:**

```js
W
wangzx0705 已提交
3176
audioVolumeGroupManager.adjustSystemVolumeByStep(audio.AudioVolumeType.MEDIA, audio.VolumeAdjustType.VOLUME_UP, (err) => {
W
wangzx0705 已提交
3177
  if (err) {
W
wangzx0705 已提交
3178 3179 3180
    console.error(`Failed to adjust the system volume by step ${err}`);
  } else {
    console.info('Success to adjust the system volume by step.');
W
wangzx0705 已提交
3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202
  }
});
```
### 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 已提交
3203
| adjustType | [VolumeAdjustType](#volumeadjusttype10) | 是   | 音量调节方向。                                             |
W
wangzx0705 已提交
3204 3205 3206 3207 3208 3209 3210

**返回值:**

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

W
wangzx0705 已提交
3211 3212 3213 3214 3215 3216
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3217 3218
| 6800101 | Invalid parameter error. Return by promise.                     |
| 6800301 | System error. Return by promise.                                |
W
wangzx0705 已提交
3219

W
wangzx0705 已提交
3220 3221 3222
**示例:**

```js
W
wangzx0705 已提交
3223
audioVolumeGroupManager.adjustSystemVolumeByStep(audio.AudioVolumeType.MEDIA, audio.VolumeAdjustType.VOLUME_UP).then((value) => {
W
wangzx0705 已提交
3224
  console.info('Success to adjust the system volume by step.');
W
wangzx0705 已提交
3225
}).catch((error) => {
W
wangzx0705 已提交
3226
  console.error('Fail to adjust the system volume by step.');
W
wangzx0705 已提交
3227 3228 3229 3230 3231 3232 3233
});
```

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

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

W
wangzx0705 已提交
3234
获取音量增益dB值,使用callback方式异步返回结果。
W
wangzx0705 已提交
3235 3236 3237 3238 3239 3240 3241 3242

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

**参数:**

| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
W
wangzx0705 已提交
3243
| volumeLevel | number                         | 是   | 音量等级。                                               |
W
wangzx0705 已提交
3244
| device     | [DeviceType](#devicetype)           | 是   | 设备类型。                                               |
W
wangzx0705 已提交
3245 3246 3247 3248 3249 3250 3251 3252
| callback   | AsyncCallback&lt;number&gt;           | 是   | 回调返回对应的音量增益dB值。                              |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3253 3254
| 6800101 | Invalid parameter error. Return by callback.                     |
| 6800301 | System error. Return by callback.                                |
W
wangzx0705 已提交
3255 3256 3257 3258 3259 3260 3261

**示例:**

```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 已提交
3262 3263
  } else {
    console.info(`Success to get the volume DB. ${dB}`);
W
wangzx0705 已提交
3264 3265 3266 3267 3268 3269 3270
  }
});
```
### getSystemVolumeInDb<sup>10+</sup>

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

W
wangzx0705 已提交
3271
获取音量增益dB值,使用Promise方式异步返回结果。
W
wangzx0705 已提交
3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286

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

**参数:**

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

**返回值:**

| 类型                  | 说明                               |
| --------------------- | ---------------------------------- |
W
wangzx0705 已提交
3287 3288 3289 3290 3291 3292 3293 3294
| Promise&lt;number&gt; | Promise回调返回对应的音量增益dB值。 |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3295 3296
| 6800101 | Invalid parameter error. Return by promise.                     |
| 6800301 | System error. Return by promise.                                |
W
wangzx0705 已提交
3297 3298 3299 3300

**示例:**

```js
W
wangzx0705 已提交
3301 3302
audioVolumeGroupManager.getSystemVolumeInDb(audio.AudioVolumeType.MEDIA, 3, audio.DeviceType.SPEAKER).then((value) => {
  console.info(`Success to get the volume DB. ${value}`);
W
wangzx0705 已提交
3303
}).catch((error) => {
W
wangzx0705 已提交
3304
  console.error(`Fail to adjust the system volume by step. ${error}`);
W
wangzx0705 已提交
3305 3306 3307
});
```

3308
## AudioStreamManager<sup>9+</sup>
3309

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

3312
### getCurrentAudioRendererInfoArray<sup>9+</sup>
3313

3314 3315 3316 3317 3318
getCurrentAudioRendererInfoArray(callback: AsyncCallback&lt;AudioRendererChangeInfoArray&gt;): void

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

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

3320
**参数:**
3321

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

3326
**示例:**
J
jiao_yanlin 已提交
3327 3328

```js
3329 3330
audioStreamManager.getCurrentAudioRendererInfoArray(async (err, AudioRendererChangeInfoArray) => {
  console.info('getCurrentAudioRendererInfoArray **** Get Callback Called ****');
3331
  if (err) {
3332
    console.error(`getCurrentAudioRendererInfoArray :ERROR: ${err}`);
3333
  } else {
3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354
    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 已提交
3355
  }
3356 3357 3358
});
```

3359
### getCurrentAudioRendererInfoArray<sup>9+</sup>
3360

3361
getCurrentAudioRendererInfoArray(): Promise&lt;AudioRendererChangeInfoArray&gt;
3362

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

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

3367
**返回值:**
3368

3369 3370 3371
| 类型                                                                              | 说明                                    |
| ---------------------------------------------------------------------------------| --------------------------------------- |
| Promise<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)>          | Promise对象,返回当前音频渲染器信息。      |
3372 3373 3374 3375

**示例:**

```js
3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403
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}`);
  });
}
3404 3405
```

3406
### getCurrentAudioCapturerInfoArray<sup>9+</sup>
3407

3408
getCurrentAudioCapturerInfoArray(callback: AsyncCallback&lt;AudioCapturerChangeInfoArray&gt;): void
3409

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

3412
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3413 3414 3415

**参数:**

3416 3417 3418
| 参数名        | 类型                                 | 必填      | 说明                                                      |
| ---------- | ----------------------------------- | --------- | -------------------------------------------------------- |
| callback   | AsyncCallback<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | 是    | 回调函数,返回当前音频采集器的信息。 |
3419 3420 3421 3422

**示例:**

```js
3423 3424
audioStreamManager.getCurrentAudioCapturerInfoArray(async (err, AudioCapturerChangeInfoArray) => {
  console.info('getCurrentAudioCapturerInfoArray **** Get Callback Called ****');
3425
  if (err) {
3426
    console.error(`getCurrentAudioCapturerInfoArray :ERROR: ${err}`);
3427
  } else {
3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446
    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}`);
        }
      }
    }
3447 3448 3449 3450
  }
});
```

3451
### getCurrentAudioCapturerInfoArray<sup>9+</sup>
3452

3453
getCurrentAudioCapturerInfoArray(): Promise&lt;AudioCapturerChangeInfoArray&gt;
3454

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

3457
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3458 3459 3460

**返回值:**

3461 3462 3463
| 类型                                                                         | 说明                                 |
| -----------------------------------------------------------------------------| ----------------------------------- |
| Promise<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)>      | Promise对象,返回当前音频渲染器信息。  |
3464 3465 3466 3467

**示例:**

```js
3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493
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}`);
  });
}
3494 3495
```

3496
### on('audioRendererChange')<sup>9+</sup>
3497

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

3500
监听音频渲染器更改事件。
3501

3502
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3503 3504 3505

**参数:**

3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517
| 参数名      | 类型        | 必填      | 说明                                                                     |
| -------- | ---------- | --------- | ------------------------------------------------------------------------ |
| type     | string     | 是        | 事件类型,支持的事件`'audioRendererChange'`:当音频渲染器发生更改时触发。     |
| callback | Callback<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | 是  |  回调函数。        |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
3518 3519 3520 3521

**示例:**

```js
3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541
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}`);
    }
3542
  }
3543
});
3544 3545
```

3546
### off('audioRendererChange')<sup>9+</sup>
3547

3548
off(type: "audioRendererChange"): void
3549

3550
取消监听音频渲染器更改事件。
3551

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

3554
**参数:**
3555

3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566
| 参数名     | 类型     | 必填 | 说明              |
| -------- | ------- | ---- | ---------------- |
| type     | string  | 是   | 事件类型,支持的事件`'audioRendererChange'`:音频渲染器更改事件。 |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
3567 3568 3569 3570

**示例:**

```js
3571 3572
audioStreamManager.off('audioRendererChange');
console.info('######### RendererChange Off is called #########');
3573 3574
```

3575
### on('audioCapturerChange')<sup>9+</sup>
3576

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

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

3581
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
3582 3583 3584

**参数:**

3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596
| 参数名     | 类型     | 必填      | 说明                                                                                           |
| -------- | ------- | --------- | ----------------------------------------------------------------------- |
| type     | string  | 是        | 事件类型,支持的事件`'audioCapturerChange'`:当音频采集器发生更改时触发。     |
| callback | Callback<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | 是     | 回调函数。   |

**错误码:**

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

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

3598 3599 3600
**示例:**

```js
3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619
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}`);
    }
3620 3621 3622 3623
  }
});
```

3624
### off('audioCapturerChange')<sup>9+</sup>
3625

3626
off(type: "audioCapturerChange"): void;
3627

3628
取消监听音频采集器更改事件。
3629

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

3632
**参数:**
3633

3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644
| 参数名       | 类型     | 必填 | 说明                                                          |
| -------- | -------- | --- | ------------------------------------------------------------- |
| type     | string   |是   | 事件类型,支持的事件`'audioCapturerChange'`:音频采集器更改事件。 |

**错误码:**

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

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

3646 3647 3648
**示例:**

```js
3649 3650 3651
audioStreamManager.off('audioCapturerChange');
console.info('######### CapturerChange Off is called #########');

3652 3653
```

3654
### isActive<sup>9+</sup>
3655

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

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

3660
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3661 3662 3663

**参数:**

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

**示例:**

3671
```js
3672 3673 3674 3675
audioStreamManager.isActive(audio.AudioVolumeType.MEDIA, (err, value) => {
  if (err) {
    console.error(`Failed to obtain the active status of the stream. ${err}`);
    return;
3676
  }
3677
  console.info(`Callback invoked to indicate that the active status of the stream is obtained ${value}.`);
3678
});
3679 3680
```

3681
### isActive<sup>9+</sup>
3682

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

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

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

3689 3690 3691 3692 3693 3694
**参数:**

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

3695 3696
**返回值:**

3697 3698 3699
| 类型                   | 说明                                                     |
| ---------------------- | -------------------------------------------------------- |
| Promise&lt;boolean&gt; | Promise回调返回流的活跃状态,true为活跃,false为不活跃。 |
3700 3701 3702 3703

**示例:**

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

X
Xiangyu Li 已提交
3709 3710
### getAudioEffectInfoArray<sup>10+</sup>

3711
getAudioEffectInfoArray(usage: StreamUsage, callback: AsyncCallback&lt;AudioEffectInfoArray&gt;): void
X
Xiangyu Li 已提交
3712 3713 3714 3715 3716 3717 3718 3719 3720

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

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

**参数:**

| 参数名    | 类型                                | 必填     | 说明                         |
| -------- | ----------------------------------- | -------- | --------------------------- |
3721
| usage    | [StreamUsage](#streamusage)                                    | 是     |  音频流使用类型。                |
X
Xiangyu Li 已提交
3722 3723
| callback | AsyncCallback<[AudioEffectInfoArray](#audioeffectinfoarray10)> | 是     |  回调函数,返回当前音效模式的信息。|

3724 3725 3726 3727 3728 3729
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3730
| 6800101 | Invalid parameter error. Return by callback.|
3731

X
Xiangyu Li 已提交
3732 3733 3734
**示例:**

```js
3735
audioStreamManager.getAudioEffectInfoArray(audio.StreamUsage.STREAM_USAGE_MEDIA, async (err, audioEffectInfoArray) => {
X
Xiangyu Li 已提交
3736 3737 3738 3739 3740
  console.info('getAudioEffectInfoArray **** Get Callback Called ****');
  if (err) {
    console.error(`getAudioEffectInfoArray :ERROR: ${err}`);
    return;
  } else {
X
Xiangyu Li 已提交
3741
    console.info(`The effect modes are: ${audioEffectInfoArray}`);
X
Xiangyu Li 已提交
3742 3743 3744 3745 3746 3747
  }
});
```

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

3748
getAudioEffectInfoArray(usage: StreamUsage): Promise&lt;AudioEffectInfoArray&gt;
X
Xiangyu Li 已提交
3749 3750 3751 3752 3753 3754 3755 3756 3757

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

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

**参数:**

| 参数名    | 类型                                | 必填     | 说明                         |
| -------- | ----------------------------------- | -------- | --------------------------- |
Q
update  
Qin Peng 已提交
3758
| usage    | [StreamUsage](#streamusage)         | 是     |  音频流使用类型。               |
X
Xiangyu Li 已提交
3759 3760 3761 3762 3763 3764 3765

**返回值:**

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

3766 3767 3768 3769 3770 3771
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3772
| 6800101 | Invalid parameter error. Return by promise. |
3773

X
Xiangyu Li 已提交
3774 3775 3776
**示例:**

```js
3777
audioStreamManager.getAudioEffectInfoArray(audio.StreamUsage.STREAM_USAGE_MEDIA).then((audioEffectInfoArray) => {
X
Xiangyu Li 已提交
3778
  console.info('getAudioEffectInfoArray ######### Get Promise is called ##########');
X
Xiangyu Li 已提交
3779
  console.info(`The effect modes are: ${audioEffectInfoArray}`);
Q
update  
Qin Peng 已提交
3780 3781 3782
}).catch((err) => {
  console.error(`getAudioEffectInfoArray :ERROR: ${err}`);
});
X
Xiangyu Li 已提交
3783 3784
```

3785
## AudioRoutingManager<sup>9+</sup>
3786

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

3789
### getDevices<sup>9+</sup>
3790

3791 3792 3793 3794 3795
getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback&lt;AudioDeviceDescriptors&gt;): void

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
3796 3797 3798

**参数:**

3799 3800 3801 3802
| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
| deviceFlag | [DeviceFlag](#deviceflag)                                    | 是   | 设备类型的flag。     |
| callback   | AsyncCallback&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | 是   | 回调,返回设备列表。 |
3803 3804 3805 3806

**示例:**

```js
3807 3808 3809 3810 3811 3812
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.');
3813 3814 3815
});
```

3816
### getDevices<sup>9+</sup>
3817

3818
getDevices(deviceFlag: DeviceFlag): Promise&lt;AudioDeviceDescriptors&gt;
3819

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

3822 3823 3824 3825 3826 3827 3828
**系统能力:** SystemCapability.Multimedia.Audio.Device

**参数:**

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

**返回值:**

3832 3833 3834
| 类型                                                         | 说明                      |
| ------------------------------------------------------------ | ------------------------- |
| Promise&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | Promise回调返回设备列表。 |
3835 3836 3837 3838

**示例:**

```js
3839 3840
audioRoutingManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((data) => {
  console.info('Promise returned to indicate that the device list is obtained.');
3841 3842 3843
});
```

3844
### on('deviceChange')<sup>9+</sup>
3845

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

3848
设备更改。音频设备连接状态变化。
3849

3850
**系统能力:** SystemCapability.Multimedia.Audio.Device
3851 3852 3853

**参数:**

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

3860
**错误码:**
3861

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

3864 3865 3866
| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
3867 3868 3869 3870

**示例:**

```js
3871 3872 3873 3874 3875
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);
3876 3877 3878
});
```

3879
### off('deviceChange')<sup>9+</sup>
3880

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

3883
取消订阅音频设备连接变化事件。
3884

3885
**系统能力:** SystemCapability.Multimedia.Audio.Device
3886 3887 3888

**参数:**

3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900
| 参数名   | 类型                                                | 必填 | 说明                                       |
| -------- | --------------------------------------------------- | ---- | ------------------------------------------ |
| type     | string                                              | 是   | 订阅的事件的类型。支持事件:'deviceChange' |
| callback | Callback<[DeviceChangeAction](#devicechangeaction)> | 否   | 获取设备更新详情。                         |

**错误码:**

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

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

3902
**示例:**
3903

3904
```js
W
wangtao 已提交
3905
audioRoutingManager.off('deviceChange');
3906
```
3907

3908
### selectInputDevice<sup>9+</sup>
3909

3910
selectInputDevice(inputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback&lt;void&gt;): void
3911

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

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

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

3918
**参数:**
3919

3920 3921 3922 3923
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| inputAudioDevices           | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输入设备类。               |
| callback                    | AsyncCallback&lt;void&gt;                                    | 是   | 回调,返回选择输入设备结果。 |
3924 3925 3926

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

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

3952
### selectInputDevice<sup>9+</sup>
3953

3954
selectInputDevice(inputAudioDevices: AudioDeviceDescriptors): Promise&lt;void&gt;
3955

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

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

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

**参数:**

3964 3965 3966 3967 3968 3969 3970 3971 3972
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| inputAudioDevices           | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输入设备类。               |

**返回值:**

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

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

3976
```js
3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988
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,
3989
    displayName : "",
3990 3991 3992 3993 3994 3995 3996 3997 3998
}];

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

4001
### setCommunicationDevice<sup>9+</sup>
4002

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

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

4007
**系统能力:** SystemCapability.Multimedia.Audio.Communication
4008

4009
**参数:**
4010

4011 4012 4013 4014 4015
| 参数名     | 类型                                  | 必填 | 说明                     |
| ---------- | ------------------------------------- | ---- | ------------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是   | 音频设备类型。       |
| active     | boolean                               | 是   | 设备激活状态。           |
| callback   | AsyncCallback&lt;void&gt;             | 是   | 回调返回设置成功或失败。 |
4016 4017 4018 4019

**示例:**

```js
4020 4021 4022 4023 4024 4025
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.');
4026
});
4027 4028
```

4029
### setCommunicationDevice<sup>9+</sup>
4030

4031
setCommunicationDevice(deviceType: CommunicationDeviceType, active: boolean): Promise&lt;void&gt;
4032

4033 4034 4035
设置通信设备激活状态,使用Promise方式异步返回结果。

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

4037
**参数:**
4038

4039 4040 4041 4042
| 参数名     | 类型                                                   | 必填 | 说明               |
| ---------- | ----------------------------------------------------- | ---- | ------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9)  | 是   | 活跃音频设备类型。 |
| active     | boolean                                               | 是   | 设备激活状态。     |
4043

4044
**返回值:**
4045

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

4050 4051
**示例:**

J
jiao_yanlin 已提交
4052
```js
4053 4054
audioRoutingManager.setCommunicationDevice(audio.CommunicationDeviceType.SPEAKER, true).then(() => {
  console.info('Promise returned to indicate that the device is set to the active status.');
4055 4056
});
```
4057

4058
### isCommunicationDeviceActive<sup>9+</sup>
4059

4060
isCommunicationDeviceActive(deviceType: CommunicationDeviceType, callback: AsyncCallback&lt;boolean&gt;): void
4061

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

**系统能力:** SystemCapability.Multimedia.Audio.Communication
4065 4066 4067

**参数:**

4068 4069 4070 4071
| 参数名     | 类型                                                  | 必填 | 说明                     |
| ---------- | ---------------------------------------------------- | ---- | ------------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是   | 活跃音频设备类型。       |
| callback   | AsyncCallback&lt;boolean&gt;                         | 是   | 回调返回设备的激活状态。 |
4072 4073 4074 4075

**示例:**

```js
4076 4077 4078 4079
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 已提交
4080
  }
4081
  console.info('Callback invoked to indicate that the active status of the device is obtained.');
4082 4083 4084
});
```

4085
### isCommunicationDeviceActive<sup>9+</sup>
4086

4087
isCommunicationDeviceActive(deviceType: CommunicationDeviceType): Promise&lt;boolean&gt;
4088

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

4091
**系统能力:** SystemCapability.Multimedia.Audio.Communication
4092

4093
**参数:**
4094

4095 4096 4097
| 参数名     | 类型                                                  | 必填 | 说明               |
| ---------- | ---------------------------------------------------- | ---- | ------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是   | 活跃音频设备类型。 |
4098

4099
**返回值:**
4100

4101 4102 4103
| Type                   | Description                     |
| ---------------------- | ------------------------------- |
| Promise&lt;boolean&gt; | Promise回调返回设备的激活状态。 |
4104

4105 4106
**示例:**

J
jiao_yanlin 已提交
4107
```js
4108 4109
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 已提交
4110
});
4111
```
J
jiao_yanlin 已提交
4112

4113
### selectOutputDevice<sup>9+</sup>
4114

4115
selectOutputDevice(outputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback&lt;void&gt;): void
4116

4117 4118 4119 4120 4121
选择音频输出设备,当前只能选择一个输出设备,使用callback方式异步返回结果。

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
4122 4123 4124

**参数:**

4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| 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,
4144
    displayName : "",
4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193
}];

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,
4194
    displayName : "",
4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228
}];

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 已提交
4229 4230
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245
    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,
4246
    displayName : "",
4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287
}];

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 已提交
4288 4289
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304
    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,
4305
    displayName : "",
4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316
}];

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}`);
  })
}
```

4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336
### 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,
4337
    rendererFlags : 0 }
4338 4339 4340 4341

async function getPreferOutputDevice() {
  audioRoutingManager.getPreferOutputDeviceForRendererInfo(rendererInfo, (err, desc) => {
    if (err) {
4342
      console.error(`Result ERROR: ${err}`);
4343
    } else {
4344
      console.info(`device descriptor: ${desc}`);
4345 4346 4347 4348 4349
    }
  });
}
```

4350
### getPreferOutputDeviceForRendererInfo<sup>10+</sup>
4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368
getPreferOutputDeviceForRendererInfo(rendererInfo: AudioRendererInfo): Promise&lt;AudioDeviceDescriptors&gt;

根据音频信息,返回优先级最高的输出设备,使用promise方式异步返回结果。

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

**参数:**

| 参数名                 | 类型                                                         | 必填 | 说明                      |
| ----------------------| ------------------------------------------------------------ | ---- | ------------------------- |
| rendererInfo          | [AudioRendererInfo](#audiorendererinfo8)                     | 是   | 表示渲染器信息。            |

**返回值:**

| 类型                  | 说明                         |
| --------------------- | --------------------------- |
| Promise&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt;   | Promise返回优先级最高的输出设备信息。 |

4369 4370 4371 4372 4373 4374 4375 4376
**错误码:**

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

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

4377 4378 4379 4380 4381 4382
**示例:**

```js
let rendererInfo = {
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4383
    rendererFlags : 0 }
4384 4385 4386

async function getPreferOutputDevice() {
  audioRoutingManager.getPreferOutputDeviceForRendererInfo(rendererInfo).then((desc) => {
4387
    console.info(`device descriptor: ${desc}`);
4388
  }).catch((err) => {
4389
    console.error(`Result ERROR: ${err}`);
4390 4391 4392 4393 4394 4395 4396 4397 4398 4399
  })
}
```

### on('preferOutputDeviceChangeForRendererInfo')<sup>10+</sup>

on(type: 'preferOutputDeviceChangeForRendererInfo', rendererInfo: AudioRendererInfo, callback: Callback<AudioDeviceDescriptors\>): void

订阅最高优先级输出设备变化事件,使用callback获取最高优先级输出设备。

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

4402 4403 4404 4405 4406 4407 4408 4409
**参数:**

| 参数名   | 类型                                                 | 必填 | 说明                                       |
| :------- | :--------------------------------------------------- | :--- | :----------------------------------------- |
| type     | string                                               | 是   | 订阅的事件的类型。支持事件:'preferOutputDeviceChangeForRendererInfo' |
| rendererInfo  | [AudioRendererInfo](#audiorendererinfo8)        | 是   | 表示渲染器信息。              |
| callback | Callback<[AudioDeviceDescriptors](#audiodevicedescriptors)\> | 是   | 获取优先级最高的输出设备信息。                         |

4410 4411 4412 4413 4414 4415 4416 4417
**错误码:**

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

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

4418 4419 4420 4421 4422 4423
**示例:**

```js
let rendererInfo = {
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4424
    rendererFlags : 0 }
4425 4426

audioRoutingManager.on('preferOutputDeviceChangeForRendererInfo', rendererInfo, (desc) => {
4427
  console.info(`device descriptor: ${desc}`);
4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445
});
```

### off('preferOutputDeviceChangeForRendererInfo')<sup>10+</sup>

off(type: 'preferOutputDeviceChangeForRendererInfo', callback?: Callback<AudioDeviceDescriptors\>): void

取消订阅最高优先级输出音频设备变化事件。

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

**参数:**

| 参数名   | 类型                                                | 必填 | 说明                                       |
| -------- | --------------------------------------------------- | ---- | ------------------------------------------ |
| type     | string                                              | 是   | 订阅的事件的类型。支持事件:'preferOutputDeviceChangeForRendererInfo' |
| callback | Callback<[AudioDeviceDescriptors](#audiodevicedescriptors)> | 否   | 监听方法的回调函数。                         |

4446 4447 4448 4449 4450 4451 4452 4453
**错误码:**

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

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

4454 4455 4456
**示例:**

```js
W
wangtao 已提交
4457
audioRoutingManager.off('preferOutputDeviceChangeForRendererInfo');
4458 4459
```

4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477
## 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/>此接口为系统接口。|
4478
| deviceDescriptors  | [AudioDeviceDescriptors](#audiodevicedescriptors)      | 是   | 否   | 音频设备描述。|
4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536

**示例:**

```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/>此接口为系统接口。|
4537
| deviceDescriptors  | [AudioDeviceDescriptors](#audiodevicedescriptors)      | 是   | 否   | 音频设备描述。|
4538 4539 4540 4541

**示例:**

```js
4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570
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 已提交
4571
  }
4572 4573 4574
});
```

4575 4576
## AudioEffectInfoArray<sup>10+</sup>

Q
update  
Qin Peng 已提交
4577
待查询ContentType和StreamUsage组合场景下的音效模式数组类型,[AudioEffectMode](#audioeffectmode10)数组,只读。
4578

4579
## AudioDeviceDescriptors
Z
zengyawen 已提交
4580

4581
设备属性数组类型,为[AudioDeviceDescriptor](#audiodevicedescriptor)的数组,只读。
M
mamingshuai 已提交
4582

4583
## AudioDeviceDescriptor
Z
zengyawen 已提交
4584

4585
描述音频设备。
Z
zengyawen 已提交
4586

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

4589 4590 4591 4592
| 名称                          | 类型                       | 可读 | 可写 | 说明       |
| ----------------------------- | -------------------------- | ---- | ---- | ---------- |
| deviceRole                    | [DeviceRole](#devicerole)  | 是   | 否   | 设备角色。 |
| deviceType                    | [DeviceType](#devicetype)  | 是   | 否   | 设备类型。 |
J
jiao_yanlin 已提交
4593
| id<sup>9+</sup>               | number                     | 是   | 否   | 设备id,唯一。  |
J
jiaoyanlin3 已提交
4594 4595
| name<sup>9+</sup>             | string                     | 是   | 否   | 设备名称。<br>如果是蓝牙设备,需要申请权限ohos.permission.USE_BLUETOOTH。 |
| address<sup>9+</sup>          | string                     | 是   | 否   | 设备地址。<br>如果是蓝牙设备,需要申请权限ohos.permission.USE_BLUETOOTH。 |
4596 4597 4598
| 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 已提交
4599
| displayName<sup>10+</sup>     | string                     | 是   | 否   | 设备显示名。 |
4600 4601 4602
| networkId<sup>9+</sup>        | string                     | 是   | 否   | 设备组网的ID。<br/>此接口为系统接口。 |
| interruptGroupId<sup>9+</sup> | number                     | 是   | 否   | 设备所处的焦点组ID。<br/>此接口为系统接口。 |
| volumeGroupId<sup>9+</sup>    | number                     | 是   | 否   | 设备所处的音量组ID。<br/>此接口为系统接口。 |
Z
zengyawen 已提交
4603

4604 4605 4606
**示例:**

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

4609 4610 4611
function displayDeviceProp(value) {
  deviceRoleValue = value.deviceRole;
  deviceTypeValue = value.deviceType;
4612
}
4613

4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626
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');
  }
});
```
4627

4628
## AudioRendererFilter<sup>9+</sup>
4629

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

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

4634 4635
| 名称          | 类型                                     | 必填 | 说明          |
| -------------| ---------------------------------------- | ---- | -------------- |
4636
| uid          | number                                   |  否  | 表示应用ID。<br> **系统能力:** SystemCapability.Multimedia.Audio.Core|
4637 4638
| rendererInfo | [AudioRendererInfo](#audiorendererinfo8) |  否  | 表示渲染器信息。<br> **系统能力:** SystemCapability.Multimedia.Audio.Renderer|
| rendererId   | number                                   |  否  | 音频流唯一id。<br> **系统能力:** SystemCapability.Multimedia.Audio.Renderer|
4639 4640 4641 4642

**示例:**

```js
4643 4644 4645 4646 4647 4648 4649
let outputAudioRendererFilter = {
  "uid":20010041,
  "rendererInfo": {
    "contentType":audio.ContentType.CONTENT_TYPE_MUSIC,
    "streamUsage":audio.StreamUsage.STREAM_USAGE_MEDIA,
    "rendererFlags":0 },
  "rendererId":0 };
4650 4651
```

4652
## AudioRenderer<sup>8+</sup>
Z
zengyawen 已提交
4653

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

4656
### 属性
Z
zengyawen 已提交
4657

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

4660 4661 4662
| 名称  | 类型                     | 可读 | 可写 | 说明               |
| ----- | -------------------------- | ---- | ---- | ------------------ |
| state<sup>8+</sup> | [AudioState](#audiostate8) | 是   | 否   | 音频渲染器的状态。 |
Z
zengyawen 已提交
4663 4664 4665

**示例:**

J
jiao_yanlin 已提交
4666
```js
4667
let state = audioRenderer.state;
Z
zengyawen 已提交
4668 4669
```

4670
### getRendererInfo<sup>8+</sup>
Z
zengyawen 已提交
4671

4672
getRendererInfo(callback: AsyncCallback<AudioRendererInfo\>): void
Z
zengyawen 已提交
4673

4674
获取当前被创建的音频渲染器的信息,使用callback方式异步返回结果。
Z
zengyawen 已提交
4675

4676
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4677 4678 4679

**参数:**

4680 4681 4682
| 参数名   | 类型                                                     | 必填 | 说明                   |
| :------- | :------------------------------------------------------- | :--- | :--------------------- |
| callback | AsyncCallback<[AudioRendererInfo](#audiorendererinfo8)\> | 是   | 返回音频渲染器的信息。 |
Z
zengyawen 已提交
4683 4684 4685

**示例:**

J
jiao_yanlin 已提交
4686
```js
4687 4688 4689 4690 4691
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 已提交
4692
});
Z
zengyawen 已提交
4693 4694
```

4695
### getRendererInfo<sup>8+</sup>
Z
zengyawen 已提交
4696

4697
getRendererInfo(): Promise<AudioRendererInfo\>
Z
zengyawen 已提交
4698

4699
获取当前被创建的音频渲染器的信息,使用Promise方式异步返回结果。
Z
zengyawen 已提交
4700

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

4703
**返回值:**
Z
zengyawen 已提交
4704

4705 4706 4707
| 类型                                               | 说明                            |
| -------------------------------------------------- | ------------------------------- |
| Promise<[AudioRendererInfo](#audiorendererinfo8)\> | Promise用于返回音频渲染器信息。 |
Z
zengyawen 已提交
4708 4709 4710

**示例:**

J
jiao_yanlin 已提交
4711
```js
4712 4713 4714 4715 4716 4717 4718 4719
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 已提交
4720 4721
```

4722
### getStreamInfo<sup>8+</sup>
Z
zengyawen 已提交
4723

4724
getStreamInfo(callback: AsyncCallback<AudioStreamInfo\>): void
Z
zengyawen 已提交
4725

4726
获取音频流信息,使用callback方式异步返回结果。
Z
zengyawen 已提交
4727

4728
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4729 4730 4731

**参数:**

4732 4733 4734
| 参数名   | 类型                                                 | 必填 | 说明                 |
| :------- | :--------------------------------------------------- | :--- | :------------------- |
| callback | AsyncCallback<[AudioStreamInfo](#audiostreaminfo8)\> | 是   | 回调返回音频流信息。 |
Z
zengyawen 已提交
4735 4736 4737

**示例:**

J
jiao_yanlin 已提交
4738
```js
4739 4740 4741 4742 4743 4744
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 已提交
4745
});
Z
zengyawen 已提交
4746 4747
```

4748
### getStreamInfo<sup>8+</sup>
Z
zengyawen 已提交
4749

4750
getStreamInfo(): Promise<AudioStreamInfo\>
Z
zengyawen 已提交
4751

4752
获取音频流信息,使用Promise方式异步返回结果。
Z
zengyawen 已提交
4753

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

4756 4757 4758 4759 4760
**返回值:**

| 类型                                           | 说明                   |
| :--------------------------------------------- | :--------------------- |
| Promise<[AudioStreamInfo](#audiostreaminfo8)\> | Promise返回音频流信息. |
Z
zengyawen 已提交
4761 4762 4763

**示例:**

J
jiao_yanlin 已提交
4764
```js
4765 4766 4767 4768 4769 4770 4771 4772 4773
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 已提交
4774 4775
```

4776
### getAudioStreamId<sup>9+</sup>
4777

4778
getAudioStreamId(callback: AsyncCallback<number\>): void
4779

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

4782
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
4783 4784 4785

**参数:**

4786 4787 4788
| 参数名   | 类型                                                 | 必填 | 说明                 |
| :------- | :--------------------------------------------------- | :--- | :------------------- |
| callback | AsyncCallback<number\> | 是   | 回调返回音频流id。 |
4789 4790 4791 4792

**示例:**

```js
4793 4794
audioRenderer.getAudioStreamId((err, streamid) => {
  console.info(`Renderer GetStreamId: ${streamid}`);
4795 4796 4797
});
```

4798
### getAudioStreamId<sup>9+</sup>
4799

4800
getAudioStreamId(): Promise<number\>
4801

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

4804
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
4805 4806 4807

**返回值:**

4808 4809 4810
| 类型                                           | 说明                   |
| :--------------------------------------------- | :--------------------- |
| Promise<number\> | Promise返回音频流id。 |
4811 4812 4813 4814

**示例:**

```js
4815 4816
audioRenderer.getAudioStreamId().then((streamid) => {
  console.info(`Renderer getAudioStreamId: ${streamid}`);
4817
}).catch((err) => {
4818
  console.error(`ERROR: ${err}`);
4819 4820 4821
});
```

Q
Qin Peng 已提交
4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833
### setAudioEffectMode<sup>10+</sup>

setAudioEffectMode(mode: AudioEffectMode, callback: AsyncCallback\<void>): void

设置当前音效模式。使用callback方式异步返回结果。

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

**参数:**

| 参数名   | 类型                                     | 必填 | 说明                     |
| -------- | ---------------------------------------- | ---- | ------------------------ |
Q
update  
Qin Peng 已提交
4834 4835
| mode     | [AudioEffectMode](#audioeffectmode10)    | 是   | 音效模式。               |
| callback | AsyncCallback\<void>                     | 是   | 用于返回执行结果的回调。  |
Q
Qin Peng 已提交
4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860

**示例:**

```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 已提交
4861
| mode   | [AudioEffectMode](#audioeffectmode10)   | 是   | 音效模式。 |
Q
Qin Peng 已提交
4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896

**返回值:**

| 类型           | 说明                      |
| -------------- | ------------------------- |
| 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 已提交
4897 4898 4899 4900 4901
  if (err) {
    console.error('Failed to get params');
  } else {
    console.info(`getAudioEffectMode: ${effectmode}`);
  }
Q
Qin Peng 已提交
4902 4903 4904
});
```

Q
update  
Qin Peng 已提交
4905
### getAudioEffectMode<sup>10+</sup>
Q
Qin Peng 已提交
4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928

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}`);
});
```

4929
### start<sup>8+</sup>
Z
zengyawen 已提交
4930

4931
start(callback: AsyncCallback<void\>): void
Z
zengyawen 已提交
4932

4933
启动音频渲染器。使用callback方式异步返回结果。
Z
zengyawen 已提交
4934

4935
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4936 4937 4938

**参数:**

4939 4940 4941
| 参数名   | 类型                 | 必填 | 说明       |
| -------- | -------------------- | ---- | ---------- |
| callback | AsyncCallback\<void> | 是   | 回调函数。 |
Z
zengyawen 已提交
4942 4943 4944

**示例:**

J
jiao_yanlin 已提交
4945
```js
4946
audioRenderer.start((err) => {
J
jiao_yanlin 已提交
4947
  if (err) {
4948
    console.error('Renderer start failed.');
J
jiao_yanlin 已提交
4949
  } else {
4950
    console.info('Renderer start success.');
J
jiao_yanlin 已提交
4951
  }
L
lwx1059628 已提交
4952
});
Z
zengyawen 已提交
4953 4954
```

4955
### start<sup>8+</sup>
Z
zengyawen 已提交
4956

4957
start(): Promise<void\>
Z
zengyawen 已提交
4958

4959
启动音频渲染器。使用Promise方式异步返回结果。
Z
zengyawen 已提交
4960

4961
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4962 4963 4964

**返回值:**

4965 4966 4967
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
4968 4969 4970

**示例:**

J
jiao_yanlin 已提交
4971
```js
4972 4973
audioRenderer.start().then(() => {
  console.info('Renderer started');
L
lwx1059628 已提交
4974
}).catch((err) => {
4975
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
4976
});
Z
zengyawen 已提交
4977 4978
```

4979
### pause<sup>8+</sup>
Z
zengyawen 已提交
4980

4981
pause(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
4982

4983
暂停渲染。使用callback方式异步返回结果。
Z
zengyawen 已提交
4984

4985
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4986 4987 4988

**参数:**

4989 4990 4991
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
4992 4993 4994

**示例:**

J
jiao_yanlin 已提交
4995
```js
4996 4997 4998 4999 5000 5001
audioRenderer.pause((err) => {
  if (err) {
    console.error('Renderer pause failed');
  } else {
    console.info('Renderer paused.');
  }
L
lwx1059628 已提交
5002
});
Z
zengyawen 已提交
5003 5004
```

5005
### pause<sup>8+</sup>
Z
zengyawen 已提交
5006

5007
pause(): Promise\<void>
Z
zengyawen 已提交
5008

5009
暂停渲染。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5010

5011
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5012 5013 5014

**返回值:**

5015 5016 5017
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
5018 5019 5020

**示例:**

J
jiao_yanlin 已提交
5021
```js
5022 5023
audioRenderer.pause().then(() => {
  console.info('Renderer paused');
L
lwx1059628 已提交
5024
}).catch((err) => {
5025
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5026
});
Z
zengyawen 已提交
5027 5028
```

5029
### drain<sup>8+</sup>
Z
zengyawen 已提交
5030

5031
drain(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5032

5033
检查缓冲区是否已被耗尽。使用callback方式异步返回结果。
Z
zengyawen 已提交
5034

5035
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5036 5037 5038

**参数:**

5039 5040 5041
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
5042 5043 5044

**示例:**

J
jiao_yanlin 已提交
5045
```js
5046
audioRenderer.drain((err) => {
J
jiao_yanlin 已提交
5047
  if (err) {
5048
    console.error('Renderer drain failed');
J
jiao_yanlin 已提交
5049
  } else {
5050
    console.info('Renderer drained.');
J
jiao_yanlin 已提交
5051
  }
L
lwx1059628 已提交
5052
});
Z
zengyawen 已提交
5053 5054
```

5055
### drain<sup>8+</sup>
Z
zengyawen 已提交
5056

5057
drain(): Promise\<void>
Z
zengyawen 已提交
5058

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

5061
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5062 5063 5064

**返回值:**

5065 5066 5067
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
5068 5069 5070

**示例:**

J
jiao_yanlin 已提交
5071
```js
5072 5073
audioRenderer.drain().then(() => {
  console.info('Renderer drained successfully');
L
lwx1059628 已提交
5074
}).catch((err) => {
5075
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5076
});
Z
zengyawen 已提交
5077 5078 5079 5080
```

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

5081
stop(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5082

5083
停止渲染。使用callback方式异步返回结果。
Z
zengyawen 已提交
5084

5085
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5086 5087 5088

**参数:**

5089 5090 5091
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
5092 5093 5094

**示例:**

J
jiao_yanlin 已提交
5095
```js
5096
audioRenderer.stop((err) => {
J
jiao_yanlin 已提交
5097
  if (err) {
5098
    console.error('Renderer stop failed');
J
jiao_yanlin 已提交
5099
  } else {
5100
    console.info('Renderer stopped.');
J
jiao_yanlin 已提交
5101
  }
L
lwx1059628 已提交
5102
});
Z
zengyawen 已提交
5103 5104 5105 5106
```

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

5107
stop(): Promise\<void>
Z
zengyawen 已提交
5108

5109
停止渲染。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5110

5111
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5112 5113 5114

**返回值:**

5115 5116 5117
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
5118

5119 5120 5121 5122 5123
**示例:**

```js
audioRenderer.stop().then(() => {
  console.info('Renderer stopped successfully');
L
lwx1059628 已提交
5124
}).catch((err) => {
5125
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5126
});
Z
zengyawen 已提交
5127 5128 5129 5130
```

### release<sup>8+</sup>

5131
release(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5132

5133
释放音频渲染器。使用callback方式异步返回结果。
Z
zengyawen 已提交
5134

5135
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5136 5137 5138

**参数:**

5139 5140 5141
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
5142 5143 5144

**示例:**

J
jiao_yanlin 已提交
5145
```js
5146
audioRenderer.release((err) => {
J
jiao_yanlin 已提交
5147
  if (err) {
5148
    console.error('Renderer release failed');
J
jiao_yanlin 已提交
5149
  } else {
5150
    console.info('Renderer released.');
J
jiao_yanlin 已提交
5151
  }
L
lwx1059628 已提交
5152
});
Z
zengyawen 已提交
5153 5154 5155 5156
```

### release<sup>8+</sup>

5157
release(): Promise\<void>
Z
zengyawen 已提交
5158

5159
释放渲染器。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5160

5161
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5162 5163 5164

**返回值:**

5165 5166 5167
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
5168 5169 5170

**示例:**

J
jiao_yanlin 已提交
5171
```js
5172 5173
audioRenderer.release().then(() => {
  console.info('Renderer released successfully');
L
lwx1059628 已提交
5174
}).catch((err) => {
5175
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5176
});
Z
zengyawen 已提交
5177 5178
```

5179
### write<sup>8+</sup>
Z
zengyawen 已提交
5180

5181
write(buffer: ArrayBuffer, callback: AsyncCallback\<number>): void
Z
zengyawen 已提交
5182

5183
写入缓冲区。使用callback方式异步返回结果。
Z
zengyawen 已提交
5184

5185
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5186 5187 5188

**参数:**

5189 5190 5191 5192
| 参数名   | 类型                   | 必填 | 说明                                                |
| -------- | ---------------------- | ---- | --------------------------------------------------- |
| buffer   | ArrayBuffer            | 是   | 要写入缓冲区的数据。                                |
| callback | AsyncCallback\<number> | 是   | 回调如果成功,返回写入的字节数,否则返回errorcode。 |
Z
zengyawen 已提交
5193 5194 5195

**示例:**

J
jiao_yanlin 已提交
5196
```js
J
jiao_yanlin 已提交
5197
let bufferSize;
5198 5199
audioRenderer.getBufferSize().then((data)=> {
  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
J
jiao_yanlin 已提交
5200 5201
  bufferSize = data;
  }).catch((err) => {
5202
  console.error(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
J
jiao_yanlin 已提交
5203
  });
5204 5205 5206 5207 5208 5209 5210
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';
5211
let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY);
5212 5213 5214 5215
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++) {
5216
    let options = {
J
jiao_yanlin 已提交
5217 5218
      offset: i * bufferSize,
      length: bufferSize
5219 5220 5221
    }
    let readsize = await fs.read(file.fd, buf, options)
    let writeSize = await new Promise((resolve,reject)=>{
J
jiao_yanlin 已提交
5222
      audioRenderer.write(buf,(err,writeSize)=>{
5223 5224 5225 5226 5227 5228 5229
        if(err){
          reject(err)
        }else{
          resolve(writeSize)
        }
      })
    })	  
5230 5231 5232
  }
});

5233

Z
zengyawen 已提交
5234 5235
```

5236
### write<sup>8+</sup>
Z
zengyawen 已提交
5237

5238
write(buffer: ArrayBuffer): Promise\<number>
5239

5240
写入缓冲区。使用Promise方式异步返回结果。
5241

5242
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5243 5244 5245

**返回值:**

5246 5247 5248
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
| Promise\<number> | Promise返回结果,如果成功,返回写入的字节数,否则返回errorcode。 |
Z
zengyawen 已提交
5249 5250 5251

**示例:**

J
jiao_yanlin 已提交
5252
```js
J
jiao_yanlin 已提交
5253
let bufferSize;
5254 5255
audioRenderer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
J
jiao_yanlin 已提交
5256 5257
  bufferSize = data;
  }).catch((err) => {
5258
  console.info(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
J
jiao_yanlin 已提交
5259
  });
5260 5261 5262 5263 5264 5265 5266
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';
5267
let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY);
5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283
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 已提交
5284 5285 5286 5287
```

### getAudioTime<sup>8+</sup>

5288
getAudioTime(callback: AsyncCallback\<number>): void
Z
zengyawen 已提交
5289

5290
获取时间戳(从 1970 年 1 月 1 日开始)。使用callback方式异步返回结果。
Z
zengyawen 已提交
5291

5292
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5293 5294 5295

**参数:**

5296 5297 5298
| 参数名   | 类型                   | 必填 | 说明             |
| -------- | ---------------------- | ---- | ---------------- |
| callback | AsyncCallback\<number> | 是   | 回调返回时间戳。 |
Z
zengyawen 已提交
5299 5300 5301

**示例:**

J
jiao_yanlin 已提交
5302
```js
5303
audioRenderer.getAudioTime((err, timestamp) => {
5304
  console.info(`Current timestamp: ${timestamp}`);
L
lwx1059628 已提交
5305
});
Z
zengyawen 已提交
5306 5307 5308 5309
```

### getAudioTime<sup>8+</sup>

5310
getAudioTime(): Promise\<number>
Z
zengyawen 已提交
5311

5312
获取时间戳(从 1970 年 1 月 1 日开始)。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5313

5314
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5315 5316 5317

**返回值:**

5318 5319 5320
| 类型             | 描述                    |
| ---------------- | ----------------------- |
| Promise\<number> | Promise回调返回时间戳。 |
Z
zengyawen 已提交
5321 5322 5323

**示例:**

J
jiao_yanlin 已提交
5324
```js
5325 5326
audioRenderer.getAudioTime().then((timestamp) => {
  console.info(`Current timestamp: ${timestamp}`);
L
lwx1059628 已提交
5327
}).catch((err) => {
5328
  console.error(`ERROR: ${err}`);
5329 5330 5331 5332 5333
});
```

### getBufferSize<sup>8+</sup>

5334
getBufferSize(callback: AsyncCallback\<number>): void
5335

5336
获取音频渲染器的最小缓冲区大小。使用callback方式异步返回结果。
5337

5338
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
5339 5340 5341

**参数:**

5342 5343 5344
| 参数名   | 类型                   | 必填 | 说明                 |
| -------- | ---------------------- | ---- | -------------------- |
| callback | AsyncCallback\<number> | 是   | 回调返回缓冲区大小。 |
5345 5346 5347 5348

**示例:**

```js
5349 5350 5351
let bufferSize = audioRenderer.getBufferSize(async(err, bufferSize) => {
  if (err) {
    console.error('getBufferSize error');
5352 5353 5354 5355 5356 5357
  }
});
```

### getBufferSize<sup>8+</sup>

5358
getBufferSize(): Promise\<number>
5359

5360
获取音频渲染器的最小缓冲区大小。使用Promise方式异步返回结果。
5361

5362
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
5363 5364 5365

**返回值:**

5366 5367 5368
| 类型             | 说明                        |
| ---------------- | --------------------------- |
| Promise\<number> | promise回调返回缓冲区大小。 |
5369 5370 5371 5372 5373

**示例:**

```js
let bufferSize;
5374 5375
audioRenderer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
5376 5377
  bufferSize = data;
}).catch((err) => {
5378
  console.error(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
L
lwx1059628 已提交
5379
});
Z
zengyawen 已提交
5380 5381
```

5382
### setRenderRate<sup>8+</sup>
Z
zengyawen 已提交
5383

5384
setRenderRate(rate: AudioRendererRate, callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5385

5386
设置音频渲染速率。使用callback方式异步返回结果。
Z
zengyawen 已提交
5387

5388
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5389 5390 5391

**参数:**

5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427
| 参数名   | 类型                                     | 必填 | 说明                     |
| -------- | ---------------------------------------- | ---- | ------------------------ |
| 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 已提交
5428 5429 5430

**示例:**

J
jiao_yanlin 已提交
5431
```js
5432 5433 5434 5435
audioRenderer.setRenderRate(audio.AudioRendererRate.RENDER_RATE_NORMAL).then(() => {
  console.info('setRenderRate SUCCESS');
}).catch((err) => {
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5436
});
Z
zengyawen 已提交
5437 5438
```

5439
### getRenderRate<sup>8+</sup>
Z
zengyawen 已提交
5440

5441
getRenderRate(callback: AsyncCallback\<AudioRendererRate>): void
Z
zengyawen 已提交
5442

5443
获取当前渲染速率。使用callback方式异步返回结果。
Z
zengyawen 已提交
5444

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

5447
**参数:**
Z
zengyawen 已提交
5448

5449 5450 5451
| 参数名   | 类型                                                    | 必填 | 说明               |
| -------- | ------------------------------------------------------- | ---- | ------------------ |
| callback | AsyncCallback<[AudioRendererRate](#audiorendererrate8)> | 是   | 回调返回渲染速率。 |
Z
zengyawen 已提交
5452 5453 5454

**示例:**

J
jiao_yanlin 已提交
5455
```js
5456 5457 5458
audioRenderer.getRenderRate((err, renderrate) => {
  console.info(`getRenderRate: ${renderrate}`);
});
Z
zengyawen 已提交
5459 5460
```

5461
### getRenderRate<sup>8+</sup>
Z
zengyawen 已提交
5462

5463
getRenderRate(): Promise\<AudioRendererRate>
Z
zengyawen 已提交
5464

5465
获取当前渲染速率。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5466

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

5469
**返回值:**
Z
zengyawen 已提交
5470

5471 5472 5473
| 类型                                              | 说明                      |
| ------------------------------------------------- | ------------------------- |
| Promise<[AudioRendererRate](#audiorendererrate8)> | Promise回调返回渲染速率。 |
Z
zengyawen 已提交
5474 5475 5476

**示例:**

J
jiao_yanlin 已提交
5477
```js
5478 5479 5480 5481
audioRenderer.getRenderRate().then((renderRate) => {
  console.info(`getRenderRate: ${renderRate}`);
}).catch((err) => {
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5482
});
Z
zengyawen 已提交
5483
```
5484
### setInterruptMode<sup>9+</sup>
Z
zengyawen 已提交
5485

5486
setInterruptMode(mode: InterruptMode): Promise&lt;void&gt;
Z
zengyawen 已提交
5487

5488
设置应用的焦点模型。使用Promise异步回调。
Z
zengyawen 已提交
5489

5490
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
Z
zengyawen 已提交
5491 5492 5493

**参数:**

5494 5495 5496 5497 5498 5499 5500 5501 5502
| 参数名     | 类型                                | 必填   | 说明        |
| ---------- | ---------------------------------- | ------ | ---------- |
| mode       | [InterruptMode](#interruptmode9)    | 是     | 焦点模型。  |

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | 以Promise对象返回结果,设置成功时返回undefined,否则返回error。 |
Z
zengyawen 已提交
5503 5504 5505

**示例:**

J
jiao_yanlin 已提交
5506
```js
5507 5508 5509 5510 5511 5512
let mode = 0;
audioRenderer.setInterruptMode(mode).then(data=>{
  console.info('setInterruptMode Success!');
}).catch((err) => {
  console.error(`setInterruptMode Fail: ${err}`);
});
Z
zengyawen 已提交
5513
```
5514
### setInterruptMode<sup>9+</sup>
Z
zengyawen 已提交
5515

5516
setInterruptMode(mode: InterruptMode, callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5517

5518
设置应用的焦点模型。使用Callback回调返回执行结果。
Z
zengyawen 已提交
5519

5520
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
Z
zengyawen 已提交
5521 5522 5523

**参数:**

5524 5525 5526 5527
| 参数名   | 类型                                | 必填   | 说明            |
| ------- | ----------------------------------- | ------ | -------------- |
|mode     | [InterruptMode](#interruptmode9)     | 是     | 焦点模型。|
|callback | AsyncCallback\<void>                 | 是     |回调返回执行结果。|
Z
zengyawen 已提交
5528 5529 5530

**示例:**

J
jiao_yanlin 已提交
5531
```js
5532 5533 5534 5535
let mode = 1;
audioRenderer.setInterruptMode(mode, (err, data)=>{
  if(err){
    console.error(`setInterruptMode Fail: ${err}`);
5536
  }
5537
  console.info('setInterruptMode Success!');
L
lwx1059628 已提交
5538
});
Z
zengyawen 已提交
5539 5540
```

5541
### setVolume<sup>9+</sup>
Z
zengyawen 已提交
5542

5543
setVolume(volume: number): Promise&lt;void&gt;
Z
zengyawen 已提交
5544

5545
设置应用的音量。使用Promise异步回调。
5546

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

5549
**参数:**
Z
zengyawen 已提交
5550

5551 5552 5553
| 参数名     | 类型    | 必填   | 说明                 |
| ---------- | ------- | ------ | ------------------- |
| volume     | number  | 是     | 音量值范围为0.0-1.0。 |
Z
zengyawen 已提交
5554

5555
**返回值:**
5556

5557 5558 5559
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | 以Promise对象返回结果,设置成功时返回undefined,否则返回error。 |
5560

5561
**示例:**
5562

5563
```js
5564
audioRenderer.setVolume(0.5).then(data=>{
5565 5566 5567 5568 5569 5570
  console.info('setVolume Success!');
}).catch((err) => {
  console.error(`setVolume Fail: ${err}`);
});
```
### setVolume<sup>9+</sup>
5571

5572
setVolume(volume: number, callback: AsyncCallback\<void>): void
5573

5574
设置应用的音量。使用Callback回调返回执行结果。
5575

5576
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
5577 5578 5579

**参数:**

5580 5581 5582
| 参数名  | 类型       | 必填   | 说明                 |
| ------- | -----------| ------ | ------------------- |
|volume   | number     | 是     | 音量值范围为0.0-1.0。 |
5583
|callback | AsyncCallback\<void> | 是     |回调返回执行结果。|
Z
zengyawen 已提交
5584 5585 5586

**示例:**

J
jiao_yanlin 已提交
5587
```js
5588
audioRenderer.setVolume(0.5, (err, data)=>{
5589 5590
  if(err){
    console.error(`setVolume Fail: ${err}`);
5591
  }
5592
  console.info('setVolume Success!');
L
lwx1059628 已提交
5593
});
Z
zengyawen 已提交
5594
```
5595

W
wangzx0705 已提交
5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607
### getMinStreamVolume<sup>10+</sup>

getMinStreamVolume(callback: AsyncCallback&lt;number&gt;): void

获取应用基于音频流的最小音量。使用Callback回调返回。

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

**参数:**

| 参数名  | 类型       | 必填   | 说明                 |
| ------- | -----------| ------ | ------------------- |
W
wangzx0705 已提交
5608
|callback |AsyncCallback&lt;number&gt; | 是     |Callback回调返回音频流最小音量(音量范围0-1)。|
W
wangzx0705 已提交
5609 5610 5611 5612

**示例:**

```js
W
wangzx0705 已提交
5613
audioRenderer.getMinStreamVolume((err, minVolume) => {
W
wangzx0705 已提交
5614 5615 5616 5617
  if (err) {
    console.error(`getMinStreamVolume error: ${err}`);
  } else {
    console.info(`getMinStreamVolume Success! ${minVolume}`);
W
wangzx0705 已提交
5618 5619 5620 5621 5622 5623 5624
  }
});
```
### getMinStreamVolume<sup>10+</sup>

getMinStreamVolume(): Promise&lt;number&gt;

W
wangzx0705 已提交
5625
获取应用基于音频流的最小音量。使用Promise异步回调。
W
wangzx0705 已提交
5626 5627 5628 5629 5630 5631 5632

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
W
wangzx0705 已提交
5633
| Promise&lt;number&gt;| Promise回调返回音频流最小音量(音量范围0-1)。|
W
wangzx0705 已提交
5634 5635 5636 5637

**示例:**

```js
W
wangzx0705 已提交
5638
audioRenderer.getMinStreamVolume().then((value) => {
W
wangzx0705 已提交
5639
  console.info(`Get min stream volume Success! ${value}`);
W
wangzx0705 已提交
5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656
}).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 已提交
5657
|callback | AsyncCallback&lt;number&gt; | 是     |Callback回调返回音频流最大音量(音量范围0-1)。|
W
wangzx0705 已提交
5658 5659 5660 5661

**示例:**

```js
W
wangzx0705 已提交
5662
audioRenderer.getMaxStreamVolume((err, maxVolume) => {
W
wangzx0705 已提交
5663 5664 5665 5666
  if (err) {
    console.error(`getMaxStreamVolume Fail: ${err}`);
  } else {
    console.info(`getMaxStreamVolume Success! ${maxVolume}`);
W
wangzx0705 已提交
5667 5668 5669 5670 5671 5672 5673
  }
});
```
### getMaxStreamVolume<sup>10+</sup>

getMaxStreamVolume(): Promise&lt;number&gt;

W
wangzx0705 已提交
5674
获取应用基于音频流的最大音量。使用Promise异步回调。
W
wangzx0705 已提交
5675 5676 5677 5678 5679 5680 5681

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
W
wangzx0705 已提交
5682
| Promise&lt;number&gt;| Promise回调返回音频流最大音量(音量范围0-1)。|
W
wangzx0705 已提交
5683 5684 5685 5686

**示例:**

```js
W
wangzx0705 已提交
5687
audioRenderer.getMaxStreamVolume().then((value) => {
W
wangzx0705 已提交
5688
  console.info(`Get max stream volume Success! ${value}`);
W
wangzx0705 已提交
5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710
}).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 已提交
5711
audioRenderer.getUnderflowCount((err, underflowCount) => {
W
wangzx0705 已提交
5712 5713 5714 5715
  if (err) {
    console.error(`getUnderflowCount Fail: ${err}`);
  } else {
    console.info(`getUnderflowCount Success! ${underflowCount}`);
W
wangzx0705 已提交
5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735
  }
});
```
### getUnderflowCount<sup>10+</sup>

getUnderflowCount(): Promise&lt;number&gt;

获取当前播放音频流的欠载音频帧数量。使用Promise异步回调。

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;number&gt;| Promise回调返回音频流的欠载音频帧数量。|

**示例:**

```js
W
wangzx0705 已提交
5736
audioRenderer.getUnderflowCount().then((value) => {
W
wangzx0705 已提交
5737
  console.info(`Get underflow count Success! ${value}`);
W
wangzx0705 已提交
5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759
}).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 已提交
5760
audioRenderer.getCurrentOutputDevices((err, deviceInfo) => {
W
wangzx0705 已提交
5761
  if (err) {
W
wangzx0705 已提交
5762
    console.error(`getCurrentOutputDevices Fail: ${err}`);
W
wangzx0705 已提交
5763
  } else {
W
wangzx0705 已提交
5764 5765 5766 5767 5768 5769 5770 5771
    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 已提交
5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786
  }
});
```
### getCurrentOutputDevices<sup>10+</sup>

getCurrentOutputDevices(): Promise&lt;AudioDeviceDescriptors&gt;

获取音频流输出设备描述符。使用Promise异步回调。

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
W
wangzx0705 已提交
5787
| Promise&lt;AudioDeviceDescriptors&gt;| Promise回调返回音频流的输出设备描述信息 |
W
wangzx0705 已提交
5788 5789 5790 5791

**示例:**

```js
W
wangzx0705 已提交
5792
audioRenderer.getCurrentOutputDevices().then((deviceInfo) => {
W
wangzx0705 已提交
5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805
  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}`);
});
```

5806
### on('audioInterrupt')<sup>9+</sup>
5807

5808
on(type: 'audioInterrupt', callback: Callback\<InterruptEvent>): void
5809

5810
监听音频中断事件。使用callback获取中断事件。
5811

J
jiaoyanlin3 已提交
5812
[on('interrupt')](#oninterrupt)一致,均用于监听焦点变化。AudioRenderer对象在start事件发生时会主动获取焦点,在pause、stop等事件发生时会主动释放焦点,不需要开发者主动发起获取焦点或释放焦点的申请。
5813

5814
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
5815 5816 5817

**参数:**

5818 5819
| 参数名   | 类型                                         | 必填 | 说明                                                         |
| -------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
5820 5821
| type     | string                                       | 是   | 事件回调类型,支持的事件为:'audioInterrupt'(中断事件被触发,音频渲染被中断。) |
| callback | Callback\<[InterruptEvent](#interruptevent9)\> | 是   | 被监听的中断事件的回调。                                     |
5822

5823
**错误码:**
5824

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

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

**示例:**
Z
zengyawen 已提交
5832

J
jiao_yanlin 已提交
5833
```js
5834 5835
let isPlaying; // 标识符,表示是否正在渲染
let isDucked; // 标识符,表示是否被降低音量
5836 5837 5838 5839 5840
onAudioInterrupt();

async function onAudioInterrupt(){
  audioRenderer.on('audioInterrupt', async(interruptEvent) => {
    if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_FORCE) {
5841
      // 由系统进行操作,强制打断音频渲染,应用需更新自身状态及显示内容等
5842 5843
      switch (interruptEvent.hintType) {
        case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
5844 5845 5846
          // 音频流已被暂停,临时失去焦点,待可重获焦点时会收到resume对应的interruptEvent
          console.info('Force paused. Update playing status and stop writing');
          isPlaying = false; // 简化处理,代表应用切换至暂停状态的若干操作
5847 5848
          break;
        case audio.InterruptHint.INTERRUPT_HINT_STOP:
5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864
          // 音频流已被停止,永久失去焦点,若想恢复渲染,需用户主动触发
          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');
5865 5866 5867
          break;
      }
    } else if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_SHARE) {
5868
      // 由应用进行操作,应用可以自主选择打断或忽略
5869 5870
      switch (interruptEvent.hintType) {
        case audio.InterruptHint.INTERRUPT_HINT_RESUME:
5871
          // 建议应用继续渲染(说明音频流此前被强制暂停,临时失去焦点,现在可以恢复渲染)
5872
          console.info('Resume force paused renderer or ignore');
5873
          // 若选择继续渲染,需在此处主动执行开始渲染的若干操作
5874 5875
          break;
        case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
5876
          // 建议应用暂停渲染
5877
          console.info('Choose to pause or ignore');
5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895
          // 若选择暂停渲染,需在此处主动执行暂停渲染的若干操作
          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:
5896 5897 5898 5899 5900
          break;
      }
   }
  });
}
Z
zhujie81 已提交
5901 5902
```

5903
### on('markReach')<sup>8+</sup>
Z
zhujie81 已提交
5904

5905
on(type: "markReach", frame: number, callback: Callback&lt;number&gt;): void
5906

5907
订阅到达标记的事件。 当渲染的帧数达到 frame 参数的值时,回调被调用。
5908

5909
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zhujie81 已提交
5910 5911

**参数:**
5912

5913 5914 5915 5916 5917
| 参数名   | 类型                     | 必填 | 说明                                      |
| :------- | :----------------------- | :--- | :---------------------------------------- |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'markReach'。 |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于 0。         |
| callback | Callback\<number>         | 是   | 触发事件时调用的回调。                    |
Z
zengyawen 已提交
5918

Z
zhujie81 已提交
5919 5920
**示例:**

J
jiao_yanlin 已提交
5921
```js
5922 5923 5924
audioRenderer.on('markReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
J
jiao_yanlin 已提交
5925
  }
5926
});
5927
```
Z
zengyawen 已提交
5928

5929

5930
### off('markReach') <sup>8+</sup>
5931

5932
off(type: 'markReach'): void
5933

5934
取消订阅标记事件。
5935

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

5938
**参数:**
5939

5940 5941 5942
| 参数名 | 类型   | 必填 | 说明                                              |
| :----- | :----- | :--- | :------------------------------------------------ |
| type   | string | 是   | 要取消订阅事件的类型。支持的事件为:'markReach'。 |
5943 5944 5945 5946

**示例:**

```js
5947
audioRenderer.off('markReach');
5948 5949
```

5950
### on('periodReach') <sup>8+</sup>
Z
zengyawen 已提交
5951

5952
on(type: "periodReach", frame: number, callback: Callback&lt;number&gt;): void
5953

5954
订阅到达标记的事件。 当渲染的帧数达到 frame 参数的值时,触发回调并返回设定的值。
5955

5956
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5957 5958 5959

**参数:**

5960 5961 5962 5963 5964
| 参数名   | 类型                     | 必填 | 说明                                        |
| :------- | :----------------------- | :--- | :------------------------------------------ |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'periodReach'。 |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于 0。           |
| callback | Callback\<number>         | 是   | 触发事件时调用的回调。                      |
5965 5966 5967 5968

**示例:**

```js
5969 5970 5971
audioRenderer.on('periodReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
5972 5973 5974 5975
  }
});
```

5976
### off('periodReach') <sup>8+</sup>
5977

5978
off(type: 'periodReach'): void
Z
zengyawen 已提交
5979

5980
取消订阅标记事件。
5981

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

5984
**参数:**
5985

5986 5987 5988
| 参数名 | 类型   | 必填 | 说明                                                |
| :----- | :----- | :--- | :-------------------------------------------------- |
| type   | string | 是   | 要取消订阅事件的类型。支持的事件为:'periodReach'。 |
5989

Z
zengyawen 已提交
5990 5991
**示例:**

J
jiao_yanlin 已提交
5992
```js
5993
audioRenderer.off('periodReach')
Z
zengyawen 已提交
5994 5995
```

5996
### on('stateChange') <sup>8+</sup>
L
lwx1059628 已提交
5997

5998
on(type: 'stateChange', callback: Callback<AudioState\>): void
L
lwx1059628 已提交
5999

6000
订阅监听状态变化。
6001

6002
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
L
lwx1059628 已提交
6003 6004 6005

**参数:**

6006 6007 6008 6009
| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'stateChange'。 |
| callback | Callback\<[AudioState](#audiostate8)> | 是   | 返回监听的状态。                            |
L
lwx1059628 已提交
6010 6011 6012

**示例:**

J
jiao_yanlin 已提交
6013
```js
6014 6015 6016 6017 6018 6019
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 已提交
6020
  }
L
lwx1059628 已提交
6021 6022 6023
});
```

W
wangzx0705 已提交
6024 6025
### on('outputDeviceChange') <sup>10+</sup>

6026
on(type: 'outputDeviceChange', callback: Callback\<AudioDeviceDescriptors>): void;
W
wangzx0705 已提交
6027 6028 6029 6030 6031 6032 6033 6034 6035 6036

订阅监听音频输出设备变化。

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

**参数:**

| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'outputDeviceChange'。 |
W
wangzx0705 已提交
6037
| callback | Callback\<[AudioDeviceDescriptors](#audiodevicedescriptors)> | 是   | 返回监听的音频设备变化。                            |
W
wangzx0705 已提交
6038 6039 6040 6041 6042

**错误码:**

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
6043
| 6800101 | if input parameter value error.              |
W
wangzx0705 已提交
6044 6045 6046 6047 6048

**示例:**

```js
audioRenderer.on('outputDeviceChange', (deviceChangeInfo) => {
W
wangzx0705 已提交
6049
  if (err) {
W
wangzx0705 已提交
6050 6051 6052 6053
    console.error(`Subscribes output device change event callback Fail: ${err}`);
  } else {
    console.info(`Subscribes output device change event callback Success!`);
  }
W
wangzx0705 已提交
6054 6055 6056 6057
});
```
### off('outputDeviceChange') <sup>10+</sup>

6058
off(type: 'outputDeviceChange', callback?: Callback\<AudioDeviceDescriptors>): void;
W
wangzx0705 已提交
6059 6060 6061 6062 6063 6064 6065 6066 6067 6068

取消订阅监听音频输出设备变化。

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

**参数:**

| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'outputDeviceChange'。 |
6069
| callback | Callback\<[AudioDeviceDescriptors](#audiodevicedescriptors)> | 否   | 取消监听的音频设备变化。                            |
W
wangzx0705 已提交
6070 6071 6072 6073 6074

**错误码:**

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
6075
| 6800101 | if input parameter value error.              |
W
wangzx0705 已提交
6076 6077 6078 6079 6080

**示例:**

```js
audioRenderer.off('outputDeviceChange', (deviceChangeInfo) => {
W
wangzx0705 已提交
6081
  if (err) {
W
wangzx0705 已提交
6082 6083 6084 6085
    console.error(`Unsubscribes output device change event callback Fail: ${err}`);
  } else {
    console.info(`Unsubscribes output device change event callback Success!`);
  }
W
wangzx0705 已提交
6086 6087 6088
});
```

6089
## AudioCapturer<sup>8+</sup>
L
lwx1059628 已提交
6090

6091
提供音频采集的相关接口。在调用AudioCapturer的接口前,需要先通过[createAudioCapturer](#audiocreateaudiocapturer8)创建实例。
6092

6093
### 属性
L
lwx1059628 已提交
6094

6095
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6096

6097 6098 6099
| 名称  | 类型                     | 可读 | 可写 | 说明             |
| :---- | :------------------------- | :--- | :--- | :--------------- |
| state<sup>8+</sup>  | [AudioState](#audiostate8) | 是 | 否   | 音频采集器状态。 |
L
lwx1059628 已提交
6100 6101 6102

**示例:**

J
jiao_yanlin 已提交
6103
```js
6104
let state = audioCapturer.state;
L
lwx1059628 已提交
6105 6106
```

6107
### getCapturerInfo<sup>8+</sup>
6108

6109
getCapturerInfo(callback: AsyncCallback<AudioCapturerInfo\>): void
6110

6111
获取采集器信息。使用callback方式异步返回结果。
6112

6113
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6114 6115 6116

**参数:**

6117 6118 6119
| 参数名   | 类型                              | 必填 | 说明                                 |
| :------- | :-------------------------------- | :--- | :----------------------------------- |
| callback | AsyncCallback<AudioCapturerInfo\> | 是   | 使用callback方式异步返回采集器信息。 |
L
lwx1059628 已提交
6120 6121 6122

**示例:**

J
jiao_yanlin 已提交
6123
```js
6124
audioCapturer.getCapturerInfo((err, capturerInfo) => {
6125
  if (err) {
6126 6127 6128 6129 6130
    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 已提交
6131
  }
L
lwx1059628 已提交
6132 6133 6134
});
```

6135

6136
### getCapturerInfo<sup>8+</sup>
6137

6138
getCapturerInfo(): Promise<AudioCapturerInfo\>
6139

6140
获取采集器信息。使用Promise方式异步返回结果。
6141

6142
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6143 6144 6145

**返回值:**

6146 6147 6148
| 类型                                              | 说明                                |
| :------------------------------------------------ | :---------------------------------- |
| Promise<[AudioCapturerInfo](#audiocapturerinfo)\> | 使用Promise方式异步返回采集器信息。 |
L
lwx1059628 已提交
6149 6150 6151

**示例:**

J
jiao_yanlin 已提交
6152
```js
6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163
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}`);
6164
});
L
lwx1059628 已提交
6165 6166
```

6167
### getStreamInfo<sup>8+</sup>
L
lwx1059628 已提交
6168

6169
getStreamInfo(callback: AsyncCallback<AudioStreamInfo\>): void
L
lwx1059628 已提交
6170

6171
获取采集器流信息。使用callback方式异步返回结果。
6172

6173
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6174 6175 6176

**参数:**

6177 6178 6179
| 参数名   | 类型                                                 | 必填 | 说明                             |
| :------- | :--------------------------------------------------- | :--- | :------------------------------- |
| callback | AsyncCallback<[AudioStreamInfo](#audiostreaminfo8)\> | 是   | 使用callback方式异步返回流信息。 |
L
lwx1059628 已提交
6180 6181 6182

**示例:**

J
jiao_yanlin 已提交
6183
```js
6184
audioCapturer.getStreamInfo((err, streamInfo) => {
J
jiao_yanlin 已提交
6185
  if (err) {
6186 6187 6188 6189 6190 6191 6192
    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 已提交
6193
  }
L
lwx1059628 已提交
6194 6195 6196
});
```

6197
### getStreamInfo<sup>8+</sup>
L
lwx1059628 已提交
6198

6199
getStreamInfo(): Promise<AudioStreamInfo\>
6200

6201
获取采集器流信息。使用Promise方式异步返回结果。
6202

6203
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6204 6205 6206

**返回值:**

6207 6208 6209
| 类型                                           | 说明                            |
| :--------------------------------------------- | :------------------------------ |
| Promise<[AudioStreamInfo](#audiostreaminfo8)\> | 使用Promise方式异步返回流信息。 |
L
lwx1059628 已提交
6210 6211 6212

**示例:**

J
jiao_yanlin 已提交
6213
```js
6214 6215 6216 6217 6218 6219 6220 6221
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 已提交
6222 6223 6224
});
```

6225
### getAudioStreamId<sup>9+</sup>
L
lwx1059628 已提交
6226

6227
getAudioStreamId(callback: AsyncCallback<number\>): void
L
lwx1059628 已提交
6228

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

6231
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6232 6233 6234

**参数:**

6235 6236 6237
| 参数名   | 类型                                                 | 必填 | 说明                 |
| :------- | :--------------------------------------------------- | :--- | :------------------- |
| callback | AsyncCallback<number\> | 是   | 回调返回音频流id。 |
L
lwx1059628 已提交
6238 6239 6240

**示例:**

J
jiao_yanlin 已提交
6241
```js
6242 6243
audioCapturer.getAudioStreamId((err, streamid) => {
  console.info(`audioCapturer GetStreamId: ${streamid}`);
L
lwx1059628 已提交
6244 6245 6246
});
```

6247
### getAudioStreamId<sup>9+</sup>
6248

6249
getAudioStreamId(): Promise<number\>
6250

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

6253
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6254 6255 6256

**返回值:**

6257 6258 6259
| 类型             | 说明                   |
| :----------------| :--------------------- |
| Promise<number\> | Promise返回音频流id。 |
L
lwx1059628 已提交
6260 6261 6262

**示例:**

J
jiao_yanlin 已提交
6263
```js
6264 6265 6266 6267
audioCapturer.getAudioStreamId().then((streamid) => {
  console.info(`audioCapturer getAudioStreamId: ${streamid}`);
}).catch((err) => {
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
6268 6269 6270
});
```

6271
### start<sup>8+</sup>
6272

6273
start(callback: AsyncCallback<void\>): void
6274

6275
启动音频采集器。使用callback方式异步返回结果。
6276

6277
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6278 6279 6280

**参数:**

6281 6282 6283
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
6284 6285 6286 6287

**示例:**

```js
6288
audioCapturer.start((err) => {
6289
  if (err) {
6290 6291 6292
    console.error('Capturer start failed.');
  } else {
    console.info('Capturer start success.');
6293
  }
6294 6295 6296 6297
});
```


6298
### start<sup>8+</sup>
6299

6300
start(): Promise<void\>
6301

6302
启动音频采集器。使用Promise方式异步返回结果。
6303

6304
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6305 6306 6307

**返回值:**

6308 6309 6310
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
6311 6312 6313 6314

**示例:**

```js
6315 6316 6317 6318 6319 6320 6321 6322 6323 6324
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}`);
6325 6326 6327
});
```

6328
### stop<sup>8+</sup>
6329

6330
stop(callback: AsyncCallback<void\>): void
6331

6332
停止采集。使用callback方式异步返回结果。
6333

6334
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6335

6336
**参数:**
L
lwx1059628 已提交
6337

6338 6339 6340
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6341 6342 6343

**示例:**

J
jiao_yanlin 已提交
6344
```js
6345
audioCapturer.stop((err) => {
J
jiao_yanlin 已提交
6346
  if (err) {
6347 6348 6349
    console.error('Capturer stop failed');
  } else {
    console.info('Capturer stopped.');
J
jiao_yanlin 已提交
6350
  }
L
lwx1059628 已提交
6351 6352 6353 6354
});
```


6355
### stop<sup>8+</sup>
L
lwx1059628 已提交
6356

6357
stop(): Promise<void\>
L
lwx1059628 已提交
6358

6359
停止采集。使用Promise方式异步返回结果。
6360

6361
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6362 6363 6364

**返回值:**

6365 6366 6367
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
L
lwx1059628 已提交
6368 6369 6370

**示例:**

J
jiao_yanlin 已提交
6371
```js
6372 6373 6374 6375 6376 6377 6378 6379
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 已提交
6380 6381 6382
});
```

6383
### release<sup>8+</sup>
L
lwx1059628 已提交
6384

6385
release(callback: AsyncCallback<void\>): void
L
lwx1059628 已提交
6386

6387
释放采集器。使用callback方式异步返回结果。
6388

6389
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6390 6391 6392

**参数:**

6393 6394
| 参数名   | 类型                 | 必填 | 说明                                |
| :------- | :------------------- | :--- | :---------------------------------- |
J
jiao_yanlin 已提交
6395
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6396 6397 6398

**示例:**

J
jiao_yanlin 已提交
6399
```js
6400
audioCapturer.release((err) => {
J
jiao_yanlin 已提交
6401
  if (err) {
6402 6403 6404
    console.error('capturer release failed');
  } else {
    console.info('capturer released.');
J
jiao_yanlin 已提交
6405
  }
L
lwx1059628 已提交
6406 6407 6408 6409
});
```


6410
### release<sup>8+</sup>
L
lwx1059628 已提交
6411

6412
release(): Promise<void\>
6413

6414
释放采集器。使用Promise方式异步返回结果。
6415

6416
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6417 6418 6419

**返回值:**

6420 6421 6422
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
L
lwx1059628 已提交
6423 6424 6425

**示例:**

J
jiao_yanlin 已提交
6426
```js
6427 6428 6429 6430 6431 6432 6433 6434
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 已提交
6435 6436 6437
});
```

6438
### read<sup>8+</sup>
L
lwx1059628 已提交
6439

6440
read(size: number, isBlockingRead: boolean, callback: AsyncCallback<ArrayBuffer\>): void
L
lwx1059628 已提交
6441

6442
读入缓冲区。使用callback方式异步返回结果。
6443

6444
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6445 6446 6447

**参数:**

6448 6449 6450 6451 6452
| 参数名         | 类型                        | 必填 | 说明                             |
| :------------- | :-------------------------- | :--- | :------------------------------- |
| size           | number                      | 是   | 读入的字节数。                   |
| isBlockingRead | boolean                     | 是   | 是否阻塞读操作。                 |
| callback       | AsyncCallback<ArrayBuffer\> | 是   | 使用callback方式异步返回缓冲区。 |
L
lwx1059628 已提交
6453 6454 6455

**示例:**

J
jiao_yanlin 已提交
6456
```js
6457 6458 6459 6460 6461 6462 6463 6464 6465 6466
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 已提交
6467
  }
L
lwx1059628 已提交
6468 6469 6470
});
```

6471
### read<sup>8+</sup>
L
lwx1059628 已提交
6472

6473
read(size: number, isBlockingRead: boolean): Promise<ArrayBuffer\>
L
lwx1059628 已提交
6474

6475
读入缓冲区。使用Promise方式异步返回结果。
L
lwx1059628 已提交
6476

6477
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6478 6479 6480

**参数:**

6481 6482 6483 6484
| 参数名         | 类型    | 必填 | 说明             |
| :------------- | :------ | :--- | :--------------- |
| size           | number  | 是   | 读入的字节数。   |
| isBlockingRead | boolean | 是   | 是否阻塞读操作。 |
L
lwx1059628 已提交
6485 6486 6487

**返回值:**

6488 6489 6490
| 类型                  | 说明                                                   |
| :-------------------- | :----------------------------------------------------- |
| Promise<ArrayBuffer\> | 如果操作成功,返回读取的缓冲区数据;否则返回错误代码。 |
L
lwx1059628 已提交
6491 6492 6493

**示例:**

J
jiao_yanlin 已提交
6494
```js
6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506
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 已提交
6507 6508 6509
});
```

6510
### getAudioTime<sup>8+</sup>
6511

6512
getAudioTime(callback: AsyncCallback<number\>): void
6513

6514
获取时间戳(从1970年1月1日开始),单位为纳秒。使用callback方式异步返回结果。
6515

6516
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6517

6518
**参数:**
L
lwx1059628 已提交
6519

6520 6521 6522
| 参数名   | 类型                   | 必填 | 说明                           |
| :------- | :--------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<number\> | 是   | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6523 6524 6525

**示例:**

J
jiao_yanlin 已提交
6526
```js
6527 6528
audioCapturer.getAudioTime((err, timestamp) => {
  console.info(`Current timestamp: ${timestamp}`);
J
jiao_yanlin 已提交
6529
});
L
lwx1059628 已提交
6530 6531
```

6532
### getAudioTime<sup>8+</sup>
6533

6534
getAudioTime(): Promise<number\>
L
lwx1059628 已提交
6535

6536
获取时间戳(从1970年1月1日开始),单位为纳秒。使用Promise方式异步返回结果。
L
lwx1059628 已提交
6537

6538
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6539 6540 6541

**返回值:**

6542 6543 6544
| 类型             | 说明                          |
| :--------------- | :---------------------------- |
| Promise<number\> | 使用Promise方式异步返回结果。 |
L
lwx1059628 已提交
6545 6546 6547

**示例:**

J
jiao_yanlin 已提交
6548
```js
6549 6550 6551 6552
audioCapturer.getAudioTime().then((audioTime) => {
  console.info(`AudioFrameworkRecLog: AudioCapturer getAudioTime : Success ${audioTime}`);
}).catch((err) => {
  console.info(`AudioFrameworkRecLog: AudioCapturer Created : ERROR : ${err}`);
L
lwx1059628 已提交
6553 6554 6555
});
```

6556
### getBufferSize<sup>8+</sup>
L
lwx1059628 已提交
6557

6558
getBufferSize(callback: AsyncCallback<number\>): void
L
lwx1059628 已提交
6559

6560
获取采集器合理的最小缓冲区大小。使用callback方式异步返回结果。
6561

6562
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6563 6564 6565

**参数:**

6566 6567 6568
| 参数名   | 类型                   | 必填 | 说明                                 |
| :------- | :--------------------- | :--- | :----------------------------------- |
| callback | AsyncCallback<number\> | 是   | 使用callback方式异步返回缓冲区大小。 |
L
lwx1059628 已提交
6569 6570 6571

**示例:**

J
jiao_yanlin 已提交
6572
```js
6573 6574 6575 6576 6577 6578 6579 6580
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}`);
    });
6581
  }
L
lwx1059628 已提交
6582 6583 6584
});
```

6585
### getBufferSize<sup>8+</sup>
6586

6587
getBufferSize(): Promise<number\>
L
lwx1059628 已提交
6588

6589
获取采集器合理的最小缓冲区大小。使用Promise方式异步返回结果。
L
lwx1059628 已提交
6590

6591
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6592

6593 6594 6595 6596 6597
**返回值:**

| 类型             | 说明                                |
| :--------------- | :---------------------------------- |
| Promise<number\> | 使用Promise方式异步返回缓冲区大小。 |
L
lwx1059628 已提交
6598 6599 6600

**示例:**

J
jiao_yanlin 已提交
6601
```js
6602 6603 6604 6605 6606 6607
let bufferSize;
audioCapturer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRecLog: getBufferSize :SUCCESS ${data}`);
  bufferSize = data;
}).catch((err) => {
  console.info(`AudioFrameworkRecLog: getBufferSize :ERROR : ${err}`);
L
lwx1059628 已提交
6608 6609 6610
});
```

6611 6612 6613 6614 6615 6616
### on('audioInterrupt')<sup>10+</sup>

on(type: 'audioInterrupt', callback: Callback\<InterruptEvent>): void

监听音频中断事件。使用callback获取中断事件。

J
jiaoyanlin3 已提交
6617
[on('interrupt')](#oninterrupt)一致,均用于监听焦点变化。AudioCapturer对象在start事件发生时会主动获取焦点,在pause、stop等事件发生时会主动释放焦点,不需要开发者主动发起获取焦点或释放焦点的申请。
6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687

**系统能力:** 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;
      }
   }
  });
}
```


6688
### on('markReach')<sup>8+</sup>
L
lwx1059628 已提交
6689

6690
on(type: "markReach", 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                   | 是   | 事件回调类型,支持的事件为:'markReach'。  |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于0。           |
| callback | Callback\<number>         | 是   | 使用callback方式异步返回被触发事件的回调。 |
L
lwx1059628 已提交
6703 6704

**示例:**
6705

J
jiao_yanlin 已提交
6706
```js
6707 6708 6709
audioCapturer.on('markReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
J
jiao_yanlin 已提交
6710
  }
L
lwx1059628 已提交
6711 6712 6713
});
```

6714
### off('markReach')<sup>8+</sup>
L
lwx1059628 已提交
6715

6716
off(type: 'markReach'): void
L
lwx1059628 已提交
6717

6718
取消订阅标记到达的事件。
6719

6720
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6721 6722 6723

**参数:**

6724 6725 6726
| 参数名 | 类型   | 必填 | 说明                                          |
| :----- | :----- | :--- | :-------------------------------------------- |
| type   | string | 是   | 取消事件回调类型,支持的事件为:'markReach'。 |
L
lwx1059628 已提交
6727 6728 6729

**示例:**

J
jiao_yanlin 已提交
6730
```js
6731
audioCapturer.off('markReach');
L
lwx1059628 已提交
6732 6733
```

6734
### on('periodReach')<sup>8+</sup>
L
lwx1059628 已提交
6735

6736
on(type: "periodReach", frame: number, callback: Callback&lt;number&gt;): void
L
lwx1059628 已提交
6737

6738
订阅到达标记的事件。 当采集的帧数达到 frame 参数的值时,触发回调并返回设定的值。
6739

6740
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6741 6742 6743

**参数:**

6744 6745 6746 6747 6748
| 参数名   | 类型                     | 必填 | 说明                                        |
| :------- | :----------------------- | :--- | :------------------------------------------ |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'periodReach'。 |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于0。            |
| callback | Callback\<number>         | 是   | 使用callback方式异步返回被触发事件的回调    |
L
lwx1059628 已提交
6749 6750 6751

**示例:**

J
jiao_yanlin 已提交
6752
```js
6753 6754 6755
audioCapturer.on('periodReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
J
jiao_yanlin 已提交
6756
  }
L
lwx1059628 已提交
6757 6758 6759
});
```

6760
### off('periodReach')<sup>8+</sup>
L
lwx1059628 已提交
6761

6762
off(type: 'periodReach'): void
L
lwx1059628 已提交
6763

6764
取消订阅标记到达的事件。
6765

6766
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6767 6768 6769

**参数:**

6770 6771 6772
| 参数名 | 类型   | 必填 | 说明                                            |
| :----- | :----- | :--- | :---------------------------------------------- |
| type   | string | 是  | 取消事件回调类型,支持的事件为:'periodReach'。 |
L
lwx1059628 已提交
6773 6774 6775

**示例:**

J
jiao_yanlin 已提交
6776
```js
6777
audioCapturer.off('periodReach')
L
lwx1059628 已提交
6778 6779
```

6780
### on('stateChange') <sup>8+</sup>
L
lwx1059628 已提交
6781

6782
on(type: 'stateChange', callback: Callback<AudioState\>): void
L
lwx1059628 已提交
6783

6784
订阅监听状态变化。
6785

6786
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6787 6788 6789

**参数:**

6790 6791 6792 6793
| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'stateChange'。 |
| callback | Callback\<[AudioState](#audiostate8)> | 是   | 返回监听的状态。                            |
L
lwx1059628 已提交
6794 6795 6796

**示例:**

J
jiao_yanlin 已提交
6797
```js
6798 6799 6800 6801 6802 6803
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 已提交
6804
  }
L
lwx1059628 已提交
6805 6806 6807
});
```

6808
## ToneType<sup>9+</sup>
L
lwx1059628 已提交
6809

6810
枚举,播放器的音调类型。
L
lwx1059628 已提交
6811

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

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

6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839 6840 6841 6842 6843 6844
| 名称                                              |  值    | 说明                          |
| :------------------------------------------------ | :----- | :----------------------------|
| 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 已提交
6845

6846
## TonePlayer<sup>9+</sup>
L
lwx1059628 已提交
6847

6848
提供播放和管理DTMF(Dual Tone Multi Frequency,双音多频)音调的方法,包括各种系统监听音调、专有音调,如拨号音、通话回铃音等。
L
lwx1059628 已提交
6849

6850
**系统接口:** 该接口为系统接口
L
lwx1059628 已提交
6851

6852
### load<sup>9+</sup>
L
lwx1059628 已提交
6853

6854
load(type: ToneType, callback: AsyncCallback&lt;void&gt;): void
L
lwx1059628 已提交
6855

6856
加载DTMF音调配置。使用callback方式异步返回结果。
6857

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

6860
**系统能力:** SystemCapability.Multimedia.Audio.Tone
L
lwx1059628 已提交
6861 6862 6863

**参数:**

6864 6865 6866 6867
| 参数名          | 类型                        | 必填  | 说明                            |
| :--------------| :-------------------------- | :-----| :------------------------------ |
| type           | [ToneType](#tonetype9)       | 是    | 配置的音调类型。                 |
| callback       | AsyncCallback<void\>        | 是    | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6868 6869 6870

**示例:**

J
jiao_yanlin 已提交
6871
```js
6872
tonePlayer.load(audio.ToneType.TONE_TYPE_DIAL_5, (err) => {
6873
  if (err) {
6874
    console.error(`callback call load failed error: ${err.message}`);
6875
    return;
6876 6877
  } else {
    console.info('callback call load success');
J
jiao_yanlin 已提交
6878
  }
L
lwx1059628 已提交
6879
});
6880 6881
```

6882
### load<sup>9+</sup>
6883

6884
load(type: ToneType): Promise&lt;void&gt;
6885

6886
加载DTMF音调配置。使用Promise方式异步返回结果。
6887

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

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

6892
**参数:**
6893

6894 6895 6896
| 参数名         | 类型                    | 必填  |  说明             |
| :------------- | :--------------------- | :---  | ---------------- |
| type           | [ToneType](#tonetype9)   | 是    | 配置的音调类型。  |
6897

6898
**返回值:**
6899

6900 6901 6902
| 类型            | 说明                        |
| :--------------| :-------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
6903

6904
**示例:**
6905

6906
```js
6907 6908 6909 6910
tonePlayer.load(audio.ToneType.TONE_TYPE_DIAL_1).then(() => {
  console.info('promise call load ');
}).catch(() => {
  console.error('promise call load fail');
6911 6912
});
```
6913

6914
### start<sup>9+</sup>
6915

6916
start(callback: AsyncCallback&lt;void&gt;): void
6917

6918
启动DTMF音调播放。使用callback方式异步返回结果。
6919

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

6922
**系统能力:** SystemCapability.Multimedia.Audio.Tone
6923 6924 6925

**参数:**

6926 6927 6928
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
6929 6930 6931 6932

**示例:**

```js
6933
tonePlayer.start((err) => {
6934
  if (err) {
6935
    console.error(`callback call start failed error: ${err.message}`);
6936
    return;
6937 6938
  } else {
    console.info('callback call start success');
6939 6940 6941 6942
  }
});
```

6943
### start<sup>9+</sup>
6944

6945
start(): Promise&lt;void&gt;
6946

6947
启动DTMF音调播放。使用Promise方式异步返回结果。
6948

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

6951
**系统能力:** SystemCapability.Multimedia.Audio.Tone
6952 6953 6954

**返回值:**

6955 6956 6957
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
6958 6959 6960 6961

**示例:**

```js
6962 6963 6964 6965
tonePlayer.start().then(() => {
  console.info('promise call start');
}).catch(() => {
  console.error('promise call start fail');
6966 6967 6968
});
```

6969
### stop<sup>9+</sup>
6970

6971
stop(callback: AsyncCallback&lt;void&gt;): void
6972

6973
停止当前正在播放的音调。使用callback方式异步返回结果。
6974 6975 6976

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

6977
**系统能力:** SystemCapability.Multimedia.Audio.Tone
6978 6979 6980

**参数:**

6981 6982 6983
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
6984 6985 6986 6987

**示例:**

```js
6988 6989 6990 6991 6992 6993 6994
tonePlayer.stop((err) => {
  if (err) {
    console.error(`callback call stop error: ${err.message}`);
    return;
  } else {
    console.error('callback call stop success ');
  }
6995 6996 6997
});
```

6998
### stop<sup>9+</sup>
6999

7000
stop(): Promise&lt;void&gt;
7001

7002
停止当前正在播放的音调。使用Promise方式异步返回结果。
7003

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

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

7008
**返回值:**
7009

7010 7011 7012
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
7013 7014 7015 7016

**示例:**

```js
7017 7018 7019 7020
tonePlayer.stop().then(() => {
  console.info('promise call stop finish');
}).catch(() => {
  console.error('promise call stop fail');
7021 7022 7023
});
```

7024
### release<sup>9+</sup>
7025

7026
release(callback: AsyncCallback&lt;void&gt;): void
7027

7028
释放与此TonePlayer对象关联的资源。使用callback方式异步返回结果。
7029

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

7032
**系统能力:** SystemCapability.Multimedia.Audio.Tone
7033 7034 7035

**参数:**

7036 7037 7038
| 参数名   | 类型                 | 必填 | 说明                            |
| :------- | :------------------- | :--- | :---------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。  |
7039 7040 7041 7042

**示例:**

```js
7043 7044 7045 7046 7047 7048 7049
tonePlayer.release((err) => {
  if (err) {
    console.error(`callback call release failed error: ${err.message}`);
    return;
  } else {
    console.info('callback call release success ');
  }
7050 7051 7052
});
```

7053
### release<sup>9+</sup>
7054

7055
release(): Promise&lt;void&gt;
7056

7057
释放与此TonePlayer对象关联的资源。使用Promise方式异步返回结果。
7058

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

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

7063
**返回值:**
7064

7065 7066 7067
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
7068 7069 7070 7071

**示例:**

```js
7072 7073 7074 7075
tonePlayer.release().then(() => {
  console.info('promise call release');
}).catch(() => {
  console.error('promise call release fail');
7076 7077 7078
});
```

7079
## ActiveDeviceType<sup>(deprecated)</sup>
7080

7081
枚举,活跃设备类型。
7082

7083 7084
> **说明:**
> 从 API version 9 开始废弃,建议使用[CommunicationDeviceType](#communicationdevicetype9)替代。
7085

7086 7087 7088 7089 7090 7091 7092 7093 7094 7095
**系统能力:** SystemCapability.Multimedia.Audio.Device

| 名称          |  值     | 说明                                                 |
| ------------- | ------ | ---------------------------------------------------- |
| SPEAKER       | 2      | 扬声器。                                             |
| BLUETOOTH_SCO | 7      | 蓝牙设备SCO(Synchronous Connection Oriented)连接。 |

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

枚举,中断事件返回类型。
7096

7097 7098 7099 7100
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃。

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

7102 7103 7104 7105
| 名称           |  值     | 说明               |
| -------------- | ------ | ------------------ |
| TYPE_ACTIVATED | 0      | 表示触发焦点事件。 |
| TYPE_INTERRUPT | 1      | 表示音频打断事件。 |
7106

7107
## AudioInterrupt<sup>(deprecated)</sup>
7108

7109
音频监听事件传入的参数。
7110

7111 7112
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃。
7113

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

7116 7117 7118 7119 7120
| 名称            | 类型                        | 必填 | 说明                                                         |
| --------------- | --------------------------- | ----| ------------------------------------------------------------ |
| streamUsage     | [StreamUsage](#streamusage) | 是  | 音频流使用类型。                                             |
| contentType     | [ContentType](#contenttype) | 是  | 音频打断媒体类型。                                           |
| pauseWhenDucked | boolean                     | 是  | 音频打断时是否可以暂停音频播放(true表示音频播放可以在音频打断期间暂停,false表示相反)。 |
7121

7122 7123 7124
## InterruptAction<sup>(deprecated)</sup>

音频打断/获取焦点事件的回调方法。
7125

7126
> **说明:**
J
jiaoyanlin3 已提交
7127
> 从 API version 7 开始支持,从 API version 9 开始废弃。建议使用[InterruptEvent](#interruptevent9)替代。
7128

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

7131 7132 7133 7134 7135 7136
| 名称       | 类型                                        | 必填 | 说明                                                         |
| ---------- | ------------------------------------------- | ---- | ------------------------------------------------------------ |
| actionType | [InterruptActionType](#interruptactiontypedeprecated) | 是   | 事件返回类型。TYPE_ACTIVATED为焦点触发事件,TYPE_INTERRUPT为音频打断事件。 |
| type       | [InterruptType](#interrupttype)             | 否   | 打断事件类型。                                               |
| hint       | [InterruptHint](#interrupthint)             | 否   | 打断事件提示。                                               |
| activated  | boolean                                     | 否   | 获得/释放焦点。true表示焦点获取/释放成功,false表示焦点获得/释放失败。 |