js-apis-audio.md 263.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 536
| CONTENT_TYPE_RINGTONE<sup>8+</sup> | 5      | 铃声。     |
## StreamUsage
Z
zengyawen 已提交
537 538 539

枚举,音频流使用类型。

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

542
| 名称                                      |  值    | 说明       |
543 544
| ------------------------------------------| ------ | ---------- |
| STREAM_USAGE_UNKNOWN                      | 0      | 未知类型。 |
S
songshenke 已提交
545 546
| STREAM_USAGE_MEDIA                        | 1      | 媒体。     |
| STREAM_USAGE_MUSIC<sup>10+</sup>          | 1      | 音乐。     |
L
li-yifan2 已提交
547
| STREAM_USAGE_VOICE_COMMUNICATION          | 2      | 语音通信。 | 
548
| STREAM_USAGE_VOICE_ASSISTANT<sup>9+</sup> | 3      | 语音播报。 |
L
li-yifan2 已提交
549
| STREAM_USAGE_ALARM<sup>10+</sup>          | 4      | 闹钟。     |
S
songshenke 已提交
550
| STREAM_USAGE_VOICE_MESSAGE<sup>10+</sup>  | 5      | 语音消息。 |
551
| STREAM_USAGE_NOTIFICATION_RINGTONE        | 6      | 通知铃声。 |
S
songshenke 已提交
552 553 554 555 556 557 558 559 560 561 562 563
| 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 已提交
564

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

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

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

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

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

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

枚举,音频状态。

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

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

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

枚举,音效模式。

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

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

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

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

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

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

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

枚举,中断类型。

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

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

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

枚举,强制打断类型。

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

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

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

枚举,中断提示。

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

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

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

音频流信息。

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

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

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

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

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

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

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

音频中断结果。

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

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

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

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

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

695
| 名称         | 类型                                     | 必填  | 说明             |
Z
zengyawen 已提交
696
| ------------ | ---------------------------------------- | ---- | ---------------- |
Z
zhanglimei 已提交
697 698
| streamInfo   | [AudioStreamInfo](#audiostreaminfo8)     | 是   | 表示音频流信息。<br/>**系统能力:** SystemCapability.Multimedia.Audio.Renderer |
| rendererInfo | [AudioRendererInfo](#audiorendererinfo8) | 是   | 表示渲染器信息。<br/>**系统能力:** SystemCapability.Multimedia.Audio.Renderer |
699 700 701 702 703 704 705 706 707 708 709 710
| 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 已提交
711

L
lwx1059628 已提交
712
## InterruptEvent<sup>9+</sup>
Z
zengyawen 已提交
713 714 715

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

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

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

J
jiaoyanlin3 已提交
724
## VolumeEvent<sup>9+</sup>
Z
zengyawen 已提交
725 726 727

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

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

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

Z
zengyawen 已提交
738 739 740 741
## MicStateChangeEvent<sup>9+</sup>

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

742
**系统能力:** SystemCapability.Multimedia.Audio.Device
Z
zengyawen 已提交
743 744

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

W
wangtao 已提交
748 749 750 751
## ConnectType<sup>9+</sup>

枚举,设备连接类型。

J
jiao_yanlin 已提交
752 753
**系统接口:** 该接口为系统接口

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

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

761 762 763 764 765 766 767 768
## VolumeGroupInfos<sup>9+</sup>

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

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

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

W
wangtao 已提交
769 770 771 772
## VolumeGroupInfo<sup>9+</sup>

音量组信息。

773
**系统接口:** 该接口为系统接口
W
wangtao 已提交
774

775
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
776 777 778 779 780 781

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

L
lwx1059628 已提交
785 786 787 788
## DeviceChangeAction

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

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

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

## DeviceChangeType

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

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

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

Z
zengyawen 已提交
807 808 809 810
## AudioCapturerOptions<sup>8+</sup>

音频采集器选项信息。

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

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

枚举,音源类型。

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

840 841 842 843 844 845 846 847 848 849 850 851
## AudioPlaybackCaptureConfig<sup>10+</sup><a name="audioplaybackcaptureconfig"></a>

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

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

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

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

Z
zhanglimei 已提交
852
待录制的播放音频流的筛选信息。
853 854 855 856 857 858 859 860 861 862 863

**需要权限:** 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 已提交
864 865 866 867
## AudioScene<sup>8+</sup><a name="audioscene"></a>

枚举,音频场景。

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

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

W
wangzx0705 已提交
877
## VolumeAdjustType<sup>10+</sup>
W
wangzx0705 已提交
878

W
wangzx0705 已提交
879
枚举,音量调节类型。
W
wangzx0705 已提交
880 881 882 883 884

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

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

Z
zengyawen 已提交
888
## AudioManager
M
mamingshuai 已提交
889

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

892
### setAudioParameter
M
mamingshuai 已提交
893

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

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

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

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

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

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

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

M
mamingshuai 已提交
912 913
**示例:**

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

924
### setAudioParameter
M
mamingshuai 已提交
925

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

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

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

932
**需要权限:** ohos.permission.MODIFY_AUDIO_SETTINGS
933

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

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

938 939 940 941
| 参数名 | 类型   | 必填 | 说明                   |
| ------ | ------ | ---- | ---------------------- |
| key    | string | 是   | 被设置的音频参数的键。 |
| value  | string | 是   | 被设置的音频参数的值。 |
M
mamingshuai 已提交
942 943 944

**返回值:**

945 946 947
| 类型                | 说明                            |
| ------------------- | ------------------------------- |
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |
M
mamingshuai 已提交
948 949 950

**示例:**

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

957
### getAudioParameter
Z
zengyawen 已提交
958

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

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

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

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

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

969 970 971 972
| 参数名   | 类型                        | 必填 | 说明                         |
| -------- | --------------------------- | ---- | ---------------------------- |
| key      | string                      | 是   | 待获取的音频参数的键。       |
| callback | AsyncCallback&lt;string&gt; | 是   | 回调返回获取的音频参数的值。 |
973

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

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

986
### getAudioParameter
Z
zengyawen 已提交
987

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

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

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

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

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

998 999 1000
| 参数名 | 类型   | 必填 | 说明                   |
| ------ | ------ | ---- | ---------------------- |
| key    | string | 是   | 待获取的音频参数的键。 |
M
mamingshuai 已提交
1001 1002 1003

**返回值:**

1004 1005 1006
| 类型                  | 说明                                |
| --------------------- | ----------------------------------- |
| Promise&lt;string&gt; | Promise回调返回获取的音频参数的值。 |
M
mamingshuai 已提交
1007 1008 1009

**示例:**

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

1016
### setAudioScene<sup>8+</sup>
Z
zengyawen 已提交
1017

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

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

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

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

M
mamingshuai 已提交
1026 1027
**参数:**

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

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

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

1045
### setAudioScene<sup>8+</sup>
Z
zengyawen 已提交
1046

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

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

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

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

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

1057 1058 1059
| 参数名 | 类型                                 | 必填 | 说明           |
| :----- | :----------------------------------- | :--- | :------------- |
| scene  | <a href="#audioscene">AudioScene</a> | 是   | 音频场景模式。 |
M
mamingshuai 已提交
1060 1061 1062

**返回值:**

1063 1064 1065
| 类型           | 说明                 |
| :------------- | :------------------- |
| Promise<void\> | 用于返回结果的回调。 |
M
mamingshuai 已提交
1066 1067 1068

**示例:**

J
jiao_yanlin 已提交
1069
```js
1070 1071 1072 1073
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 已提交
1074
});
M
mamingshuai 已提交
1075 1076
```

1077
### getAudioScene<sup>8+</sup>
M
mamingshuai 已提交
1078

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

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

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

M
mamingshuai 已提交
1085 1086
**参数:**

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

M
mamingshuai 已提交
1091 1092
**示例:**

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

1103
### getAudioScene<sup>8+</sup>
1104

1105
getAudioScene\(\): Promise<AudioScene\>
Z
zengyawen 已提交
1106

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

1109
**系统能力:** SystemCapability.Multimedia.Audio.Communication
M
mamingshuai 已提交
1110 1111 1112

**返回值:**

1113 1114 1115
| 类型                                          | 说明                         |
| :-------------------------------------------- | :--------------------------- |
| Promise<<a href="#audioscene">AudioScene</a>> | 用于返回音频场景模式的回调。 |
M
mamingshuai 已提交
1116 1117 1118

**示例:**

J
jiao_yanlin 已提交
1119
```js
1120 1121 1122 1123
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 已提交
1124
});
Z
zengyawen 已提交
1125 1126
```

1127
### getVolumeManager<sup>9+</sup>
1128

1129
getVolumeManager(): AudioVolumeManager
1130

1131
获取音频音量管理器。
1132

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

Z
zengyawen 已提交
1135 1136
**示例:**

J
jiao_yanlin 已提交
1137
```js
1138
let audioVolumeManager = audioManager.getVolumeManager();
1139 1140
```

1141
### getStreamManager<sup>9+</sup>
1142

1143
getStreamManager(): AudioStreamManager
1144

1145
获取音频流管理器。
1146

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

1149
**示例:**
1150

1151 1152 1153
```js
let audioStreamManager = audioManager.getStreamManager();
```
Z
zengyawen 已提交
1154

1155
### getRoutingManager<sup>9+</sup>
1156

1157
getRoutingManager(): AudioRoutingManager
1158

1159
获取音频路由设备管理器。
1160

1161
**系统能力:** SystemCapability.Multimedia.Audio.Device
1162 1163 1164

**示例:**

J
jiao_yanlin 已提交
1165
```js
1166
let audioRoutingManager = audioManager.getRoutingManager();
1167 1168
```

1169
### setVolume<sup>(deprecated)</sup>
1170

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

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

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

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

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

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

Z
zengyawen 已提交
1184
**参数:**
1185

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

**示例:**

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

1204
### setVolume<sup>(deprecated)</sup>
1205

1206
setVolume(volumeType: AudioVolumeType, volume: number): Promise&lt;void&gt;
1207

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

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

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

1215 1216 1217 1218 1219 1220 1221 1222 1223 1224
仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。

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

**参数:**

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

1226 1227
**返回值:**

1228 1229 1230
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
1231 1232 1233

**示例:**

J
jiao_yanlin 已提交
1234
```js
1235
audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10).then(() => {
1236
  console.info('Promise returned to indicate a successful volume setting.');
L
lwx1059628 已提交
1237
});
1238 1239
```

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

1242
getVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
1243

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

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

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

1251 1252
**参数:**

1253 1254 1255 1256
| 参数名     | 类型                                | 必填 | 说明               |
| ---------- | ----------------------------------- | ---- | ------------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。       |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回音量大小。 |
1257 1258 1259

**示例:**

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

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

1272
getVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
1273

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

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

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

1281 1282
**参数:**

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

**返回值:**

1289 1290 1291
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回音量大小。 |
1292 1293 1294

**示例:**

J
jiao_yanlin 已提交
1295
```js
1296 1297
audioManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the volume is obtained ${value} .`);
L
lwx1059628 已提交
1298
});
1299 1300
```

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

1303
getMinVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
1304

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

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

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

1312 1313
**参数:**

1314 1315 1316 1317
| 参数名     | 类型                                | 必填 | 说明               |
| ---------- | ----------------------------------- | ---- | ------------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。       |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回最小音量。 |
1318 1319 1320

**示例:**

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

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

1333
getMinVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
1334

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

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

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

1342 1343
**参数:**

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

**返回值:**

1350 1351 1352
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回最小音量。 |
1353 1354 1355

**示例:**

J
jiao_yanlin 已提交
1356
```js
1357 1358
audioManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promised returned to indicate that the minimum volume is obtained. ${value}`);
L
lwx1059628 已提交
1359
});
1360 1361
```

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

1364
getMaxVolume(volumeType: AudioVolumeType, callback: AsyncCallback&lt;number&gt;): void
1365

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

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

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

1373 1374
**参数:**

1375 1376 1377 1378
| 参数名     | 类型                                | 必填 | 说明                   |
| ---------- | ----------------------------------- | ---- | ---------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。           |
| callback   | AsyncCallback&lt;number&gt;         | 是   | 回调返回最大音量大小。 |
1379 1380

**示例:**
1381

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

1392
### getMaxVolume<sup>(deprecated)</sup>
1393

1394
getMaxVolume(volumeType: AudioVolumeType): Promise&lt;number&gt;
1395

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

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

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

1403 1404
**参数:**

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

**返回值:**

1411 1412 1413
| 类型                  | 说明                          |
| --------------------- | ----------------------------- |
| Promise&lt;number&gt; | Promise回调返回最大音量大小。 |
1414 1415 1416

**示例:**

J
jiao_yanlin 已提交
1417
```js
1418
audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((data) => {
1419
  console.info('Promised returned to indicate that the maximum volume is obtained.');
L
lwx1059628 已提交
1420
});
1421 1422
```

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

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

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

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

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

1434 1435
**参数:**

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

**示例:**

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

1454
### mute<sup>(deprecated)</sup>
Z
zengyawen 已提交
1455

1456
mute(volumeType: AudioVolumeType, mute: boolean): Promise&lt;void&gt;
1457

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

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

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

1465 1466
**参数:**

1467 1468 1469 1470
| 参数名     | 类型                                | 必填 | 说明                                  |
| ---------- | ----------------------------------- | ---- | ------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                          |
| mute       | boolean                             | 是   | 静音状态,true为静音,false为非静音。 |
1471 1472 1473

**返回值:**

1474 1475 1476
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
1477 1478 1479

**示例:**

1480

J
jiao_yanlin 已提交
1481
```js
1482
audioManager.mute(audio.AudioVolumeType.MEDIA, true).then(() => {
1483
  console.info('Promise returned to indicate that the stream is muted.');
L
lwx1059628 已提交
1484
});
1485 1486
```

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

1489
isMute(volumeType: AudioVolumeType, callback: AsyncCallback&lt;boolean&gt;): void
1490

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

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

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

1498 1499
**参数:**

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

**示例:**

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

1517
### isMute<sup>(deprecated)</sup>
1518

1519
isMute(volumeType: AudioVolumeType): Promise&lt;boolean&gt;
1520

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

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

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

1528 1529
**参数:**

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

**返回值:**

1536 1537 1538
| 类型                   | 说明                                                   |
| ---------------------- | ------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回流静音状态,true为静音,false为非静音。 |
1539 1540 1541

**示例:**

J
jiao_yanlin 已提交
1542
```js
1543
audioManager.isMute(audio.AudioVolumeType.MEDIA).then((value) => {
1544
  console.info(`Promise returned to indicate that the mute status of the stream is obtained ${value}.`);
L
lwx1059628 已提交
1545
});
1546 1547
```

1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 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
### 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 已提交
1610

1611
setRingerMode(mode: AudioRingMode, callback: AsyncCallback&lt;void&gt;): void
1612

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

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

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

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

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

1624 1625
**参数:**

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

**示例:**

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

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

1645
setRingerMode(mode: AudioRingMode): Promise&lt;void&gt;
1646

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

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

1652

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

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

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

1659 1660
**参数:**

1661 1662 1663
| 参数名 | 类型                            | 必填 | 说明           |
| ------ | ------------------------------- | ---- | -------------- |
| mode   | [AudioRingMode](#audioringmode) | 是   | 音频铃声模式。 |
1664 1665 1666

**返回值:**

Z
zengyawen 已提交
1667 1668
| 类型                | 说明                            |
| ------------------- | ------------------------------- |
Z
zengyawen 已提交
1669
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |
1670 1671 1672

**示例:**

J
jiao_yanlin 已提交
1673
```js
1674
audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL).then(() => {
1675
  console.info('Promise returned to indicate a successful setting of the ringer mode.');
L
lwx1059628 已提交
1676
});
1677 1678
```

1679
### getRingerMode<sup>(deprecated)</sup>
1680

1681
getRingerMode(callback: AsyncCallback&lt;AudioRingMode&gt;): void
1682

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

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

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

1690 1691
**参数:**

1692 1693 1694
| 参数名   | 类型                                                 | 必填 | 说明                     |
| -------- | ---------------------------------------------------- | ---- | ------------------------ |
| callback | AsyncCallback&lt;[AudioRingMode](#audioringmode)&gt; | 是   | 回调返回系统的铃声模式。 |
1695 1696 1697

**示例:**

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

1708
### getRingerMode<sup>(deprecated)</sup>
1709

1710
getRingerMode(): Promise&lt;AudioRingMode&gt;
1711

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

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

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

1719 1720
**返回值:**

1721 1722 1723
| 类型                                           | 说明                            |
| ---------------------------------------------- | ------------------------------- |
| Promise&lt;[AudioRingMode](#audioringmode)&gt; | Promise回调返回系统的铃声模式。 |
1724 1725 1726

**示例:**

J
jiao_yanlin 已提交
1727
```js
1728
audioManager.getRingerMode().then((value) => {
1729
  console.info(`Promise returned to indicate that the ringer mode is obtained ${value}.`);
L
lwx1059628 已提交
1730
});
1731 1732
```

1733
### getDevices<sup>(deprecated)</sup>
Z
zengyawen 已提交
1734

1735
getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback&lt;AudioDeviceDescriptors&gt;): void
1736

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
Z
zengyawen 已提交
1743 1744 1745

**参数:**

1746 1747 1748 1749
| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
| deviceFlag | [DeviceFlag](#deviceflag)                                    | 是   | 设备类型的flag。     |
| callback   | AsyncCallback&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | 是   | 回调,返回设备列表。 |
1750

1751 1752 1753 1754 1755 1756 1757 1758 1759 1760
**示例:**
```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.');
});
```
1761

1762
### getDevices<sup>(deprecated)</sup>
1763

1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783
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 已提交
1784 1785 1786

**示例:**

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

1793
### setDeviceActive<sup>(deprecated)</sup>
Z
zengyawen 已提交
1794

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

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
Z
zengyawen 已提交
1803 1804 1805

**参数:**

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

L
lwx1059628 已提交
1812 1813
**示例:**

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

1824
### setDeviceActive<sup>(deprecated)</sup>
L
lwx1059628 已提交
1825

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

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

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

1833
**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
1834 1835 1836

**参数:**

1837 1838 1839 1840
| 参数名     | 类型                                  | 必填 | 说明               |
| ---------- | ------------------------------------- | ---- | ------------------ |
| deviceType | [ActiveDeviceType](#activedevicetypedeprecated) | 是   | 活跃音频设备类型。 |
| active     | boolean                               | 是   | 设备激活状态。     |
1841 1842 1843 1844 1845 1846 1847 1848

**返回值:**

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

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

1850

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

1857
### isDeviceActive<sup>(deprecated)</sup>
L
lwx1059628 已提交
1858

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

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
1867 1868 1869

**参数:**

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

**示例:**

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

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

1889
isDeviceActive(deviceType: ActiveDeviceType): Promise&lt;boolean&gt;
1890

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

1893 1894 1895 1896 1897 1898 1899 1900 1901 1902
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioRoutingManager中的[isCommunicationDeviceActive](#iscommunicationdeviceactive9)替代。

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

**参数:**

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

1904
**返回值:**
1905

1906 1907 1908
| Type                   | Description                     |
| ---------------------- | ------------------------------- |
| Promise&lt;boolean&gt; | Promise回调返回设备的激活状态。 |
1909 1910 1911

**示例:**

J
jiao_yanlin 已提交
1912
```js
1913 1914
audioManager.isDeviceActive(audio.ActiveDeviceType.SPEAKER).then((value) => {
  console.info(`Promise returned to indicate that the active status of the device is obtained ${value}.`);
1915 1916 1917
});
```

1918
### setMicrophoneMute<sup>(deprecated)</sup>
1919

1920
setMicrophoneMute(mute: boolean, callback: AsyncCallback&lt;void&gt;): void
1921

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

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

1927 1928 1929
**需要权限:** ohos.permission.MICROPHONE

**系统能力:** SystemCapability.Multimedia.Audio.Device
1930 1931 1932

**参数:**

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

1938
**示例:**
1939

1940 1941 1942 1943 1944 1945 1946 1947 1948
```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.');
});
```
1949

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

**示例:**

J
jiao_yanlin 已提交
1977
```js
1978 1979
audioManager.setMicrophoneMute(true).then(() => {
  console.info('Promise returned to indicate that the microphone is muted.');
1980 1981 1982
});
```

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

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

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

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

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

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

**参数:**

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

**示例:**

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

2014
### isMicrophoneMute<sup>(deprecated)</sup>
L
lwx1059628 已提交
2015

2016
isMicrophoneMute(): Promise&lt;boolean&gt;
L
lwx1059628 已提交
2017

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

2020 2021 2022 2023 2024 2025
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用AudioVolumeGroupManager中的[isMicrophoneMute](#ismicrophonemute9)替代。

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
L
lwx1059628 已提交
2026 2027 2028

**返回值:**

2029 2030 2031
| 类型                   | 说明                                                         |
| ---------------------- | ------------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回系统麦克风静音状态,true为静音,false为非静音。 |
L
lwx1059628 已提交
2032 2033 2034

**示例:**

J
jiao_yanlin 已提交
2035
```js
2036 2037 2038
audioManager.isMicrophoneMute().then((value) => {
  console.info(`Promise returned to indicate that the mute status of the microphone is obtained ${value}.`);
});
L
lwx1059628 已提交
2039 2040
```

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

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

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

2048 2049 2050 2051 2052 2053 2054
监听系统音量变化事件。

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
L
lwx1059628 已提交
2055 2056 2057

**参数:**

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

**示例:**

J
jiao_yanlin 已提交
2065
```js
2066 2067 2068 2069
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 已提交
2070 2071 2072
});
```

2073
### on('ringerModeChange')<sup>(deprecated)</sup>
2074

2075
on(type: 'ringerModeChange', callback: Callback\<AudioRingMode>): void
2076

2077
监听铃声模式变化事件。
2078

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

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

2084 2085 2086 2087 2088 2089 2090 2091
**系统能力:** SystemCapability.Multimedia.Audio.Communication

**参数:**

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

**示例:**

```js
2096 2097 2098
audioManager.on('ringerModeChange', (ringerMode) => {
  console.info(`Updated ringermode: ${ringerMode}`);
});
2099 2100
```

2101
### on('deviceChange')<sup>(deprecated)</sup>
2102

2103
on(type: 'deviceChange', callback: Callback<DeviceChangeAction\>): void
2104

2105
设备更改。音频设备连接状态变化。
2106

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

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

2112
**参数:**
2113

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

**示例:**

```js
2122 2123 2124 2125 2126
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} `);
2127
});
2128 2129
```

2130
### off('deviceChange')<sup>(deprecated)</sup>
2131

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

2134
取消订阅音频设备连接变化事件。
2135

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

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

2141
**参数:**
2142

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

2148
**示例:**
W
wangtao 已提交
2149

2150
```js
W
wangtao 已提交
2151
audioManager.off('deviceChange');
2152
```
W
wangtao 已提交
2153

J
jiaoyanlin3 已提交
2154
### on('interrupt')
2155

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

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

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

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

2164
**参数:**
2165

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

W
wangtao 已提交
2172
**示例:**
2173

W
wangtao 已提交
2174
```js
2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187
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 已提交
2188 2189 2190 2191
  }
});
```

J
jiaoyanlin3 已提交
2192
### off('interrupt')
W
wangtao 已提交
2193

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

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

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

2200
**参数:**
2201

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

W
wangtao 已提交
2208 2209 2210
**示例:**

```js
2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221
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 已提交
2222 2223
```

2224
## AudioVolumeManager<sup>9+</sup>
W
wangtao 已提交
2225

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

2228
### getVolumeGroupInfos<sup>9+</sup>
W
wangtao 已提交
2229

2230 2231 2232 2233 2234 2235 2236
getVolumeGroupInfos(networkId: string, callback: AsyncCallback<VolumeGroupInfos\>\): void

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2237 2238 2239

**参数:**

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

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

2256
### getVolumeGroupInfos<sup>9+</sup>
W
wangtao 已提交
2257

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

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

2262 2263 2264
**系统接口:** 该接口为系统接口

**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2265 2266 2267

**参数:**

2268 2269 2270
| 参数名     | 类型               | 必填 | 说明                 |
| ---------- | ------------------| ---- | -------------------- |
| networkId | string             | 是   | 设备的网络id。本地设备audio.LOCAL_NETWORK_ID。   |
W
wangtao 已提交
2271

2272 2273
**返回值:**

2274 2275 2276 2277
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;[VolumeGroupInfos](#volumegroupinfos9)&gt; | 音量组信息列表。 |

W
wangtao 已提交
2278 2279 2280
**示例:**

```js
2281 2282 2283 2284
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 已提交
2285
```
J
jiao_yanlin 已提交
2286

2287
### getVolumeGroupManager<sup>9+</sup>
J
jiao_yanlin 已提交
2288

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

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

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

2295
**参数:**
2296

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

**示例:**

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

J
jiao_yanlin 已提交
2314 2315
```

2316
### getVolumeGroupManager<sup>9+</sup>
J
jiao_yanlin 已提交
2317

2318
getVolumeGroupManager(groupId: number\): Promise<AudioVolumeGroupManager\>
2319

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

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

2324
**参数:**
2325

2326 2327 2328
| 参数名     | 类型                                      | 必填 | 说明              |
| ---------- | ---------------------------------------- | ---- | ---------------- |
| groupId    | number                                   | 是   | 音量组id。     |
2329

2330
**返回值:**
2331

2332 2333 2334
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt; [AudioVolumeGroupManager](#audiovolumegroupmanager9) &gt; | 音量组实例。 |
2335 2336 2337 2338

**示例:**

```js
2339 2340 2341 2342 2343 2344 2345 2346
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.');
}

2347 2348
```

2349
### on('volumeChange')<sup>9+</sup>
2350

2351
on(type: 'volumeChange', callback: Callback\<VolumeEvent>): void
2352

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

2355
**系统能力:** SystemCapability.Multimedia.Audio.Volume
2356 2357 2358

**参数:**

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

2364
**错误码:**
2365

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
2370
| 6800101 | if input parameter value error              |
2371 2372 2373 2374

**示例:**

```js
2375 2376 2377 2378
audioVolumeManager.on('volumeChange', (volumeEvent) => {
  console.info(`VolumeType of stream: ${volumeEvent.volumeType} `);
  console.info(`Volume level: ${volumeEvent.volume} `);
  console.info(`Whether to updateUI: ${volumeEvent.updateUi} `);
2379
});
2380 2381
```

2382
## AudioVolumeGroupManager<sup>9+</sup>
2383

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

2386
### setVolume<sup>9+</sup>
W
wangtao 已提交
2387

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

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

2392
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY
W
wangtao 已提交
2393

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

2396
**系统接口:** 该接口为系统接口
W
wangtao 已提交
2397

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

2400
**参数:**
W
wangtao 已提交
2401

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

**示例:**
2409

2410 2411 2412 2413 2414 2415 2416 2417
```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 已提交
2418 2419
```

2420
### setVolume<sup>9+</sup>
W
wangtao 已提交
2421

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

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

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

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2433 2434 2435

**参数:**

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

**返回值:**

2443 2444 2445
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
W
wangtao 已提交
2446 2447 2448 2449

**示例:**

```js
2450 2451 2452
audioVolumeGroupManager.setVolume(audio.AudioVolumeType.MEDIA, 10).then(() => {
  console.info('Promise returned to indicate a successful volume setting.');
});
W
wangtao 已提交
2453 2454
```

2455
### getVolume<sup>9+</sup>
W
wangtao 已提交
2456

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

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

2461
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2462 2463 2464

**参数:**

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

**示例:**

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

2482
### getVolume<sup>9+</sup>
W
wangtao 已提交
2483

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

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

2488
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2489 2490 2491

**参数:**

2492 2493 2494
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
W
wangtao 已提交
2495 2496 2497

**返回值:**

2498 2499 2500
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回音量大小。 |
W
wangtao 已提交
2501 2502 2503 2504

**示例:**

```js
2505 2506
audioVolumeGroupManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the volume is obtained ${value}.`);
W
wangtao 已提交
2507 2508 2509
});
```

2510
### getMinVolume<sup>9+</sup>
2511

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

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

2516
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2517 2518 2519

**参数:**

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

**示例:**

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

2537
### getMinVolume<sup>9+</sup>
2538

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

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

2543
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2544 2545 2546

**参数:**

2547 2548 2549
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
W
wangtao 已提交
2550 2551 2552

**返回值:**

2553 2554 2555
| 类型                  | 说明                      |
| --------------------- | ------------------------- |
| Promise&lt;number&gt; | Promise回调返回最小音量。 |
W
wangtao 已提交
2556 2557 2558 2559

**示例:**

```js
2560 2561
audioVolumeGroupManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promised returned to indicate that the minimum volume is obtained ${value}.`);
W
wangtao 已提交
2562 2563 2564
});
```

2565
### getMaxVolume<sup>9+</sup>
W
wangtao 已提交
2566

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

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

2571
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2572 2573 2574

**参数:**

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

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

2582 2583 2584 2585 2586 2587 2588 2589
```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 已提交
2590 2591
```

2592
### getMaxVolume<sup>9+</sup>
W
wangtao 已提交
2593

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

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

2598
**系统能力:** SystemCapability.Multimedia.Audio.Volume
W
wangtao 已提交
2599 2600 2601

**参数:**

2602 2603 2604
| 参数名     | 类型                                | 必填 | 说明         |
| ---------- | ----------------------------------- | ---- | ------------ |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。 |
W
wangtao 已提交
2605 2606 2607

**返回值:**

2608 2609 2610
| 类型                  | 说明                          |
| --------------------- | ----------------------------- |
| Promise&lt;number&gt; | Promise回调返回最大音量大小。 |
W
wangtao 已提交
2611 2612 2613 2614

**示例:**

```js
2615 2616 2617
audioVolumeGroupManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((data) => {
  console.info('Promised returned to indicate that the maximum volume is obtained.');
});
2618
```
2619

2620
### mute<sup>9+</sup>
2621

2622
mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback&lt;void&gt;): void
2623

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

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

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
2633 2634 2635

**参数:**

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

**示例:**

2644 2645 2646 2647 2648 2649 2650 2651
```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.');
});
2652
```
2653

2654
### mute<sup>9+</sup>
2655

2656
mute(volumeType: AudioVolumeType, mute: boolean): Promise&lt;void&gt;
2657

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

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

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Volume
2667 2668 2669

**参数:**

2670 2671 2672 2673
| 参数名     | 类型                                | 必填 | 说明                                  |
| ---------- | ----------------------------------- | ---- | ------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                          |
| mute       | boolean                             | 是   | 静音状态,true为静音,false为非静音。 |
2674 2675 2676

**返回值:**

2677 2678 2679
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | Promise回调表示成功还是失败。 |
2680 2681 2682 2683

**示例:**

```js
2684 2685 2686 2687
audioVolumeGroupManager.mute(audio.AudioVolumeType.MEDIA, true).then(() => {
  console.info('Promise returned to indicate that the stream is muted.');
});
```
J
jiao_yanlin 已提交
2688

2689
### isMute<sup>9+</sup>
2690

2691
isMute(volumeType: AudioVolumeType, callback: AsyncCallback&lt;boolean&gt;): void
2692

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

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

2697
**参数:**
2698

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

**示例:**

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

2716
### isMute<sup>9+</sup>
2717

2718
isMute(volumeType: AudioVolumeType): Promise&lt;boolean&gt;
2719

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

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

2724
**参数:**
2725

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

2730
**返回值:**
2731

2732 2733 2734
| 类型                   | 说明                                                   |
| ---------------------- | ------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回流静音状态,true为静音,false为非静音。 |
2735 2736 2737 2738

**示例:**

```js
2739 2740
audioVolumeGroupManager.isMute(audio.AudioVolumeType.MEDIA).then((value) => {
  console.info(`Promise returned to indicate that the mute status of the stream is obtained ${value}.`);
2741 2742 2743
});
```

2744
### setRingerMode<sup>9+</sup>
2745

2746
setRingerMode(mode: AudioRingMode, callback: AsyncCallback&lt;void&gt;): void
2747

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

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

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

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

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

2758
**参数:**
2759

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

2765 2766 2767 2768 2769 2770 2771
**示例:**

```js
audioVolumeGroupManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL, (err) => {
  if (err) {
    console.error(`Failed to set the ringer mode.​ ${err}`);
    return;
2772
  }
2773
  console.info('Callback invoked to indicate a successful setting of the ringer mode.');
2774 2775 2776
});
```

2777
### setRingerMode<sup>9+</sup>
2778

2779
setRingerMode(mode: AudioRingMode): Promise&lt;void&gt;
2780

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

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

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

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

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

2791
**参数:**
2792

2793 2794 2795
| 参数名 | 类型                            | 必填 | 说明           |
| ------ | ------------------------------- | ---- | -------------- |
| mode   | [AudioRingMode](#audioringmode) | 是   | 音频铃声模式。 |
2796

2797
**返回值:**
2798

2799 2800 2801
| 类型                | 说明                            |
| ------------------- | ------------------------------- |
| Promise&lt;void&gt; | Promise回调返回设置成功或失败。 |
2802 2803 2804 2805

**示例:**

```js
2806 2807 2808
audioVolumeGroupManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL).then(() => {
  console.info('Promise returned to indicate a successful setting of the ringer mode.');
});
2809 2810
```

2811
### getRingerMode<sup>9+</sup>
2812

2813
getRingerMode(callback: AsyncCallback&lt;AudioRingMode&gt;): void
2814

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

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

2819
**参数:**
2820

2821 2822 2823
| 参数名   | 类型                                                 | 必填 | 说明                     |
| -------- | ---------------------------------------------------- | ---- | ------------------------ |
| callback | AsyncCallback&lt;[AudioRingMode](#audioringmode)&gt; | 是   | 回调返回系统的铃声模式。 |
2824 2825 2826 2827

**示例:**

```js
2828 2829 2830 2831 2832 2833
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}.`);
2834 2835 2836
});
```

2837
### getRingerMode<sup>9+</sup>
2838

2839
getRingerMode(): Promise&lt;AudioRingMode&gt;
2840

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

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

2845 2846
**返回值:**

2847 2848 2849
| 类型                                           | 说明                            |
| ---------------------------------------------- | ------------------------------- |
| Promise&lt;[AudioRingMode](#audioringmode)&gt; | Promise回调返回系统的铃声模式。 |
2850 2851 2852 2853

**示例:**

```js
2854 2855
audioVolumeGroupManager.getRingerMode().then((value) => {
  console.info(`Promise returned to indicate that the ringer mode is obtained ${value}.`);
2856 2857 2858
});
```

2859
### on('ringerModeChange')<sup>9+</sup>
2860

2861
on(type: 'ringerModeChange', callback: Callback\<AudioRingMode>): void
2862

2863
监听铃声模式变化事件。
2864

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

2867
**参数:**
2868

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

**错误码:**

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

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

2882
**示例:**
J
jiao_yanlin 已提交
2883 2884

```js
2885 2886
audioVolumeGroupManager.on('ringerModeChange', (ringerMode) => {
  console.info(`Updated ringermode: ${ringerMode}`);
2887 2888
});
```
2889
### setMicrophoneMute<sup>9+</sup>
2890

2891
setMicrophoneMute(mute: boolean, callback: AsyncCallback&lt;void&gt;): void
2892

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

2895
**需要权限:** ohos.permission.MANAGE_AUDIO_CONFIG
2896

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

2899
**参数:**
2900

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

2906
**示例:**
J
jiao_yanlin 已提交
2907 2908

```js
2909 2910 2911 2912 2913 2914
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.');
2915
});
2916 2917
```

2918
### setMicrophoneMute<sup>9+</sup>
2919

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

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

2924 2925 2926
**需要权限:** ohos.permission.MANAGE_AUDIO_CONFIG

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

2928
**参数:**
2929

2930 2931 2932 2933 2934 2935 2936 2937 2938
| 参数名 | 类型    | 必填 | 说明                                          |
| ------ | ------- | ---- | --------------------------------------------- |
| mute   | boolean | 是   | 待设置的静音状态,true为静音,false为非静音。 |

**返回值:**

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

2940
**示例:**
J
jiao_yanlin 已提交
2941 2942

```js
2943 2944
audioVolumeGroupManager.setMicrophoneMute(true).then(() => {
  console.info('Promise returned to indicate that the microphone is muted.');
2945 2946 2947
});
```

2948
### isMicrophoneMute<sup>9+</sup>
2949

2950
isMicrophoneMute(callback: AsyncCallback&lt;boolean&gt;): void
2951

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

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

2956
**参数:**
2957

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

2962
**示例:**
J
jiao_yanlin 已提交
2963 2964

```js
2965 2966 2967 2968 2969 2970
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}.`);
2971
});
2972 2973
```

2974
### isMicrophoneMute<sup>9+</sup>
2975

2976
isMicrophoneMute(): Promise&lt;boolean&gt;
2977

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

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

2982
**返回值:**
2983

2984 2985 2986
| 类型                   | 说明                                                         |
| ---------------------- | ------------------------------------------------------------ |
| Promise&lt;boolean&gt; | Promise回调返回系统麦克风静音状态,true为静音,false为非静音。 |
2987

2988
**示例:**
J
jiao_yanlin 已提交
2989 2990

```js
2991 2992
audioVolumeGroupManager.isMicrophoneMute().then((value) => {
  console.info(`Promise returned to indicate that the mute status of the microphone is obtained ${value}.`);
2993 2994 2995
});
```

2996
### on('micStateChange')<sup>9+</sup>
2997

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

3000
监听系统麦克风状态更改事件。
3001

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

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

3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019
**参数:**

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

**错误码:**

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

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

3021
**示例:**
J
jiao_yanlin 已提交
3022 3023

```js
3024 3025
audioVolumeGroupManager.on('micStateChange', (micStateChange) => {
  console.info(`Current microphone status is: ${micStateChange.mute} `);
3026
});
3027 3028
```

W
wangzx0705 已提交
3029
### isVolumeUnadjustable<sup>10+</sup>
W
wangzx0705 已提交
3030

W
wangzx0705 已提交
3031
isVolumeUnadjustable(): boolean
W
wangzx0705 已提交
3032

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

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

**返回值:**

| 类型                   | 说明                                                   |
| ---------------------- | ------------------------------------------------------ |
W
wangzx0705 已提交
3041
| boolean            | 同步接口,返回固定音量模式开关状态,true为固定音量模式,false为非固定音量模式。 |
W
wangzx0705 已提交
3042 3043 3044 3045

**示例:**

```js
W
wangzx0705 已提交
3046
let volumeAdjustSwitch = audioVolumeGroupManager.isVolumeUnadjustable();
W
wangzx0705 已提交
3047
console.info(`Whether it is volume unadjustable: ${volumeAdjustSwitch}.`);
W
wangzx0705 已提交
3048 3049 3050 3051 3052 3053
```

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

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

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

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

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

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

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

**参数:**

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

W
wangzx0705 已提交
3071 3072 3073 3074 3075 3076
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3077 3078
| 6800101 | Invalid parameter error. Return by callback.                     |
| 6800301 | System error. Return by callback.                                |
W
wangzx0705 已提交
3079

W
wangzx0705 已提交
3080 3081 3082
**示例:**

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

**返回值:**

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

W
wangzx0705 已提交
3118 3119 3120 3121 3122 3123
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3124 3125
| 6800101 | Invalid parameter error. Return by promise.                     |
| 6800301 | System error. Return by promise.                                |
W
wangzx0705 已提交
3126

W
wangzx0705 已提交
3127 3128 3129
**示例:**

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

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

W
wangzx0705 已提交
3159 3160 3161 3162 3163 3164
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3165 3166
| 6800101 | Invalid parameter error. Return by callback.                     |
| 6800301 | System error. Return by callback.                                |
W
wangzx0705 已提交
3167

W
wangzx0705 已提交
3168 3169 3170
**示例:**

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

**返回值:**

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

W
wangzx0705 已提交
3206 3207 3208 3209 3210 3211
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3212 3213
| 6800101 | Invalid parameter error. Return by promise.                     |
| 6800301 | System error. Return by promise.                                |
W
wangzx0705 已提交
3214

W
wangzx0705 已提交
3215 3216 3217
**示例:**

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

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

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

W
wangzx0705 已提交
3229
获取音量增益dB值,使用callback方式异步返回结果。
W
wangzx0705 已提交
3230 3231 3232 3233 3234 3235 3236 3237

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

**参数:**

| 参数名     | 类型                                | 必填 | 说明                                                     |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
| volumeType | [AudioVolumeType](#audiovolumetype) | 是   | 音量流类型。                                             |
W
wangzx0705 已提交
3238
| volumeLevel | number                         | 是   | 音量等级。                                               |
W
wangzx0705 已提交
3239
| device     | [DeviceType](#devicetype)           | 是   | 设备类型。                                               |
W
wangzx0705 已提交
3240 3241 3242 3243 3244 3245 3246 3247
| callback   | AsyncCallback&lt;number&gt;           | 是   | 回调返回对应的音量增益dB值。                              |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3248 3249
| 6800101 | Invalid parameter error. Return by callback.                     |
| 6800301 | System error. Return by callback.                                |
W
wangzx0705 已提交
3250 3251 3252 3253 3254 3255 3256

**示例:**

```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 已提交
3257 3258
  } else {
    console.info(`Success to get the volume DB. ${dB}`);
W
wangzx0705 已提交
3259 3260 3261 3262 3263 3264 3265
  }
});
```
### getSystemVolumeInDb<sup>10+</sup>

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

W
wangzx0705 已提交
3266
获取音量增益dB值,使用Promise方式异步返回结果。
W
wangzx0705 已提交
3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281

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

**参数:**

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

**返回值:**

| 类型                  | 说明                               |
| --------------------- | ---------------------------------- |
W
wangzx0705 已提交
3282 3283 3284 3285 3286 3287 3288 3289
| Promise&lt;number&gt; | Promise回调返回对应的音量增益dB值。 |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3290 3291
| 6800101 | Invalid parameter error. Return by promise.                     |
| 6800301 | System error. Return by promise.                                |
W
wangzx0705 已提交
3292 3293 3294 3295

**示例:**

```js
W
wangzx0705 已提交
3296 3297
audioVolumeGroupManager.getSystemVolumeInDb(audio.AudioVolumeType.MEDIA, 3, audio.DeviceType.SPEAKER).then((value) => {
  console.info(`Success to get the volume DB. ${value}`);
W
wangzx0705 已提交
3298
}).catch((error) => {
W
wangzx0705 已提交
3299
  console.error(`Fail to adjust the system volume by step. ${error}`);
W
wangzx0705 已提交
3300 3301 3302
});
```

3303
## AudioStreamManager<sup>9+</sup>
3304

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

3307
### getCurrentAudioRendererInfoArray<sup>9+</sup>
3308

3309 3310 3311 3312 3313
getCurrentAudioRendererInfoArray(callback: AsyncCallback&lt;AudioRendererChangeInfoArray&gt;): void

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

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

3315
**参数:**
3316

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

3321
**示例:**
J
jiao_yanlin 已提交
3322 3323

```js
3324 3325
audioStreamManager.getCurrentAudioRendererInfoArray(async (err, AudioRendererChangeInfoArray) => {
  console.info('getCurrentAudioRendererInfoArray **** Get Callback Called ****');
3326
  if (err) {
3327
    console.error(`getCurrentAudioRendererInfoArray :ERROR: ${err}`);
3328
  } else {
3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349
    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 已提交
3350
  }
3351 3352 3353
});
```

3354
### getCurrentAudioRendererInfoArray<sup>9+</sup>
3355

3356
getCurrentAudioRendererInfoArray(): Promise&lt;AudioRendererChangeInfoArray&gt;
3357

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

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

3362
**返回值:**
3363

3364 3365 3366
| 类型                                                                              | 说明                                    |
| ---------------------------------------------------------------------------------| --------------------------------------- |
| Promise<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)>          | Promise对象,返回当前音频渲染器信息。      |
3367 3368 3369 3370

**示例:**

```js
3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398
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}`);
  });
}
3399 3400
```

3401
### getCurrentAudioCapturerInfoArray<sup>9+</sup>
3402

3403
getCurrentAudioCapturerInfoArray(callback: AsyncCallback&lt;AudioCapturerChangeInfoArray&gt;): void
3404

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

3407
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3408 3409 3410

**参数:**

3411 3412 3413
| 参数名        | 类型                                 | 必填      | 说明                                                      |
| ---------- | ----------------------------------- | --------- | -------------------------------------------------------- |
| callback   | AsyncCallback<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | 是    | 回调函数,返回当前音频采集器的信息。 |
3414 3415 3416 3417

**示例:**

```js
3418 3419
audioStreamManager.getCurrentAudioCapturerInfoArray(async (err, AudioCapturerChangeInfoArray) => {
  console.info('getCurrentAudioCapturerInfoArray **** Get Callback Called ****');
3420
  if (err) {
3421
    console.error(`getCurrentAudioCapturerInfoArray :ERROR: ${err}`);
3422
  } else {
3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441
    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}`);
        }
      }
    }
3442 3443 3444 3445
  }
});
```

3446
### getCurrentAudioCapturerInfoArray<sup>9+</sup>
3447

3448
getCurrentAudioCapturerInfoArray(): Promise&lt;AudioCapturerChangeInfoArray&gt;
3449

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

3452
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3453 3454 3455

**返回值:**

3456 3457 3458
| 类型                                                                         | 说明                                 |
| -----------------------------------------------------------------------------| ----------------------------------- |
| Promise<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)>      | Promise对象,返回当前音频渲染器信息。  |
3459 3460 3461 3462

**示例:**

```js
3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488
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}`);
  });
}
3489 3490
```

3491
### on('audioRendererChange')<sup>9+</sup>
3492

J
jiaoyanlin3 已提交
3493
on(type: 'audioRendererChange', callback: Callback&lt;AudioRendererChangeInfoArray&gt;): void
3494

3495
监听音频渲染器更改事件。
3496

3497
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
3498 3499 3500

**参数:**

3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512
| 参数名      | 类型        | 必填      | 说明                                                                     |
| -------- | ---------- | --------- | ------------------------------------------------------------------------ |
| type     | string     | 是        | 事件类型,支持的事件`'audioRendererChange'`:当音频渲染器发生更改时触发。     |
| callback | Callback<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | 是  |  回调函数。        |

**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
3513 3514 3515 3516

**示例:**

```js
3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536
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}`);
    }
3537
  }
3538
});
3539 3540
```

3541
### off('audioRendererChange')<sup>9+</sup>
3542

J
jiaoyanlin3 已提交
3543
off(type: 'audioRendererChange'): void
3544

3545
取消监听音频渲染器更改事件。
3546

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

3549
**参数:**
3550

3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561
| 参数名     | 类型     | 必填 | 说明              |
| -------- | ------- | ---- | ---------------- |
| type     | string  | 是   | 事件类型,支持的事件`'audioRendererChange'`:音频渲染器更改事件。 |

**错误码:**

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

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

**示例:**

```js
3566 3567
audioStreamManager.off('audioRendererChange');
console.info('######### RendererChange Off is called #########');
3568 3569
```

3570
### on('audioCapturerChange')<sup>9+</sup>
3571

J
jiaoyanlin3 已提交
3572
on(type: 'audioCapturerChange', callback: Callback&lt;AudioCapturerChangeInfoArray&gt;): void
3573

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

3576
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
3577 3578 3579

**参数:**

3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591
| 参数名     | 类型     | 必填      | 说明                                                                                           |
| -------- | ------- | --------- | ----------------------------------------------------------------------- |
| type     | string  | 是        | 事件类型,支持的事件`'audioCapturerChange'`:当音频采集器发生更改时触发。     |
| callback | Callback<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | 是     | 回调函数。   |

**错误码:**

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

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

3593 3594 3595
**示例:**

```js
3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614
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}`);
    }
3615 3616 3617 3618
  }
});
```

3619
### off('audioCapturerChange')<sup>9+</sup>
3620

J
jiaoyanlin3 已提交
3621
off(type: 'audioCapturerChange'): void;
3622

3623
取消监听音频采集器更改事件。
3624

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

3627
**参数:**
3628

3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639
| 参数名       | 类型     | 必填 | 说明                                                          |
| -------- | -------- | --- | ------------------------------------------------------------- |
| type     | string   |是   | 事件类型,支持的事件`'audioCapturerChange'`:音频采集器更改事件。 |

**错误码:**

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

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

3641 3642 3643
**示例:**

```js
3644 3645 3646
audioStreamManager.off('audioCapturerChange');
console.info('######### CapturerChange Off is called #########');

3647 3648
```

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

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

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

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

**参数:**

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

**示例:**

3666
```js
3667 3668 3669 3670
audioStreamManager.isActive(audio.AudioVolumeType.MEDIA, (err, value) => {
  if (err) {
    console.error(`Failed to obtain the active status of the stream. ${err}`);
    return;
3671
  }
3672
  console.info(`Callback invoked to indicate that the active status of the stream is obtained ${value}.`);
3673
});
3674 3675
```

3676
### isActive<sup>9+</sup>
3677

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

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

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

3684 3685 3686 3687 3688 3689
**参数:**

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

3690 3691
**返回值:**

3692 3693 3694
| 类型                   | 说明                                                     |
| ---------------------- | -------------------------------------------------------- |
| Promise&lt;boolean&gt; | Promise回调返回流的活跃状态,true为活跃,false为不活跃。 |
3695 3696 3697 3698

**示例:**

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

X
Xiangyu Li 已提交
3704 3705
### getAudioEffectInfoArray<sup>10+</sup>

3706
getAudioEffectInfoArray(usage: StreamUsage, callback: AsyncCallback&lt;AudioEffectInfoArray&gt;): void
X
Xiangyu Li 已提交
3707 3708 3709 3710 3711 3712 3713 3714 3715

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

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

**参数:**

| 参数名    | 类型                                | 必填     | 说明                         |
| -------- | ----------------------------------- | -------- | --------------------------- |
3716
| usage    | [StreamUsage](#streamusage)                                    | 是     |  音频流使用类型。                |
X
Xiangyu Li 已提交
3717 3718
| callback | AsyncCallback<[AudioEffectInfoArray](#audioeffectinfoarray10)> | 是     |  回调函数,返回当前音效模式的信息。|

3719 3720 3721 3722 3723 3724
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3725
| 6800101 | Invalid parameter error. Return by callback.|
3726

X
Xiangyu Li 已提交
3727 3728 3729
**示例:**

```js
3730
audioStreamManager.getAudioEffectInfoArray(audio.StreamUsage.STREAM_USAGE_MEDIA, async (err, audioEffectInfoArray) => {
X
Xiangyu Li 已提交
3731 3732 3733 3734 3735
  console.info('getAudioEffectInfoArray **** Get Callback Called ****');
  if (err) {
    console.error(`getAudioEffectInfoArray :ERROR: ${err}`);
    return;
  } else {
X
Xiangyu Li 已提交
3736
    console.info(`The effect modes are: ${audioEffectInfoArray}`);
X
Xiangyu Li 已提交
3737 3738 3739 3740 3741 3742
  }
});
```

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

3743
getAudioEffectInfoArray(usage: StreamUsage): Promise&lt;AudioEffectInfoArray&gt;
X
Xiangyu Li 已提交
3744 3745 3746 3747 3748 3749 3750 3751 3752

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

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

**参数:**

| 参数名    | 类型                                | 必填     | 说明                         |
| -------- | ----------------------------------- | -------- | --------------------------- |
Q
update  
Qin Peng 已提交
3753
| usage    | [StreamUsage](#streamusage)         | 是     |  音频流使用类型。               |
X
Xiangyu Li 已提交
3754 3755 3756 3757 3758 3759 3760

**返回值:**

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

3761 3762 3763 3764 3765 3766
**错误码:**

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

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
3767
| 6800101 | Invalid parameter error. Return by promise. |
3768

X
Xiangyu Li 已提交
3769 3770 3771
**示例:**

```js
3772
audioStreamManager.getAudioEffectInfoArray(audio.StreamUsage.STREAM_USAGE_MEDIA).then((audioEffectInfoArray) => {
X
Xiangyu Li 已提交
3773
  console.info('getAudioEffectInfoArray ######### Get Promise is called ##########');
X
Xiangyu Li 已提交
3774
  console.info(`The effect modes are: ${audioEffectInfoArray}`);
Q
update  
Qin Peng 已提交
3775 3776 3777
}).catch((err) => {
  console.error(`getAudioEffectInfoArray :ERROR: ${err}`);
});
X
Xiangyu Li 已提交
3778 3779
```

3780
## AudioRoutingManager<sup>9+</sup>
3781

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

3784
### getDevices<sup>9+</sup>
3785

3786 3787 3788 3789 3790
getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback&lt;AudioDeviceDescriptors&gt;): void

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
3791 3792 3793

**参数:**

3794 3795 3796 3797
| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
| deviceFlag | [DeviceFlag](#deviceflag)                                    | 是   | 设备类型的flag。     |
| callback   | AsyncCallback&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | 是   | 回调,返回设备列表。 |
3798 3799 3800 3801

**示例:**

```js
3802 3803 3804 3805 3806 3807
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.');
3808 3809 3810
});
```

3811
### getDevices<sup>9+</sup>
3812

3813
getDevices(deviceFlag: DeviceFlag): Promise&lt;AudioDeviceDescriptors&gt;
3814

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

3817 3818 3819 3820 3821 3822 3823
**系统能力:** SystemCapability.Multimedia.Audio.Device

**参数:**

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

**返回值:**

3827 3828 3829
| 类型                                                         | 说明                      |
| ------------------------------------------------------------ | ------------------------- |
| Promise&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt; | Promise回调返回设备列表。 |
3830 3831 3832 3833

**示例:**

```js
3834 3835
audioRoutingManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((data) => {
  console.info('Promise returned to indicate that the device list is obtained.');
3836 3837 3838
});
```

3839
### on('deviceChange')<sup>9+</sup>
3840

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

3843
设备更改。音频设备连接状态变化。
3844

3845
**系统能力:** SystemCapability.Multimedia.Audio.Device
3846 3847 3848

**参数:**

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

3855
**错误码:**
3856

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

3859 3860 3861
| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
| 6800101 | if input parameter value error              |
3862 3863 3864 3865

**示例:**

```js
3866 3867 3868 3869 3870
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);
3871 3872 3873
});
```

3874
### off('deviceChange')<sup>9+</sup>
3875

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

3878
取消订阅音频设备连接变化事件。
3879

3880
**系统能力:** SystemCapability.Multimedia.Audio.Device
3881 3882 3883

**参数:**

3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895
| 参数名   | 类型                                                | 必填 | 说明                                       |
| -------- | --------------------------------------------------- | ---- | ------------------------------------------ |
| type     | string                                              | 是   | 订阅的事件的类型。支持事件:'deviceChange' |
| callback | Callback<[DeviceChangeAction](#devicechangeaction)> | 否   | 获取设备更新详情。                         |

**错误码:**

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

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

3897
**示例:**
3898

3899
```js
W
wangtao 已提交
3900
audioRoutingManager.off('deviceChange');
3901
```
3902

3903
### selectInputDevice<sup>9+</sup>
3904

3905
selectInputDevice(inputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback&lt;void&gt;): void
3906

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

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

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

3913
**参数:**
3914

3915 3916 3917 3918
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| inputAudioDevices           | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输入设备类。               |
| callback                    | AsyncCallback&lt;void&gt;                                    | 是   | 回调,返回选择输入设备结果。 |
3919 3920 3921

**示例:**
```js
3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933
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,
3934
    displayName : "",
3935 3936 3937 3938 3939 3940 3941 3942 3943 3944
}];

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

3947
### selectInputDevice<sup>9+</sup>
3948

3949
selectInputDevice(inputAudioDevices: AudioDeviceDescriptors): Promise&lt;void&gt;
3950

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

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
3956 3957 3958

**参数:**

3959 3960 3961 3962 3963 3964 3965 3966 3967
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| inputAudioDevices           | [AudioDeviceDescriptors](#audiodevicedescriptors)            | 是   | 输入设备类。               |

**返回值:**

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

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

3971
```js
3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983
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,
3984
    displayName : "",
3985 3986 3987 3988 3989 3990 3991 3992 3993
}];

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

3996
### setCommunicationDevice<sup>9+</sup>
3997

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

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

4002
**系统能力:** SystemCapability.Multimedia.Audio.Communication
4003

4004
**参数:**
4005

4006 4007 4008 4009 4010
| 参数名     | 类型                                  | 必填 | 说明                     |
| ---------- | ------------------------------------- | ---- | ------------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是   | 音频设备类型。       |
| active     | boolean                               | 是   | 设备激活状态。           |
| callback   | AsyncCallback&lt;void&gt;             | 是   | 回调返回设置成功或失败。 |
4011 4012 4013 4014

**示例:**

```js
4015 4016 4017 4018 4019 4020
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.');
4021
});
4022 4023
```

4024
### setCommunicationDevice<sup>9+</sup>
4025

4026
setCommunicationDevice(deviceType: CommunicationDeviceType, active: boolean): Promise&lt;void&gt;
4027

4028 4029 4030
设置通信设备激活状态,使用Promise方式异步返回结果。

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

4032
**参数:**
4033

4034 4035 4036 4037
| 参数名     | 类型                                                   | 必填 | 说明               |
| ---------- | ----------------------------------------------------- | ---- | ------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9)  | 是   | 活跃音频设备类型。 |
| active     | boolean                                               | 是   | 设备激活状态。     |
4038

4039
**返回值:**
4040

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

4045 4046
**示例:**

J
jiao_yanlin 已提交
4047
```js
4048 4049
audioRoutingManager.setCommunicationDevice(audio.CommunicationDeviceType.SPEAKER, true).then(() => {
  console.info('Promise returned to indicate that the device is set to the active status.');
4050 4051
});
```
4052

4053
### isCommunicationDeviceActive<sup>9+</sup>
4054

4055
isCommunicationDeviceActive(deviceType: CommunicationDeviceType, callback: AsyncCallback&lt;boolean&gt;): void
4056

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

**系统能力:** SystemCapability.Multimedia.Audio.Communication
4060 4061 4062

**参数:**

4063 4064 4065 4066
| 参数名     | 类型                                                  | 必填 | 说明                     |
| ---------- | ---------------------------------------------------- | ---- | ------------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是   | 活跃音频设备类型。       |
| callback   | AsyncCallback&lt;boolean&gt;                         | 是   | 回调返回设备的激活状态。 |
4067 4068 4069 4070

**示例:**

```js
4071 4072 4073 4074
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 已提交
4075
  }
4076
  console.info('Callback invoked to indicate that the active status of the device is obtained.');
4077 4078 4079
});
```

4080
### isCommunicationDeviceActive<sup>9+</sup>
4081

4082
isCommunicationDeviceActive(deviceType: CommunicationDeviceType): Promise&lt;boolean&gt;
4083

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

4086
**系统能力:** SystemCapability.Multimedia.Audio.Communication
4087

4088
**参数:**
4089

4090 4091 4092
| 参数名     | 类型                                                  | 必填 | 说明               |
| ---------- | ---------------------------------------------------- | ---- | ------------------ |
| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是   | 活跃音频设备类型。 |
4093

4094
**返回值:**
4095

4096 4097 4098
| Type                   | Description                     |
| ---------------------- | ------------------------------- |
| Promise&lt;boolean&gt; | Promise回调返回设备的激活状态。 |
4099

4100 4101
**示例:**

J
jiao_yanlin 已提交
4102
```js
4103 4104
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 已提交
4105
});
4106
```
J
jiao_yanlin 已提交
4107

4108
### selectOutputDevice<sup>9+</sup>
4109

4110
selectOutputDevice(outputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback&lt;void&gt;): void
4111

4112 4113 4114 4115 4116
选择音频输出设备,当前只能选择一个输出设备,使用callback方式异步返回结果。

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

**系统能力:** SystemCapability.Multimedia.Audio.Device
4117 4118 4119

**参数:**

4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138
| 参数名                       | 类型                                                         | 必填 | 说明                      |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| 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,
4139
    displayName : "",
4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188
}];

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,
4189
    displayName : "",
4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223
}];

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 已提交
4224 4225
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240
    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,
4241
    displayName : "",
4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282
}];

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 已提交
4283 4284
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299
    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,
4300
    displayName : "",
4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311
}];

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}`);
  })
}
```

4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331
### 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,
4332
    rendererFlags : 0 }
4333 4334 4335 4336

async function getPreferOutputDevice() {
  audioRoutingManager.getPreferOutputDeviceForRendererInfo(rendererInfo, (err, desc) => {
    if (err) {
4337
      console.error(`Result ERROR: ${err}`);
4338
    } else {
4339
      console.info(`device descriptor: ${desc}`);
4340 4341 4342 4343 4344
    }
  });
}
```

4345
### getPreferOutputDeviceForRendererInfo<sup>10+</sup>
4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363
getPreferOutputDeviceForRendererInfo(rendererInfo: AudioRendererInfo): Promise&lt;AudioDeviceDescriptors&gt;

根据音频信息,返回优先级最高的输出设备,使用promise方式异步返回结果。

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

**参数:**

| 参数名                 | 类型                                                         | 必填 | 说明                      |
| ----------------------| ------------------------------------------------------------ | ---- | ------------------------- |
| rendererInfo          | [AudioRendererInfo](#audiorendererinfo8)                     | 是   | 表示渲染器信息。            |

**返回值:**

| 类型                  | 说明                         |
| --------------------- | --------------------------- |
| Promise&lt;[AudioDeviceDescriptors](#audiodevicedescriptors)&gt;   | Promise返回优先级最高的输出设备信息。 |

4364 4365 4366 4367 4368 4369 4370 4371
**错误码:**

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

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

4372 4373 4374 4375 4376 4377
**示例:**

```js
let rendererInfo = {
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4378
    rendererFlags : 0 }
4379 4380 4381

async function getPreferOutputDevice() {
  audioRoutingManager.getPreferOutputDeviceForRendererInfo(rendererInfo).then((desc) => {
4382
    console.info(`device descriptor: ${desc}`);
4383
  }).catch((err) => {
4384
    console.error(`Result ERROR: ${err}`);
4385 4386 4387 4388 4389 4390 4391 4392 4393 4394
  })
}
```

### on('preferOutputDeviceChangeForRendererInfo')<sup>10+</sup>

on(type: 'preferOutputDeviceChangeForRendererInfo', rendererInfo: AudioRendererInfo, callback: Callback<AudioDeviceDescriptors\>): void

订阅最高优先级输出设备变化事件,使用callback获取最高优先级输出设备。

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

4397 4398 4399 4400 4401 4402 4403 4404
**参数:**

| 参数名   | 类型                                                 | 必填 | 说明                                       |
| :------- | :--------------------------------------------------- | :--- | :----------------------------------------- |
| type     | string                                               | 是   | 订阅的事件的类型。支持事件:'preferOutputDeviceChangeForRendererInfo' |
| rendererInfo  | [AudioRendererInfo](#audiorendererinfo8)        | 是   | 表示渲染器信息。              |
| callback | Callback<[AudioDeviceDescriptors](#audiodevicedescriptors)\> | 是   | 获取优先级最高的输出设备信息。                         |

4405 4406 4407 4408 4409 4410 4411 4412
**错误码:**

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

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

4413 4414 4415 4416 4417 4418
**示例:**

```js
let rendererInfo = {
    content : audio.ContentType.CONTENT_TYPE_MUSIC,
    usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
4419
    rendererFlags : 0 }
4420 4421

audioRoutingManager.on('preferOutputDeviceChangeForRendererInfo', rendererInfo, (desc) => {
4422
  console.info(`device descriptor: ${desc}`);
4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440
});
```

### off('preferOutputDeviceChangeForRendererInfo')<sup>10+</sup>

off(type: 'preferOutputDeviceChangeForRendererInfo', callback?: Callback<AudioDeviceDescriptors\>): void

取消订阅最高优先级输出音频设备变化事件。

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

**参数:**

| 参数名   | 类型                                                | 必填 | 说明                                       |
| -------- | --------------------------------------------------- | ---- | ------------------------------------------ |
| type     | string                                              | 是   | 订阅的事件的类型。支持事件:'preferOutputDeviceChangeForRendererInfo' |
| callback | Callback<[AudioDeviceDescriptors](#audiodevicedescriptors)> | 否   | 监听方法的回调函数。                         |

4441 4442 4443 4444 4445 4446 4447 4448
**错误码:**

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

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

4449 4450 4451
**示例:**

```js
W
wangtao 已提交
4452
audioRoutingManager.off('preferOutputDeviceChangeForRendererInfo');
4453 4454
```

4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472
## 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/>此接口为系统接口。|
4473
| deviceDescriptors  | [AudioDeviceDescriptors](#audiodevicedescriptors)      | 是   | 否   | 音频设备描述。|
4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531

**示例:**

```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/>此接口为系统接口。|
4532
| deviceDescriptors  | [AudioDeviceDescriptors](#audiodevicedescriptors)      | 是   | 否   | 音频设备描述。|
4533 4534 4535 4536

**示例:**

```js
4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565
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 已提交
4566
  }
4567 4568 4569
});
```

4570 4571
## AudioEffectInfoArray<sup>10+</sup>

Q
update  
Qin Peng 已提交
4572
待查询ContentType和StreamUsage组合场景下的音效模式数组类型,[AudioEffectMode](#audioeffectmode10)数组,只读。
4573

4574
## AudioDeviceDescriptors
Z
zengyawen 已提交
4575

4576
设备属性数组类型,为[AudioDeviceDescriptor](#audiodevicedescriptor)的数组,只读。
M
mamingshuai 已提交
4577

4578
## AudioDeviceDescriptor
Z
zengyawen 已提交
4579

4580
描述音频设备。
Z
zengyawen 已提交
4581

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

4584 4585 4586 4587
| 名称                          | 类型                       | 可读 | 可写 | 说明       |
| ----------------------------- | -------------------------- | ---- | ---- | ---------- |
| deviceRole                    | [DeviceRole](#devicerole)  | 是   | 否   | 设备角色。 |
| deviceType                    | [DeviceType](#devicetype)  | 是   | 否   | 设备类型。 |
J
jiao_yanlin 已提交
4588
| id<sup>9+</sup>               | number                     | 是   | 否   | 设备id,唯一。  |
J
jiaoyanlin3 已提交
4589 4590
| name<sup>9+</sup>             | string                     | 是   | 否   | 设备名称。<br>如果是蓝牙设备,需要申请权限ohos.permission.USE_BLUETOOTH。 |
| address<sup>9+</sup>          | string                     | 是   | 否   | 设备地址。<br>如果是蓝牙设备,需要申请权限ohos.permission.USE_BLUETOOTH。 |
4591 4592 4593
| 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 已提交
4594
| displayName<sup>10+</sup>     | string                     | 是   | 否   | 设备显示名。 |
4595 4596 4597
| networkId<sup>9+</sup>        | string                     | 是   | 否   | 设备组网的ID。<br/>此接口为系统接口。 |
| interruptGroupId<sup>9+</sup> | number                     | 是   | 否   | 设备所处的焦点组ID。<br/>此接口为系统接口。 |
| volumeGroupId<sup>9+</sup>    | number                     | 是   | 否   | 设备所处的音量组ID。<br/>此接口为系统接口。 |
Z
zengyawen 已提交
4598

4599 4600 4601
**示例:**

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

4604 4605 4606
function displayDeviceProp(value) {
  deviceRoleValue = value.deviceRole;
  deviceTypeValue = value.deviceType;
4607
}
4608

4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621
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');
  }
});
```
4622

4623
## AudioRendererFilter<sup>9+</sup>
4624

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

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

4629 4630
| 名称          | 类型                                     | 必填 | 说明          |
| -------------| ---------------------------------------- | ---- | -------------- |
4631
| uid          | number                                   |  否  | 表示应用ID。<br> **系统能力:** SystemCapability.Multimedia.Audio.Core|
4632 4633
| rendererInfo | [AudioRendererInfo](#audiorendererinfo8) |  否  | 表示渲染器信息。<br> **系统能力:** SystemCapability.Multimedia.Audio.Renderer|
| rendererId   | number                                   |  否  | 音频流唯一id。<br> **系统能力:** SystemCapability.Multimedia.Audio.Renderer|
4634 4635 4636 4637

**示例:**

```js
4638 4639 4640 4641 4642 4643 4644
let outputAudioRendererFilter = {
  "uid":20010041,
  "rendererInfo": {
    "contentType":audio.ContentType.CONTENT_TYPE_MUSIC,
    "streamUsage":audio.StreamUsage.STREAM_USAGE_MEDIA,
    "rendererFlags":0 },
  "rendererId":0 };
4645 4646
```

4647
## AudioRenderer<sup>8+</sup>
Z
zengyawen 已提交
4648

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

4651
### 属性
Z
zengyawen 已提交
4652

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

4655 4656 4657
| 名称  | 类型                     | 可读 | 可写 | 说明               |
| ----- | -------------------------- | ---- | ---- | ------------------ |
| state<sup>8+</sup> | [AudioState](#audiostate8) | 是   | 否   | 音频渲染器的状态。 |
Z
zengyawen 已提交
4658 4659 4660

**示例:**

J
jiao_yanlin 已提交
4661
```js
4662
let state = audioRenderer.state;
Z
zengyawen 已提交
4663 4664
```

4665
### getRendererInfo<sup>8+</sup>
Z
zengyawen 已提交
4666

4667
getRendererInfo(callback: AsyncCallback<AudioRendererInfo\>): void
Z
zengyawen 已提交
4668

4669
获取当前被创建的音频渲染器的信息,使用callback方式异步返回结果。
Z
zengyawen 已提交
4670

4671
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4672 4673 4674

**参数:**

4675 4676 4677
| 参数名   | 类型                                                     | 必填 | 说明                   |
| :------- | :------------------------------------------------------- | :--- | :--------------------- |
| callback | AsyncCallback<[AudioRendererInfo](#audiorendererinfo8)\> | 是   | 返回音频渲染器的信息。 |
Z
zengyawen 已提交
4678 4679 4680

**示例:**

J
jiao_yanlin 已提交
4681
```js
4682 4683 4684 4685 4686
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 已提交
4687
});
Z
zengyawen 已提交
4688 4689
```

4690
### getRendererInfo<sup>8+</sup>
Z
zengyawen 已提交
4691

4692
getRendererInfo(): Promise<AudioRendererInfo\>
Z
zengyawen 已提交
4693

4694
获取当前被创建的音频渲染器的信息,使用Promise方式异步返回结果。
Z
zengyawen 已提交
4695

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

4698
**返回值:**
Z
zengyawen 已提交
4699

4700 4701 4702
| 类型                                               | 说明                            |
| -------------------------------------------------- | ------------------------------- |
| Promise<[AudioRendererInfo](#audiorendererinfo8)\> | Promise用于返回音频渲染器信息。 |
Z
zengyawen 已提交
4703 4704 4705

**示例:**

J
jiao_yanlin 已提交
4706
```js
4707 4708 4709 4710 4711 4712 4713 4714
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 已提交
4715 4716
```

4717
### getStreamInfo<sup>8+</sup>
Z
zengyawen 已提交
4718

4719
getStreamInfo(callback: AsyncCallback<AudioStreamInfo\>): void
Z
zengyawen 已提交
4720

4721
获取音频流信息,使用callback方式异步返回结果。
Z
zengyawen 已提交
4722

4723
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4724 4725 4726

**参数:**

4727 4728 4729
| 参数名   | 类型                                                 | 必填 | 说明                 |
| :------- | :--------------------------------------------------- | :--- | :------------------- |
| callback | AsyncCallback<[AudioStreamInfo](#audiostreaminfo8)\> | 是   | 回调返回音频流信息。 |
Z
zengyawen 已提交
4730 4731 4732

**示例:**

J
jiao_yanlin 已提交
4733
```js
4734 4735 4736 4737 4738 4739
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 已提交
4740
});
Z
zengyawen 已提交
4741 4742
```

4743
### getStreamInfo<sup>8+</sup>
Z
zengyawen 已提交
4744

4745
getStreamInfo(): Promise<AudioStreamInfo\>
Z
zengyawen 已提交
4746

4747
获取音频流信息,使用Promise方式异步返回结果。
Z
zengyawen 已提交
4748

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

4751 4752 4753 4754 4755
**返回值:**

| 类型                                           | 说明                   |
| :--------------------------------------------- | :--------------------- |
| Promise<[AudioStreamInfo](#audiostreaminfo8)\> | Promise返回音频流信息. |
Z
zengyawen 已提交
4756 4757 4758

**示例:**

J
jiao_yanlin 已提交
4759
```js
4760 4761 4762 4763 4764 4765 4766 4767 4768
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 已提交
4769 4770
```

4771
### getAudioStreamId<sup>9+</sup>
4772

4773
getAudioStreamId(callback: AsyncCallback<number\>): void
4774

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

4777
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
4778 4779 4780

**参数:**

4781 4782 4783
| 参数名   | 类型                                                 | 必填 | 说明                 |
| :------- | :--------------------------------------------------- | :--- | :------------------- |
| callback | AsyncCallback<number\> | 是   | 回调返回音频流id。 |
4784 4785 4786 4787

**示例:**

```js
4788 4789
audioRenderer.getAudioStreamId((err, streamid) => {
  console.info(`Renderer GetStreamId: ${streamid}`);
4790 4791 4792
});
```

4793
### getAudioStreamId<sup>9+</sup>
4794

4795
getAudioStreamId(): Promise<number\>
4796

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

4799
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
4800 4801 4802

**返回值:**

4803 4804 4805
| 类型                                           | 说明                   |
| :--------------------------------------------- | :--------------------- |
| Promise<number\> | Promise返回音频流id。 |
4806 4807 4808 4809

**示例:**

```js
4810 4811
audioRenderer.getAudioStreamId().then((streamid) => {
  console.info(`Renderer getAudioStreamId: ${streamid}`);
4812
}).catch((err) => {
4813
  console.error(`ERROR: ${err}`);
4814 4815 4816
});
```

Q
Qin Peng 已提交
4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828
### setAudioEffectMode<sup>10+</sup>

setAudioEffectMode(mode: AudioEffectMode, callback: AsyncCallback\<void>): void

设置当前音效模式。使用callback方式异步返回结果。

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

**参数:**

| 参数名   | 类型                                     | 必填 | 说明                     |
| -------- | ---------------------------------------- | ---- | ------------------------ |
Q
update  
Qin Peng 已提交
4829 4830
| mode     | [AudioEffectMode](#audioeffectmode10)    | 是   | 音效模式。               |
| callback | AsyncCallback\<void>                     | 是   | 用于返回执行结果的回调。  |
Q
Qin Peng 已提交
4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855

**示例:**

```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 已提交
4856
| mode   | [AudioEffectMode](#audioeffectmode10)   | 是   | 音效模式。 |
Q
Qin Peng 已提交
4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891

**返回值:**

| 类型           | 说明                      |
| -------------- | ------------------------- |
| 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 已提交
4892 4893 4894 4895 4896
  if (err) {
    console.error('Failed to get params');
  } else {
    console.info(`getAudioEffectMode: ${effectmode}`);
  }
Q
Qin Peng 已提交
4897 4898 4899
});
```

Q
update  
Qin Peng 已提交
4900
### getAudioEffectMode<sup>10+</sup>
Q
Qin Peng 已提交
4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923

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}`);
});
```

4924
### start<sup>8+</sup>
Z
zengyawen 已提交
4925

4926
start(callback: AsyncCallback<void\>): void
Z
zengyawen 已提交
4927

4928
启动音频渲染器。使用callback方式异步返回结果。
Z
zengyawen 已提交
4929

4930
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4931 4932 4933

**参数:**

4934 4935 4936
| 参数名   | 类型                 | 必填 | 说明       |
| -------- | -------------------- | ---- | ---------- |
| callback | AsyncCallback\<void> | 是   | 回调函数。 |
Z
zengyawen 已提交
4937 4938 4939

**示例:**

J
jiao_yanlin 已提交
4940
```js
4941
audioRenderer.start((err) => {
J
jiao_yanlin 已提交
4942
  if (err) {
4943
    console.error('Renderer start failed.');
J
jiao_yanlin 已提交
4944
  } else {
4945
    console.info('Renderer start success.');
J
jiao_yanlin 已提交
4946
  }
L
lwx1059628 已提交
4947
});
Z
zengyawen 已提交
4948 4949
```

4950
### start<sup>8+</sup>
Z
zengyawen 已提交
4951

4952
start(): Promise<void\>
Z
zengyawen 已提交
4953

4954
启动音频渲染器。使用Promise方式异步返回结果。
Z
zengyawen 已提交
4955

4956
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4957 4958 4959

**返回值:**

4960 4961 4962
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
4963 4964 4965

**示例:**

J
jiao_yanlin 已提交
4966
```js
4967 4968
audioRenderer.start().then(() => {
  console.info('Renderer started');
L
lwx1059628 已提交
4969
}).catch((err) => {
4970
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
4971
});
Z
zengyawen 已提交
4972 4973
```

4974
### pause<sup>8+</sup>
Z
zengyawen 已提交
4975

4976
pause(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
4977

4978
暂停渲染。使用callback方式异步返回结果。
Z
zengyawen 已提交
4979

4980
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
4981 4982 4983

**参数:**

4984 4985 4986
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
4987 4988 4989

**示例:**

J
jiao_yanlin 已提交
4990
```js
4991 4992 4993 4994 4995 4996
audioRenderer.pause((err) => {
  if (err) {
    console.error('Renderer pause failed');
  } else {
    console.info('Renderer paused.');
  }
L
lwx1059628 已提交
4997
});
Z
zengyawen 已提交
4998 4999
```

5000
### pause<sup>8+</sup>
Z
zengyawen 已提交
5001

5002
pause(): Promise\<void>
Z
zengyawen 已提交
5003

5004
暂停渲染。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5005

5006
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5007 5008 5009

**返回值:**

5010 5011 5012
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
5013 5014 5015

**示例:**

J
jiao_yanlin 已提交
5016
```js
5017 5018
audioRenderer.pause().then(() => {
  console.info('Renderer paused');
L
lwx1059628 已提交
5019
}).catch((err) => {
5020
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5021
});
Z
zengyawen 已提交
5022 5023
```

5024
### drain<sup>8+</sup>
Z
zengyawen 已提交
5025

5026
drain(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5027

5028
检查缓冲区是否已被耗尽。使用callback方式异步返回结果。
Z
zengyawen 已提交
5029

5030
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5031 5032 5033

**参数:**

5034 5035 5036
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
5037 5038 5039

**示例:**

J
jiao_yanlin 已提交
5040
```js
5041
audioRenderer.drain((err) => {
J
jiao_yanlin 已提交
5042
  if (err) {
5043
    console.error('Renderer drain failed');
J
jiao_yanlin 已提交
5044
  } else {
5045
    console.info('Renderer drained.');
J
jiao_yanlin 已提交
5046
  }
L
lwx1059628 已提交
5047
});
Z
zengyawen 已提交
5048 5049
```

5050
### drain<sup>8+</sup>
Z
zengyawen 已提交
5051

5052
drain(): Promise\<void>
Z
zengyawen 已提交
5053

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

5056
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5057 5058 5059

**返回值:**

5060 5061 5062
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
5063 5064 5065

**示例:**

J
jiao_yanlin 已提交
5066
```js
5067 5068
audioRenderer.drain().then(() => {
  console.info('Renderer drained successfully');
L
lwx1059628 已提交
5069
}).catch((err) => {
5070
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5071
});
Z
zengyawen 已提交
5072 5073 5074 5075
```

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

5076
stop(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5077

5078
停止渲染。使用callback方式异步返回结果。
Z
zengyawen 已提交
5079

5080
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5081 5082 5083

**参数:**

5084 5085 5086
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
5087 5088 5089

**示例:**

J
jiao_yanlin 已提交
5090
```js
5091
audioRenderer.stop((err) => {
J
jiao_yanlin 已提交
5092
  if (err) {
5093
    console.error('Renderer stop failed');
J
jiao_yanlin 已提交
5094
  } else {
5095
    console.info('Renderer stopped.');
J
jiao_yanlin 已提交
5096
  }
L
lwx1059628 已提交
5097
});
Z
zengyawen 已提交
5098 5099 5100 5101
```

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

5102
stop(): Promise\<void>
Z
zengyawen 已提交
5103

5104
停止渲染。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5105

5106
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5107 5108 5109

**返回值:**

5110 5111 5112
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
5113

5114 5115 5116 5117 5118
**示例:**

```js
audioRenderer.stop().then(() => {
  console.info('Renderer stopped successfully');
L
lwx1059628 已提交
5119
}).catch((err) => {
5120
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5121
});
Z
zengyawen 已提交
5122 5123 5124 5125
```

### release<sup>8+</sup>

5126
release(callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5127

5128
释放音频渲染器。使用callback方式异步返回结果。
Z
zengyawen 已提交
5129

5130
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5131 5132 5133

**参数:**

5134 5135 5136
| 参数名   | 类型                 | 必填 | 说明             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 返回回调的结果。 |
Z
zengyawen 已提交
5137 5138 5139

**示例:**

J
jiao_yanlin 已提交
5140
```js
5141
audioRenderer.release((err) => {
J
jiao_yanlin 已提交
5142
  if (err) {
5143
    console.error('Renderer release failed');
J
jiao_yanlin 已提交
5144
  } else {
5145
    console.info('Renderer released.');
J
jiao_yanlin 已提交
5146
  }
L
lwx1059628 已提交
5147
});
Z
zengyawen 已提交
5148 5149 5150 5151
```

### release<sup>8+</sup>

5152
release(): Promise\<void>
Z
zengyawen 已提交
5153

5154
释放渲染器。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5155

5156
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5157 5158 5159

**返回值:**

5160 5161 5162
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | Promise方式异步返回结果。 |
Z
zengyawen 已提交
5163 5164 5165

**示例:**

J
jiao_yanlin 已提交
5166
```js
5167 5168
audioRenderer.release().then(() => {
  console.info('Renderer released successfully');
L
lwx1059628 已提交
5169
}).catch((err) => {
5170
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5171
});
Z
zengyawen 已提交
5172 5173
```

5174
### write<sup>8+</sup>
Z
zengyawen 已提交
5175

5176
write(buffer: ArrayBuffer, callback: AsyncCallback\<number>): void
Z
zengyawen 已提交
5177

5178
写入缓冲区。使用callback方式异步返回结果。
Z
zengyawen 已提交
5179

5180
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5181 5182 5183

**参数:**

5184 5185 5186 5187
| 参数名   | 类型                   | 必填 | 说明                                                |
| -------- | ---------------------- | ---- | --------------------------------------------------- |
| buffer   | ArrayBuffer            | 是   | 要写入缓冲区的数据。                                |
| callback | AsyncCallback\<number> | 是   | 回调如果成功,返回写入的字节数,否则返回errorcode。 |
Z
zengyawen 已提交
5188 5189 5190

**示例:**

J
jiao_yanlin 已提交
5191
```js
J
jiao_yanlin 已提交
5192
let bufferSize;
5193 5194
audioRenderer.getBufferSize().then((data)=> {
  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
J
jiao_yanlin 已提交
5195 5196
  bufferSize = data;
  }).catch((err) => {
5197
  console.error(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
J
jiao_yanlin 已提交
5198
  });
5199 5200 5201 5202 5203 5204 5205
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';
5206
let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY);
5207 5208 5209 5210
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++) {
5211
    let options = {
J
jiao_yanlin 已提交
5212 5213
      offset: i * bufferSize,
      length: bufferSize
5214 5215 5216
    }
    let readsize = await fs.read(file.fd, buf, options)
    let writeSize = await new Promise((resolve,reject)=>{
J
jiao_yanlin 已提交
5217
      audioRenderer.write(buf,(err,writeSize)=>{
5218 5219 5220 5221 5222 5223 5224
        if(err){
          reject(err)
        }else{
          resolve(writeSize)
        }
      })
    })	  
5225 5226 5227
  }
});

5228

Z
zengyawen 已提交
5229 5230
```

5231
### write<sup>8+</sup>
Z
zengyawen 已提交
5232

5233
write(buffer: ArrayBuffer): Promise\<number>
5234

5235
写入缓冲区。使用Promise方式异步返回结果。
5236

5237
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5238 5239 5240

**返回值:**

5241 5242 5243
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
| Promise\<number> | Promise返回结果,如果成功,返回写入的字节数,否则返回errorcode。 |
Z
zengyawen 已提交
5244 5245 5246

**示例:**

J
jiao_yanlin 已提交
5247
```js
J
jiao_yanlin 已提交
5248
let bufferSize;
5249 5250
audioRenderer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
J
jiao_yanlin 已提交
5251 5252
  bufferSize = data;
  }).catch((err) => {
5253
  console.info(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
J
jiao_yanlin 已提交
5254
  });
5255 5256 5257 5258 5259 5260 5261
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';
5262
let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY);
5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278
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 已提交
5279 5280 5281 5282
```

### getAudioTime<sup>8+</sup>

5283
getAudioTime(callback: AsyncCallback\<number>): void
Z
zengyawen 已提交
5284

5285
获取时间戳(从 1970 年 1 月 1 日开始)。使用callback方式异步返回结果。
Z
zengyawen 已提交
5286

5287
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5288 5289 5290

**参数:**

5291 5292 5293
| 参数名   | 类型                   | 必填 | 说明             |
| -------- | ---------------------- | ---- | ---------------- |
| callback | AsyncCallback\<number> | 是   | 回调返回时间戳。 |
Z
zengyawen 已提交
5294 5295 5296

**示例:**

J
jiao_yanlin 已提交
5297
```js
5298
audioRenderer.getAudioTime((err, timestamp) => {
5299
  console.info(`Current timestamp: ${timestamp}`);
L
lwx1059628 已提交
5300
});
Z
zengyawen 已提交
5301 5302 5303 5304
```

### getAudioTime<sup>8+</sup>

5305
getAudioTime(): Promise\<number>
Z
zengyawen 已提交
5306

5307
获取时间戳(从 1970 年 1 月 1 日开始)。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5308

5309
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5310 5311 5312

**返回值:**

5313 5314 5315
| 类型             | 描述                    |
| ---------------- | ----------------------- |
| Promise\<number> | Promise回调返回时间戳。 |
Z
zengyawen 已提交
5316 5317 5318

**示例:**

J
jiao_yanlin 已提交
5319
```js
5320 5321
audioRenderer.getAudioTime().then((timestamp) => {
  console.info(`Current timestamp: ${timestamp}`);
L
lwx1059628 已提交
5322
}).catch((err) => {
5323
  console.error(`ERROR: ${err}`);
5324 5325 5326 5327 5328
});
```

### getBufferSize<sup>8+</sup>

5329
getBufferSize(callback: AsyncCallback\<number>): void
5330

5331
获取音频渲染器的最小缓冲区大小。使用callback方式异步返回结果。
5332

5333
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
5334 5335 5336

**参数:**

5337 5338 5339
| 参数名   | 类型                   | 必填 | 说明                 |
| -------- | ---------------------- | ---- | -------------------- |
| callback | AsyncCallback\<number> | 是   | 回调返回缓冲区大小。 |
5340 5341 5342 5343

**示例:**

```js
5344 5345 5346
let bufferSize = audioRenderer.getBufferSize(async(err, bufferSize) => {
  if (err) {
    console.error('getBufferSize error');
5347 5348 5349 5350 5351 5352
  }
});
```

### getBufferSize<sup>8+</sup>

5353
getBufferSize(): Promise\<number>
5354

5355
获取音频渲染器的最小缓冲区大小。使用Promise方式异步返回结果。
5356

5357
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
5358 5359 5360

**返回值:**

5361 5362 5363
| 类型             | 说明                        |
| ---------------- | --------------------------- |
| Promise\<number> | promise回调返回缓冲区大小。 |
5364 5365 5366 5367 5368

**示例:**

```js
let bufferSize;
5369 5370
audioRenderer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
5371 5372
  bufferSize = data;
}).catch((err) => {
5373
  console.error(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
L
lwx1059628 已提交
5374
});
Z
zengyawen 已提交
5375 5376
```

5377
### setRenderRate<sup>8+</sup>
Z
zengyawen 已提交
5378

5379
setRenderRate(rate: AudioRendererRate, callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5380

5381
设置音频渲染速率。使用callback方式异步返回结果。
Z
zengyawen 已提交
5382

5383
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5384 5385 5386

**参数:**

5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422
| 参数名   | 类型                                     | 必填 | 说明                     |
| -------- | ---------------------------------------- | ---- | ------------------------ |
| 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 已提交
5423 5424 5425

**示例:**

J
jiao_yanlin 已提交
5426
```js
5427 5428 5429 5430
audioRenderer.setRenderRate(audio.AudioRendererRate.RENDER_RATE_NORMAL).then(() => {
  console.info('setRenderRate SUCCESS');
}).catch((err) => {
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5431
});
Z
zengyawen 已提交
5432 5433
```

5434
### getRenderRate<sup>8+</sup>
Z
zengyawen 已提交
5435

5436
getRenderRate(callback: AsyncCallback\<AudioRendererRate>): void
Z
zengyawen 已提交
5437

5438
获取当前渲染速率。使用callback方式异步返回结果。
Z
zengyawen 已提交
5439

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

5442
**参数:**
Z
zengyawen 已提交
5443

5444 5445 5446
| 参数名   | 类型                                                    | 必填 | 说明               |
| -------- | ------------------------------------------------------- | ---- | ------------------ |
| callback | AsyncCallback<[AudioRendererRate](#audiorendererrate8)> | 是   | 回调返回渲染速率。 |
Z
zengyawen 已提交
5447 5448 5449

**示例:**

J
jiao_yanlin 已提交
5450
```js
5451 5452 5453
audioRenderer.getRenderRate((err, renderrate) => {
  console.info(`getRenderRate: ${renderrate}`);
});
Z
zengyawen 已提交
5454 5455
```

5456
### getRenderRate<sup>8+</sup>
Z
zengyawen 已提交
5457

5458
getRenderRate(): Promise\<AudioRendererRate>
Z
zengyawen 已提交
5459

5460
获取当前渲染速率。使用Promise方式异步返回结果。
Z
zengyawen 已提交
5461

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

5464
**返回值:**
Z
zengyawen 已提交
5465

5466 5467 5468
| 类型                                              | 说明                      |
| ------------------------------------------------- | ------------------------- |
| Promise<[AudioRendererRate](#audiorendererrate8)> | Promise回调返回渲染速率。 |
Z
zengyawen 已提交
5469 5470 5471

**示例:**

J
jiao_yanlin 已提交
5472
```js
5473 5474 5475 5476
audioRenderer.getRenderRate().then((renderRate) => {
  console.info(`getRenderRate: ${renderRate}`);
}).catch((err) => {
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
5477
});
Z
zengyawen 已提交
5478
```
5479
### setInterruptMode<sup>9+</sup>
Z
zengyawen 已提交
5480

5481
setInterruptMode(mode: InterruptMode): Promise&lt;void&gt;
Z
zengyawen 已提交
5482

5483
设置应用的焦点模型。使用Promise异步回调。
Z
zengyawen 已提交
5484

5485
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
Z
zengyawen 已提交
5486 5487 5488

**参数:**

5489 5490 5491 5492 5493 5494 5495 5496 5497
| 参数名     | 类型                                | 必填   | 说明        |
| ---------- | ---------------------------------- | ------ | ---------- |
| mode       | [InterruptMode](#interruptmode9)    | 是     | 焦点模型。  |

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | 以Promise对象返回结果,设置成功时返回undefined,否则返回error。 |
Z
zengyawen 已提交
5498 5499 5500

**示例:**

J
jiao_yanlin 已提交
5501
```js
5502 5503 5504 5505 5506 5507
let mode = 0;
audioRenderer.setInterruptMode(mode).then(data=>{
  console.info('setInterruptMode Success!');
}).catch((err) => {
  console.error(`setInterruptMode Fail: ${err}`);
});
Z
zengyawen 已提交
5508
```
5509
### setInterruptMode<sup>9+</sup>
Z
zengyawen 已提交
5510

5511
setInterruptMode(mode: InterruptMode, callback: AsyncCallback\<void>): void
Z
zengyawen 已提交
5512

5513
设置应用的焦点模型。使用Callback回调返回执行结果。
Z
zengyawen 已提交
5514

5515
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
Z
zengyawen 已提交
5516 5517 5518

**参数:**

5519 5520 5521 5522
| 参数名   | 类型                                | 必填   | 说明            |
| ------- | ----------------------------------- | ------ | -------------- |
|mode     | [InterruptMode](#interruptmode9)     | 是     | 焦点模型。|
|callback | AsyncCallback\<void>                 | 是     |回调返回执行结果。|
Z
zengyawen 已提交
5523 5524 5525

**示例:**

J
jiao_yanlin 已提交
5526
```js
5527 5528 5529 5530
let mode = 1;
audioRenderer.setInterruptMode(mode, (err, data)=>{
  if(err){
    console.error(`setInterruptMode Fail: ${err}`);
5531
  }
5532
  console.info('setInterruptMode Success!');
L
lwx1059628 已提交
5533
});
Z
zengyawen 已提交
5534 5535
```

5536
### setVolume<sup>9+</sup>
Z
zengyawen 已提交
5537

5538
setVolume(volume: number): Promise&lt;void&gt;
Z
zengyawen 已提交
5539

5540
设置应用的音量。使用Promise异步回调。
5541

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

5544
**参数:**
Z
zengyawen 已提交
5545

5546 5547 5548
| 参数名     | 类型    | 必填   | 说明                 |
| ---------- | ------- | ------ | ------------------- |
| volume     | number  | 是     | 音量值范围为0.0-1.0。 |
Z
zengyawen 已提交
5549

5550
**返回值:**
5551

5552 5553 5554
| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;void&gt; | 以Promise对象返回结果,设置成功时返回undefined,否则返回error。 |
5555

5556
**示例:**
5557

5558
```js
5559
audioRenderer.setVolume(0.5).then(data=>{
5560 5561 5562 5563 5564 5565
  console.info('setVolume Success!');
}).catch((err) => {
  console.error(`setVolume Fail: ${err}`);
});
```
### setVolume<sup>9+</sup>
5566

5567
setVolume(volume: number, callback: AsyncCallback\<void>): void
5568

5569
设置应用的音量。使用Callback回调返回执行结果。
5570

5571
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
5572 5573 5574

**参数:**

5575 5576 5577
| 参数名  | 类型       | 必填   | 说明                 |
| ------- | -----------| ------ | ------------------- |
|volume   | number     | 是     | 音量值范围为0.0-1.0。 |
5578
|callback | AsyncCallback\<void> | 是     |回调返回执行结果。|
Z
zengyawen 已提交
5579 5580 5581

**示例:**

J
jiao_yanlin 已提交
5582
```js
5583
audioRenderer.setVolume(0.5, (err, data)=>{
5584 5585
  if(err){
    console.error(`setVolume Fail: ${err}`);
5586
  }
5587
  console.info('setVolume Success!');
L
lwx1059628 已提交
5588
});
Z
zengyawen 已提交
5589
```
5590

W
wangzx0705 已提交
5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602
### getMinStreamVolume<sup>10+</sup>

getMinStreamVolume(callback: AsyncCallback&lt;number&gt;): void

获取应用基于音频流的最小音量。使用Callback回调返回。

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

**参数:**

| 参数名  | 类型       | 必填   | 说明                 |
| ------- | -----------| ------ | ------------------- |
W
wangzx0705 已提交
5603
|callback |AsyncCallback&lt;number&gt; | 是     |Callback回调返回音频流最小音量(音量范围0-1)。|
W
wangzx0705 已提交
5604 5605 5606 5607

**示例:**

```js
W
wangzx0705 已提交
5608
audioRenderer.getMinStreamVolume((err, minVolume) => {
W
wangzx0705 已提交
5609 5610 5611 5612
  if (err) {
    console.error(`getMinStreamVolume error: ${err}`);
  } else {
    console.info(`getMinStreamVolume Success! ${minVolume}`);
W
wangzx0705 已提交
5613 5614 5615 5616 5617 5618 5619
  }
});
```
### getMinStreamVolume<sup>10+</sup>

getMinStreamVolume(): Promise&lt;number&gt;

W
wangzx0705 已提交
5620
获取应用基于音频流的最小音量。使用Promise异步回调。
W
wangzx0705 已提交
5621 5622 5623 5624 5625 5626 5627

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
W
wangzx0705 已提交
5628
| Promise&lt;number&gt;| Promise回调返回音频流最小音量(音量范围0-1)。|
W
wangzx0705 已提交
5629 5630 5631 5632

**示例:**

```js
W
wangzx0705 已提交
5633
audioRenderer.getMinStreamVolume().then((value) => {
W
wangzx0705 已提交
5634
  console.info(`Get min stream volume Success! ${value}`);
W
wangzx0705 已提交
5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651
}).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 已提交
5652
|callback | AsyncCallback&lt;number&gt; | 是     |Callback回调返回音频流最大音量(音量范围0-1)。|
W
wangzx0705 已提交
5653 5654 5655 5656

**示例:**

```js
W
wangzx0705 已提交
5657
audioRenderer.getMaxStreamVolume((err, maxVolume) => {
W
wangzx0705 已提交
5658 5659 5660 5661
  if (err) {
    console.error(`getMaxStreamVolume Fail: ${err}`);
  } else {
    console.info(`getMaxStreamVolume Success! ${maxVolume}`);
W
wangzx0705 已提交
5662 5663 5664 5665 5666 5667 5668
  }
});
```
### getMaxStreamVolume<sup>10+</sup>

getMaxStreamVolume(): Promise&lt;number&gt;

W
wangzx0705 已提交
5669
获取应用基于音频流的最大音量。使用Promise异步回调。
W
wangzx0705 已提交
5670 5671 5672 5673 5674 5675 5676

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
W
wangzx0705 已提交
5677
| Promise&lt;number&gt;| Promise回调返回音频流最大音量(音量范围0-1)。|
W
wangzx0705 已提交
5678 5679 5680 5681

**示例:**

```js
W
wangzx0705 已提交
5682
audioRenderer.getMaxStreamVolume().then((value) => {
W
wangzx0705 已提交
5683
  console.info(`Get max stream volume Success! ${value}`);
W
wangzx0705 已提交
5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705
}).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 已提交
5706
audioRenderer.getUnderflowCount((err, underflowCount) => {
W
wangzx0705 已提交
5707 5708 5709 5710
  if (err) {
    console.error(`getUnderflowCount Fail: ${err}`);
  } else {
    console.info(`getUnderflowCount Success! ${underflowCount}`);
W
wangzx0705 已提交
5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730
  }
});
```
### getUnderflowCount<sup>10+</sup>

getUnderflowCount(): Promise&lt;number&gt;

获取当前播放音频流的欠载音频帧数量。使用Promise异步回调。

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
| Promise&lt;number&gt;| Promise回调返回音频流的欠载音频帧数量。|

**示例:**

```js
W
wangzx0705 已提交
5731
audioRenderer.getUnderflowCount().then((value) => {
W
wangzx0705 已提交
5732
  console.info(`Get underflow count Success! ${value}`);
W
wangzx0705 已提交
5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754
}).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 已提交
5755
audioRenderer.getCurrentOutputDevices((err, deviceInfo) => {
W
wangzx0705 已提交
5756
  if (err) {
W
wangzx0705 已提交
5757
    console.error(`getCurrentOutputDevices Fail: ${err}`);
W
wangzx0705 已提交
5758
  } else {
W
wangzx0705 已提交
5759
    console.info(`DeviceInfo id: ${deviceInfo.id}`);
W
wangzx0705 已提交
5760 5761 5762 5763 5764 5765 5766
    console.info(`DeviceInfo type: ${deviceInfo.deviceType}`);
    console.info(`DeviceInfo role: ${deviceInfo.deviceRole}`);
    console.info(`DeviceInfo name: ${deviceInfo.name}`);
    console.info(`DeviceInfo address: ${deviceInfo.address}`);
    console.info(`DeviceInfo samplerates: ${deviceInfo.sampleRates[0]}`);
    console.info(`DeviceInfo channelcounts: ${deviceInfo.channelCounts[0]}`);
    console.info(`DeviceInfo channelmask: ${deviceInfo.channelMasks}`);
W
wangzx0705 已提交
5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781
  }
});
```
### getCurrentOutputDevices<sup>10+</sup>

getCurrentOutputDevices(): Promise&lt;AudioDeviceDescriptors&gt;

获取音频流输出设备描述符。使用Promise异步回调。

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

**返回值:**

| 类型                | 说明                          |
| ------------------- | ----------------------------- |
W
wangzx0705 已提交
5782
| Promise&lt;AudioDeviceDescriptors&gt;| Promise回调返回音频流的输出设备描述信息 |
W
wangzx0705 已提交
5783 5784 5785 5786

**示例:**

```js
W
wangzx0705 已提交
5787
audioRenderer.getCurrentOutputDevices().then((deviceInfo) => {
W
wangzx0705 已提交
5788
  console.info(`DeviceInfo id: ${deviceInfo.id}`);
W
wangzx0705 已提交
5789 5790 5791 5792 5793 5794 5795
  console.info(`DeviceInfo type: ${deviceInfo.deviceType}`);
  console.info(`DeviceInfo role: ${deviceInfo.deviceRole}`);
  console.info(`DeviceInfo name: ${deviceInfo.name}`);
  console.info(`DeviceInfo address: ${deviceInfo.address}`);
  console.info(`DeviceInfo samplerates: ${deviceInfo.sampleRates[0]}`);
  console.info(`DeviceInfo channelcounts: ${deviceInfo.channelCounts[0]}`);
  console.info(`DeviceInfo channelmask: ${deviceInfo.channelMasks}`);
W
wangzx0705 已提交
5796 5797 5798 5799 5800
}).catch((err) => {
  console.error(`Get current output devices Fail: ${err}`);
});
```

5801
### on('audioInterrupt')<sup>9+</sup>
5802

5803
on(type: 'audioInterrupt', callback: Callback\<InterruptEvent>): void
5804

5805
监听音频中断事件。使用callback获取中断事件。
5806

J
jiaoyanlin3 已提交
5807
[on('interrupt')](#oninterrupt)一致,均用于监听焦点变化。AudioRenderer对象在start事件发生时会主动获取焦点,在pause、stop等事件发生时会主动释放焦点,不需要开发者主动发起获取焦点或释放焦点的申请。
5808

5809
**系统能力:** SystemCapability.Multimedia.Audio.Interrupt
5810 5811 5812

**参数:**

5813 5814
| 参数名   | 类型                                         | 必填 | 说明                                                         |
| -------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
5815 5816
| type     | string                                       | 是   | 事件回调类型,支持的事件为:'audioInterrupt'(中断事件被触发,音频渲染被中断。) |
| callback | Callback\<[InterruptEvent](#interruptevent9)\> | 是   | 被监听的中断事件的回调。                                     |
5817

5818
**错误码:**
5819

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

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

**示例:**
Z
zengyawen 已提交
5827

J
jiao_yanlin 已提交
5828
```js
5829 5830
let isPlaying; // 标识符,表示是否正在渲染
let isDucked; // 标识符,表示是否被降低音量
5831 5832 5833 5834 5835
onAudioInterrupt();

async function onAudioInterrupt(){
  audioRenderer.on('audioInterrupt', async(interruptEvent) => {
    if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_FORCE) {
5836
      // 由系统进行操作,强制打断音频渲染,应用需更新自身状态及显示内容等
5837 5838
      switch (interruptEvent.hintType) {
        case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
5839 5840 5841
          // 音频流已被暂停,临时失去焦点,待可重获焦点时会收到resume对应的interruptEvent
          console.info('Force paused. Update playing status and stop writing');
          isPlaying = false; // 简化处理,代表应用切换至暂停状态的若干操作
5842 5843
          break;
        case audio.InterruptHint.INTERRUPT_HINT_STOP:
5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859
          // 音频流已被停止,永久失去焦点,若想恢复渲染,需用户主动触发
          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');
5860 5861 5862
          break;
      }
    } else if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_SHARE) {
5863
      // 由应用进行操作,应用可以自主选择打断或忽略
5864 5865
      switch (interruptEvent.hintType) {
        case audio.InterruptHint.INTERRUPT_HINT_RESUME:
5866
          // 建议应用继续渲染(说明音频流此前被强制暂停,临时失去焦点,现在可以恢复渲染)
5867
          console.info('Resume force paused renderer or ignore');
5868
          // 若选择继续渲染,需在此处主动执行开始渲染的若干操作
5869 5870
          break;
        case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
5871
          // 建议应用暂停渲染
5872
          console.info('Choose to pause or ignore');
5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890
          // 若选择暂停渲染,需在此处主动执行暂停渲染的若干操作
          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:
5891 5892 5893 5894 5895
          break;
      }
   }
  });
}
Z
zhujie81 已提交
5896 5897
```

5898
### on('markReach')<sup>8+</sup>
Z
zhujie81 已提交
5899

J
jiaoyanlin3 已提交
5900
on(type: 'markReach', frame: number, callback: Callback&lt;number&gt;): void
5901

5902
订阅到达标记的事件。 当渲染的帧数达到 frame 参数的值时,回调被调用。
5903

5904
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zhujie81 已提交
5905 5906

**参数:**
5907

5908 5909 5910 5911 5912
| 参数名   | 类型                     | 必填 | 说明                                      |
| :------- | :----------------------- | :--- | :---------------------------------------- |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'markReach'。 |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于 0。         |
| callback | Callback\<number>         | 是   | 触发事件时调用的回调。                    |
Z
zengyawen 已提交
5913

Z
zhujie81 已提交
5914 5915
**示例:**

J
jiao_yanlin 已提交
5916
```js
5917 5918 5919
audioRenderer.on('markReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
J
jiao_yanlin 已提交
5920
  }
5921
});
5922
```
Z
zengyawen 已提交
5923

5924

5925
### off('markReach') <sup>8+</sup>
5926

5927
off(type: 'markReach'): void
5928

5929
取消订阅标记事件。
5930

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

5933
**参数:**
5934

5935 5936 5937
| 参数名 | 类型   | 必填 | 说明                                              |
| :----- | :----- | :--- | :------------------------------------------------ |
| type   | string | 是   | 要取消订阅事件的类型。支持的事件为:'markReach'。 |
5938 5939 5940 5941

**示例:**

```js
5942
audioRenderer.off('markReach');
5943 5944
```

5945
### on('periodReach') <sup>8+</sup>
Z
zengyawen 已提交
5946

J
jiaoyanlin3 已提交
5947
on(type: 'periodReach', frame: number, callback: Callback&lt;number&gt;): void
5948

5949
订阅到达标记的事件。 当渲染的帧数达到 frame 参数的值时,触发回调并返回设定的值。
5950

5951
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
Z
zengyawen 已提交
5952 5953 5954

**参数:**

5955 5956 5957 5958 5959
| 参数名   | 类型                     | 必填 | 说明                                        |
| :------- | :----------------------- | :--- | :------------------------------------------ |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'periodReach'。 |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于 0。           |
| callback | Callback\<number>         | 是   | 触发事件时调用的回调。                      |
5960 5961 5962 5963

**示例:**

```js
5964 5965 5966
audioRenderer.on('periodReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
5967 5968 5969 5970
  }
});
```

5971
### off('periodReach') <sup>8+</sup>
5972

5973
off(type: 'periodReach'): void
Z
zengyawen 已提交
5974

5975
取消订阅标记事件。
5976

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

5979
**参数:**
5980

5981 5982 5983
| 参数名 | 类型   | 必填 | 说明                                                |
| :----- | :----- | :--- | :-------------------------------------------------- |
| type   | string | 是   | 要取消订阅事件的类型。支持的事件为:'periodReach'。 |
5984

Z
zengyawen 已提交
5985 5986
**示例:**

J
jiao_yanlin 已提交
5987
```js
5988
audioRenderer.off('periodReach')
Z
zengyawen 已提交
5989 5990
```

5991
### on('stateChange') <sup>8+</sup>
L
lwx1059628 已提交
5992

5993
on(type: 'stateChange', callback: Callback<AudioState\>): void
L
lwx1059628 已提交
5994

5995
订阅监听状态变化。
5996

5997
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
L
lwx1059628 已提交
5998 5999 6000

**参数:**

6001 6002 6003 6004
| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'stateChange'。 |
| callback | Callback\<[AudioState](#audiostate8)> | 是   | 返回监听的状态。                            |
L
lwx1059628 已提交
6005 6006 6007

**示例:**

J
jiao_yanlin 已提交
6008
```js
6009 6010 6011 6012 6013 6014
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 已提交
6015
  }
L
lwx1059628 已提交
6016 6017 6018
});
```

W
wangzx0705 已提交
6019 6020
### on('outputDeviceChange') <sup>10+</sup>

6021
on(type: 'outputDeviceChange', callback: Callback\<AudioDeviceDescriptors>): void;
W
wangzx0705 已提交
6022 6023 6024 6025 6026 6027 6028 6029 6030 6031

订阅监听音频输出设备变化。

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

**参数:**

| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'outputDeviceChange'。 |
W
wangzx0705 已提交
6032
| callback | Callback\<[AudioDeviceDescriptors](#audiodevicedescriptors)> | 是   | 返回监听的音频设备变化。                            |
W
wangzx0705 已提交
6033 6034 6035 6036 6037

**错误码:**

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
6038
| 6800101 | if input parameter value error.              |
W
wangzx0705 已提交
6039 6040 6041 6042

**示例:**

```js
W
wangzx0705 已提交
6043
audioRenderer.on('outputDeviceChange', (err, deviceChangeInfo) => {
W
wangzx0705 已提交
6044
  if (err) {
W
wangzx0705 已提交
6045 6046 6047 6048
    console.error(`Subscribes output device change event callback Fail: ${err}`);
  } else {
    console.info(`Subscribes output device change event callback Success!`);
  }
W
wangzx0705 已提交
6049 6050 6051 6052
});
```
### off('outputDeviceChange') <sup>10+</sup>

6053
off(type: 'outputDeviceChange', callback?: Callback\<AudioDeviceDescriptors>): void;
W
wangzx0705 已提交
6054 6055 6056 6057 6058 6059 6060 6061 6062 6063

取消订阅监听音频输出设备变化。

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

**参数:**

| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'outputDeviceChange'。 |
6064
| callback | Callback\<[AudioDeviceDescriptors](#audiodevicedescriptors)> | 否   | 取消监听的音频设备变化。                            |
W
wangzx0705 已提交
6065 6066 6067 6068 6069

**错误码:**

| 错误码ID | 错误信息 |
| ------- | --------------------------------------------|
6070
| 6800101 | if input parameter value error.              |
W
wangzx0705 已提交
6071 6072 6073 6074

**示例:**

```js
W
wangzx0705 已提交
6075
audioRenderer.off('outputDeviceChange', (err,deviceChangeInfo) => {
W
wangzx0705 已提交
6076
  if (err) {
W
wangzx0705 已提交
6077 6078 6079 6080
    console.error(`Unsubscribes output device change event callback Fail: ${err}`);
  } else {
    console.info(`Unsubscribes output device change event callback Success!`);
  }
W
wangzx0705 已提交
6081 6082 6083
});
```

6084
## AudioCapturer<sup>8+</sup>
L
lwx1059628 已提交
6085

6086
提供音频采集的相关接口。在调用AudioCapturer的接口前,需要先通过[createAudioCapturer](#audiocreateaudiocapturer8)创建实例。
6087

6088
### 属性
L
lwx1059628 已提交
6089

6090
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6091

6092 6093 6094
| 名称  | 类型                     | 可读 | 可写 | 说明             |
| :---- | :------------------------- | :--- | :--- | :--------------- |
| state<sup>8+</sup>  | [AudioState](#audiostate8) | 是 | 否   | 音频采集器状态。 |
L
lwx1059628 已提交
6095 6096 6097

**示例:**

J
jiao_yanlin 已提交
6098
```js
6099
let state = audioCapturer.state;
L
lwx1059628 已提交
6100 6101
```

6102
### getCapturerInfo<sup>8+</sup>
6103

6104
getCapturerInfo(callback: AsyncCallback<AudioCapturerInfo\>): void
6105

6106
获取采集器信息。使用callback方式异步返回结果。
6107

6108
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6109 6110 6111

**参数:**

6112 6113 6114
| 参数名   | 类型                              | 必填 | 说明                                 |
| :------- | :-------------------------------- | :--- | :----------------------------------- |
| callback | AsyncCallback<AudioCapturerInfo\> | 是   | 使用callback方式异步返回采集器信息。 |
L
lwx1059628 已提交
6115 6116 6117

**示例:**

J
jiao_yanlin 已提交
6118
```js
6119
audioCapturer.getCapturerInfo((err, capturerInfo) => {
6120
  if (err) {
6121 6122 6123 6124 6125
    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 已提交
6126
  }
L
lwx1059628 已提交
6127 6128 6129
});
```

6130

6131
### getCapturerInfo<sup>8+</sup>
6132

6133
getCapturerInfo(): Promise<AudioCapturerInfo\>
6134

6135
获取采集器信息。使用Promise方式异步返回结果。
6136

6137
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6138 6139 6140

**返回值:**

6141 6142 6143
| 类型                                              | 说明                                |
| :------------------------------------------------ | :---------------------------------- |
| Promise<[AudioCapturerInfo](#audiocapturerinfo)\> | 使用Promise方式异步返回采集器信息。 |
L
lwx1059628 已提交
6144 6145 6146

**示例:**

J
jiao_yanlin 已提交
6147
```js
6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158
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}`);
6159
});
L
lwx1059628 已提交
6160 6161
```

6162
### getStreamInfo<sup>8+</sup>
L
lwx1059628 已提交
6163

6164
getStreamInfo(callback: AsyncCallback<AudioStreamInfo\>): void
L
lwx1059628 已提交
6165

6166
获取采集器流信息。使用callback方式异步返回结果。
6167

6168
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6169 6170 6171

**参数:**

6172 6173 6174
| 参数名   | 类型                                                 | 必填 | 说明                             |
| :------- | :--------------------------------------------------- | :--- | :------------------------------- |
| callback | AsyncCallback<[AudioStreamInfo](#audiostreaminfo8)\> | 是   | 使用callback方式异步返回流信息。 |
L
lwx1059628 已提交
6175 6176 6177

**示例:**

J
jiao_yanlin 已提交
6178
```js
6179
audioCapturer.getStreamInfo((err, streamInfo) => {
J
jiao_yanlin 已提交
6180
  if (err) {
6181 6182 6183 6184 6185 6186 6187
    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 已提交
6188
  }
L
lwx1059628 已提交
6189 6190 6191
});
```

6192
### getStreamInfo<sup>8+</sup>
L
lwx1059628 已提交
6193

6194
getStreamInfo(): Promise<AudioStreamInfo\>
6195

6196
获取采集器流信息。使用Promise方式异步返回结果。
6197

6198
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6199 6200 6201

**返回值:**

6202 6203 6204
| 类型                                           | 说明                            |
| :--------------------------------------------- | :------------------------------ |
| Promise<[AudioStreamInfo](#audiostreaminfo8)\> | 使用Promise方式异步返回流信息。 |
L
lwx1059628 已提交
6205 6206 6207

**示例:**

J
jiao_yanlin 已提交
6208
```js
6209 6210 6211 6212 6213 6214 6215 6216
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 已提交
6217 6218 6219
});
```

6220
### getAudioStreamId<sup>9+</sup>
L
lwx1059628 已提交
6221

6222
getAudioStreamId(callback: AsyncCallback<number\>): void
L
lwx1059628 已提交
6223

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

6226
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6227 6228 6229

**参数:**

6230 6231 6232
| 参数名   | 类型                                                 | 必填 | 说明                 |
| :------- | :--------------------------------------------------- | :--- | :------------------- |
| callback | AsyncCallback<number\> | 是   | 回调返回音频流id。 |
L
lwx1059628 已提交
6233 6234 6235

**示例:**

J
jiao_yanlin 已提交
6236
```js
6237 6238
audioCapturer.getAudioStreamId((err, streamid) => {
  console.info(`audioCapturer GetStreamId: ${streamid}`);
L
lwx1059628 已提交
6239 6240 6241
});
```

6242
### getAudioStreamId<sup>9+</sup>
6243

6244
getAudioStreamId(): Promise<number\>
6245

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

6248
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6249 6250 6251

**返回值:**

6252 6253 6254
| 类型             | 说明                   |
| :----------------| :--------------------- |
| Promise<number\> | Promise返回音频流id。 |
L
lwx1059628 已提交
6255 6256 6257

**示例:**

J
jiao_yanlin 已提交
6258
```js
6259 6260 6261 6262
audioCapturer.getAudioStreamId().then((streamid) => {
  console.info(`audioCapturer getAudioStreamId: ${streamid}`);
}).catch((err) => {
  console.error(`ERROR: ${err}`);
L
lwx1059628 已提交
6263 6264 6265
});
```

6266
### start<sup>8+</sup>
6267

6268
start(callback: AsyncCallback<void\>): void
6269

6270
启动音频采集器。使用callback方式异步返回结果。
6271

6272
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6273 6274 6275

**参数:**

6276 6277 6278
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
6279 6280 6281 6282

**示例:**

```js
6283
audioCapturer.start((err) => {
6284
  if (err) {
6285 6286 6287
    console.error('Capturer start failed.');
  } else {
    console.info('Capturer start success.');
6288
  }
6289 6290 6291 6292
});
```


6293
### start<sup>8+</sup>
6294

6295
start(): Promise<void\>
6296

6297
启动音频采集器。使用Promise方式异步返回结果。
6298

6299
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6300 6301 6302

**返回值:**

6303 6304 6305
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
6306 6307 6308 6309

**示例:**

```js
6310 6311 6312 6313 6314 6315 6316 6317 6318 6319
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}`);
6320 6321 6322
});
```

6323
### stop<sup>8+</sup>
6324

6325
stop(callback: AsyncCallback<void\>): void
6326

6327
停止采集。使用callback方式异步返回结果。
6328

6329
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6330

6331
**参数:**
L
lwx1059628 已提交
6332

6333 6334 6335
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6336 6337 6338

**示例:**

J
jiao_yanlin 已提交
6339
```js
6340
audioCapturer.stop((err) => {
J
jiao_yanlin 已提交
6341
  if (err) {
6342 6343 6344
    console.error('Capturer stop failed');
  } else {
    console.info('Capturer stopped.');
J
jiao_yanlin 已提交
6345
  }
L
lwx1059628 已提交
6346 6347 6348 6349
});
```


6350
### stop<sup>8+</sup>
L
lwx1059628 已提交
6351

6352
stop(): Promise<void\>
L
lwx1059628 已提交
6353

6354
停止采集。使用Promise方式异步返回结果。
6355

6356
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6357 6358 6359

**返回值:**

6360 6361 6362
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
L
lwx1059628 已提交
6363 6364 6365

**示例:**

J
jiao_yanlin 已提交
6366
```js
6367 6368 6369 6370 6371 6372 6373 6374
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 已提交
6375 6376 6377
});
```

6378
### release<sup>8+</sup>
L
lwx1059628 已提交
6379

6380
release(callback: AsyncCallback<void\>): void
L
lwx1059628 已提交
6381

6382
释放采集器。使用callback方式异步返回结果。
6383

6384
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6385 6386 6387

**参数:**

6388 6389
| 参数名   | 类型                 | 必填 | 说明                                |
| :------- | :------------------- | :--- | :---------------------------------- |
J
jiao_yanlin 已提交
6390
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6391 6392 6393

**示例:**

J
jiao_yanlin 已提交
6394
```js
6395
audioCapturer.release((err) => {
J
jiao_yanlin 已提交
6396
  if (err) {
6397 6398 6399
    console.error('capturer release failed');
  } else {
    console.info('capturer released.');
J
jiao_yanlin 已提交
6400
  }
L
lwx1059628 已提交
6401 6402 6403 6404
});
```


6405
### release<sup>8+</sup>
L
lwx1059628 已提交
6406

6407
release(): Promise<void\>
6408

6409
释放采集器。使用Promise方式异步返回结果。
6410

6411
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6412 6413 6414

**返回值:**

6415 6416 6417
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
L
lwx1059628 已提交
6418 6419 6420

**示例:**

J
jiao_yanlin 已提交
6421
```js
6422 6423 6424 6425 6426 6427 6428 6429
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 已提交
6430 6431 6432
});
```

6433
### read<sup>8+</sup>
L
lwx1059628 已提交
6434

6435
read(size: number, isBlockingRead: boolean, callback: AsyncCallback<ArrayBuffer\>): void
L
lwx1059628 已提交
6436

6437
读入缓冲区。使用callback方式异步返回结果。
6438

6439
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6440 6441 6442

**参数:**

6443 6444 6445 6446 6447
| 参数名         | 类型                        | 必填 | 说明                             |
| :------------- | :-------------------------- | :--- | :------------------------------- |
| size           | number                      | 是   | 读入的字节数。                   |
| isBlockingRead | boolean                     | 是   | 是否阻塞读操作。                 |
| callback       | AsyncCallback<ArrayBuffer\> | 是   | 使用callback方式异步返回缓冲区。 |
L
lwx1059628 已提交
6448 6449 6450

**示例:**

J
jiao_yanlin 已提交
6451
```js
6452 6453 6454 6455 6456 6457 6458 6459 6460 6461
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 已提交
6462
  }
L
lwx1059628 已提交
6463 6464 6465
});
```

6466
### read<sup>8+</sup>
L
lwx1059628 已提交
6467

6468
read(size: number, isBlockingRead: boolean): Promise<ArrayBuffer\>
L
lwx1059628 已提交
6469

6470
读入缓冲区。使用Promise方式异步返回结果。
L
lwx1059628 已提交
6471

6472
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6473 6474 6475

**参数:**

6476 6477 6478 6479
| 参数名         | 类型    | 必填 | 说明             |
| :------------- | :------ | :--- | :--------------- |
| size           | number  | 是   | 读入的字节数。   |
| isBlockingRead | boolean | 是   | 是否阻塞读操作。 |
L
lwx1059628 已提交
6480 6481 6482

**返回值:**

6483 6484 6485
| 类型                  | 说明                                                   |
| :-------------------- | :----------------------------------------------------- |
| Promise<ArrayBuffer\> | 如果操作成功,返回读取的缓冲区数据;否则返回错误代码。 |
L
lwx1059628 已提交
6486 6487 6488

**示例:**

J
jiao_yanlin 已提交
6489
```js
6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501
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 已提交
6502 6503 6504
});
```

6505
### getAudioTime<sup>8+</sup>
6506

6507
getAudioTime(callback: AsyncCallback<number\>): void
6508

6509
获取时间戳(从1970年1月1日开始),单位为纳秒。使用callback方式异步返回结果。
6510

6511
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6512

6513
**参数:**
L
lwx1059628 已提交
6514

6515 6516 6517
| 参数名   | 类型                   | 必填 | 说明                           |
| :------- | :--------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<number\> | 是   | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6518 6519 6520

**示例:**

J
jiao_yanlin 已提交
6521
```js
6522 6523
audioCapturer.getAudioTime((err, timestamp) => {
  console.info(`Current timestamp: ${timestamp}`);
J
jiao_yanlin 已提交
6524
});
L
lwx1059628 已提交
6525 6526
```

6527
### getAudioTime<sup>8+</sup>
6528

6529
getAudioTime(): Promise<number\>
L
lwx1059628 已提交
6530

6531
获取时间戳(从1970年1月1日开始),单位为纳秒。使用Promise方式异步返回结果。
L
lwx1059628 已提交
6532

6533
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6534 6535 6536

**返回值:**

6537 6538 6539
| 类型             | 说明                          |
| :--------------- | :---------------------------- |
| Promise<number\> | 使用Promise方式异步返回结果。 |
L
lwx1059628 已提交
6540 6541 6542

**示例:**

J
jiao_yanlin 已提交
6543
```js
6544 6545 6546 6547
audioCapturer.getAudioTime().then((audioTime) => {
  console.info(`AudioFrameworkRecLog: AudioCapturer getAudioTime : Success ${audioTime}`);
}).catch((err) => {
  console.info(`AudioFrameworkRecLog: AudioCapturer Created : ERROR : ${err}`);
L
lwx1059628 已提交
6548 6549 6550
});
```

6551
### getBufferSize<sup>8+</sup>
L
lwx1059628 已提交
6552

6553
getBufferSize(callback: AsyncCallback<number\>): void
L
lwx1059628 已提交
6554

6555
获取采集器合理的最小缓冲区大小。使用callback方式异步返回结果。
6556

6557
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6558 6559 6560

**参数:**

6561 6562 6563
| 参数名   | 类型                   | 必填 | 说明                                 |
| :------- | :--------------------- | :--- | :----------------------------------- |
| callback | AsyncCallback<number\> | 是   | 使用callback方式异步返回缓冲区大小。 |
L
lwx1059628 已提交
6564 6565 6566

**示例:**

J
jiao_yanlin 已提交
6567
```js
6568 6569 6570 6571 6572 6573 6574 6575
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}`);
    });
6576
  }
L
lwx1059628 已提交
6577 6578 6579
});
```

6580
### getBufferSize<sup>8+</sup>
6581

6582
getBufferSize(): Promise<number\>
L
lwx1059628 已提交
6583

6584
获取采集器合理的最小缓冲区大小。使用Promise方式异步返回结果。
L
lwx1059628 已提交
6585

6586
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6587

6588 6589 6590 6591 6592
**返回值:**

| 类型             | 说明                                |
| :--------------- | :---------------------------------- |
| Promise<number\> | 使用Promise方式异步返回缓冲区大小。 |
L
lwx1059628 已提交
6593 6594 6595

**示例:**

J
jiao_yanlin 已提交
6596
```js
6597 6598 6599 6600 6601 6602
let bufferSize;
audioCapturer.getBufferSize().then((data) => {
  console.info(`AudioFrameworkRecLog: getBufferSize :SUCCESS ${data}`);
  bufferSize = data;
}).catch((err) => {
  console.info(`AudioFrameworkRecLog: getBufferSize :ERROR : ${err}`);
L
lwx1059628 已提交
6603 6604 6605
});
```

6606 6607 6608 6609 6610 6611
### on('audioInterrupt')<sup>10+</sup>

on(type: 'audioInterrupt', callback: Callback\<InterruptEvent>): void

监听音频中断事件。使用callback获取中断事件。

J
jiaoyanlin3 已提交
6612
[on('interrupt')](#oninterrupt)一致,均用于监听焦点变化。AudioCapturer对象在start事件发生时会主动获取焦点,在pause、stop等事件发生时会主动释放焦点,不需要开发者主动发起获取焦点或释放焦点的申请。
6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681

**系统能力:** 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;
      }
   }
  });
}
```

J
jiaoyanlin3 已提交
6682 6683
### off('audioInterrupt')<sup>10+</sup>

J
jiaoyanlin3 已提交
6684
off(type: 'audioInterrupt'): void
J
jiaoyanlin3 已提交
6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709

取消订阅音频中断事件。

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

**参数:**

| 参数名   | 类型                                         | 必填 | 说明                                                         |
| -------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                                       | 是   | 事件回调类型,支持的事件为:'audioInterrupt' |

**错误码:**

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

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

**示例:**

```js
audioCapturer.off('audioInterrupt');
```

6710

6711
### on('markReach')<sup>8+</sup>
L
lwx1059628 已提交
6712

J
jiaoyanlin3 已提交
6713
on(type: 'markReach', frame: number, callback: Callback&lt;number&gt;): void
L
lwx1059628 已提交
6714

6715
订阅标记到达的事件。 当采集的帧数达到 frame 参数的值时,回调被触发。
6716

6717
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6718 6719 6720

**参数:**

6721 6722 6723 6724 6725
| 参数名   | 类型                     | 必填 | 说明                                       |
| :------- | :----------------------  | :--- | :----------------------------------------- |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'markReach'。  |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于0。           |
| callback | Callback\<number>         | 是   | 使用callback方式异步返回被触发事件的回调。 |
L
lwx1059628 已提交
6726 6727

**示例:**
6728

J
jiao_yanlin 已提交
6729
```js
6730 6731 6732
audioCapturer.on('markReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
J
jiao_yanlin 已提交
6733
  }
L
lwx1059628 已提交
6734 6735 6736
});
```

6737
### off('markReach')<sup>8+</sup>
L
lwx1059628 已提交
6738

6739
off(type: 'markReach'): void
L
lwx1059628 已提交
6740

6741
取消订阅标记到达的事件。
6742

6743
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
6744 6745 6746

**参数:**

6747 6748 6749
| 参数名 | 类型   | 必填 | 说明                                          |
| :----- | :----- | :--- | :-------------------------------------------- |
| type   | string | 是   | 取消事件回调类型,支持的事件为:'markReach'。 |
L
lwx1059628 已提交
6750 6751 6752

**示例:**

J
jiao_yanlin 已提交
6753
```js
6754
audioCapturer.off('markReach');
L
lwx1059628 已提交
6755 6756
```

6757
### on('periodReach')<sup>8+</sup>
L
lwx1059628 已提交
6758

J
jiaoyanlin3 已提交
6759
on(type: 'periodReach', frame: number, callback: Callback&lt;number&gt;): void
L
lwx1059628 已提交
6760

6761
订阅到达标记的事件。 当采集的帧数达到 frame 参数的值时,触发回调并返回设定的值。
6762

6763
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6764 6765 6766

**参数:**

6767 6768 6769 6770 6771
| 参数名   | 类型                     | 必填 | 说明                                        |
| :------- | :----------------------- | :--- | :------------------------------------------ |
| type     | string                   | 是   | 事件回调类型,支持的事件为:'periodReach'。 |
| frame    | number                   | 是   | 触发事件的帧数。 该值必须大于0。            |
| callback | Callback\<number>         | 是   | 使用callback方式异步返回被触发事件的回调    |
L
lwx1059628 已提交
6772 6773 6774

**示例:**

J
jiao_yanlin 已提交
6775
```js
6776 6777 6778
audioCapturer.on('periodReach', 1000, (position) => {
  if (position == 1000) {
    console.info('ON Triggered successfully');
J
jiao_yanlin 已提交
6779
  }
L
lwx1059628 已提交
6780 6781 6782
});
```

6783
### off('periodReach')<sup>8+</sup>
L
lwx1059628 已提交
6784

6785
off(type: 'periodReach'): void
L
lwx1059628 已提交
6786

6787
取消订阅标记到达的事件。
6788

6789
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6790 6791 6792

**参数:**

6793 6794 6795
| 参数名 | 类型   | 必填 | 说明                                            |
| :----- | :----- | :--- | :---------------------------------------------- |
| type   | string | 是  | 取消事件回调类型,支持的事件为:'periodReach'。 |
L
lwx1059628 已提交
6796 6797 6798

**示例:**

J
jiao_yanlin 已提交
6799
```js
6800
audioCapturer.off('periodReach')
L
lwx1059628 已提交
6801 6802
```

6803
### on('stateChange') <sup>8+</sup>
L
lwx1059628 已提交
6804

6805
on(type: 'stateChange', callback: Callback<AudioState\>): void
L
lwx1059628 已提交
6806

6807
订阅监听状态变化。
6808

6809
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
L
lwx1059628 已提交
6810 6811 6812

**参数:**

6813 6814 6815 6816
| 参数名   | 类型                       | 必填 | 说明                                        |
| :------- | :------------------------- | :--- | :------------------------------------------ |
| type     | string                     | 是   | 事件回调类型,支持的事件为:'stateChange'。 |
| callback | Callback\<[AudioState](#audiostate8)> | 是   | 返回监听的状态。                            |
L
lwx1059628 已提交
6817 6818 6819

**示例:**

J
jiao_yanlin 已提交
6820
```js
6821 6822 6823 6824 6825 6826
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 已提交
6827
  }
L
lwx1059628 已提交
6828 6829 6830
});
```

6831
## ToneType<sup>9+</sup>
L
lwx1059628 已提交
6832

6833
枚举,播放器的音调类型。
L
lwx1059628 已提交
6834

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

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

6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6866 6867
| 名称                                              |  值    | 说明                          |
| :------------------------------------------------ | :----- | :----------------------------|
| 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 已提交
6868

6869
## TonePlayer<sup>9+</sup>
L
lwx1059628 已提交
6870

6871
提供播放和管理DTMF(Dual Tone Multi Frequency,双音多频)音调的方法,包括各种系统监听音调、专有音调,如拨号音、通话回铃音等。
L
lwx1059628 已提交
6872

6873
**系统接口:** 该接口为系统接口
L
lwx1059628 已提交
6874

6875
### load<sup>9+</sup>
L
lwx1059628 已提交
6876

6877
load(type: ToneType, callback: AsyncCallback&lt;void&gt;): void
L
lwx1059628 已提交
6878

6879
加载DTMF音调配置。使用callback方式异步返回结果。
6880

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

6883
**系统能力:** SystemCapability.Multimedia.Audio.Tone
L
lwx1059628 已提交
6884 6885 6886

**参数:**

6887 6888 6889 6890
| 参数名          | 类型                        | 必填  | 说明                            |
| :--------------| :-------------------------- | :-----| :------------------------------ |
| type           | [ToneType](#tonetype9)       | 是    | 配置的音调类型。                 |
| callback       | AsyncCallback<void\>        | 是    | 使用callback方式异步返回结果。 |
L
lwx1059628 已提交
6891 6892 6893

**示例:**

J
jiao_yanlin 已提交
6894
```js
6895
tonePlayer.load(audio.ToneType.TONE_TYPE_DIAL_5, (err) => {
6896
  if (err) {
6897
    console.error(`callback call load failed error: ${err.message}`);
6898
    return;
6899 6900
  } else {
    console.info('callback call load success');
J
jiao_yanlin 已提交
6901
  }
L
lwx1059628 已提交
6902
});
6903 6904
```

6905
### load<sup>9+</sup>
6906

6907
load(type: ToneType): Promise&lt;void&gt;
6908

6909
加载DTMF音调配置。使用Promise方式异步返回结果。
6910

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

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

6915
**参数:**
6916

6917 6918 6919
| 参数名         | 类型                    | 必填  |  说明             |
| :------------- | :--------------------- | :---  | ---------------- |
| type           | [ToneType](#tonetype9)   | 是    | 配置的音调类型。  |
6920

6921
**返回值:**
6922

6923 6924 6925
| 类型            | 说明                        |
| :--------------| :-------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
6926

6927
**示例:**
6928

6929
```js
6930 6931 6932 6933
tonePlayer.load(audio.ToneType.TONE_TYPE_DIAL_1).then(() => {
  console.info('promise call load ');
}).catch(() => {
  console.error('promise call load fail');
6934 6935
});
```
6936

6937
### start<sup>9+</sup>
6938

6939
start(callback: AsyncCallback&lt;void&gt;): void
6940

6941
启动DTMF音调播放。使用callback方式异步返回结果。
6942

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

6945
**系统能力:** SystemCapability.Multimedia.Audio.Tone
6946 6947 6948

**参数:**

6949 6950 6951
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
6952 6953 6954 6955

**示例:**

```js
6956
tonePlayer.start((err) => {
6957
  if (err) {
6958
    console.error(`callback call start failed error: ${err.message}`);
6959
    return;
6960 6961
  } else {
    console.info('callback call start success');
6962 6963 6964 6965
  }
});
```

6966
### start<sup>9+</sup>
6967

6968
start(): Promise&lt;void&gt;
6969

6970
启动DTMF音调播放。使用Promise方式异步返回结果。
6971

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

6974
**系统能力:** SystemCapability.Multimedia.Audio.Tone
6975 6976 6977

**返回值:**

6978 6979 6980
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
6981 6982 6983 6984

**示例:**

```js
6985 6986 6987 6988
tonePlayer.start().then(() => {
  console.info('promise call start');
}).catch(() => {
  console.error('promise call start fail');
6989 6990 6991
});
```

6992
### stop<sup>9+</sup>
6993

6994
stop(callback: AsyncCallback&lt;void&gt;): void
6995

6996
停止当前正在播放的音调。使用callback方式异步返回结果。
6997 6998 6999

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

7000
**系统能力:** SystemCapability.Multimedia.Audio.Tone
7001 7002 7003

**参数:**

7004 7005 7006
| 参数名   | 类型                 | 必填 | 说明                           |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。 |
7007 7008 7009 7010

**示例:**

```js
7011 7012 7013 7014 7015 7016 7017
tonePlayer.stop((err) => {
  if (err) {
    console.error(`callback call stop error: ${err.message}`);
    return;
  } else {
    console.error('callback call stop success ');
  }
7018 7019 7020
});
```

7021
### stop<sup>9+</sup>
7022

7023
stop(): Promise&lt;void&gt;
7024

7025
停止当前正在播放的音调。使用Promise方式异步返回结果。
7026

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

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

7031
**返回值:**
7032

7033 7034 7035
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
7036 7037 7038 7039

**示例:**

```js
7040 7041 7042 7043
tonePlayer.stop().then(() => {
  console.info('promise call stop finish');
}).catch(() => {
  console.error('promise call stop fail');
7044 7045 7046
});
```

7047
### release<sup>9+</sup>
7048

7049
release(callback: AsyncCallback&lt;void&gt;): void
7050

7051
释放与此TonePlayer对象关联的资源。使用callback方式异步返回结果。
7052

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

7055
**系统能力:** SystemCapability.Multimedia.Audio.Tone
7056 7057 7058

**参数:**

7059 7060 7061
| 参数名   | 类型                 | 必填 | 说明                            |
| :------- | :------------------- | :--- | :---------------------------- |
| callback | AsyncCallback<void\> | 是   | 使用callback方式异步返回结果。  |
7062 7063 7064 7065

**示例:**

```js
7066 7067 7068 7069 7070 7071 7072
tonePlayer.release((err) => {
  if (err) {
    console.error(`callback call release failed error: ${err.message}`);
    return;
  } else {
    console.info('callback call release success ');
  }
7073 7074 7075
});
```

7076
### release<sup>9+</sup>
7077

7078
release(): Promise&lt;void&gt;
7079

7080
释放与此TonePlayer对象关联的资源。使用Promise方式异步返回结果。
7081

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

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

7086
**返回值:**
7087

7088 7089 7090
| 类型           | 说明                          |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
7091 7092 7093 7094

**示例:**

```js
7095 7096 7097 7098
tonePlayer.release().then(() => {
  console.info('promise call release');
}).catch(() => {
  console.error('promise call release fail');
7099 7100 7101
});
```

7102
## ActiveDeviceType<sup>(deprecated)</sup>
7103

7104
枚举,活跃设备类型。
7105

7106 7107
> **说明:**
> 从 API version 9 开始废弃,建议使用[CommunicationDeviceType](#communicationdevicetype9)替代。
7108

7109 7110 7111 7112 7113 7114 7115 7116 7117 7118
**系统能力:** SystemCapability.Multimedia.Audio.Device

| 名称          |  值     | 说明                                                 |
| ------------- | ------ | ---------------------------------------------------- |
| SPEAKER       | 2      | 扬声器。                                             |
| BLUETOOTH_SCO | 7      | 蓝牙设备SCO(Synchronous Connection Oriented)连接。 |

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

枚举,中断事件返回类型。
7119

7120 7121 7122 7123
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃。

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

7125 7126 7127 7128
| 名称           |  值     | 说明               |
| -------------- | ------ | ------------------ |
| TYPE_ACTIVATED | 0      | 表示触发焦点事件。 |
| TYPE_INTERRUPT | 1      | 表示音频打断事件。 |
7129

7130
## AudioInterrupt<sup>(deprecated)</sup>
7131

7132
音频监听事件传入的参数。
7133

7134 7135
> **说明:**
> 从 API version 7 开始支持,从 API version 9 开始废弃。
7136

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

7139 7140 7141 7142 7143
| 名称            | 类型                        | 必填 | 说明                                                         |
| --------------- | --------------------------- | ----| ------------------------------------------------------------ |
| streamUsage     | [StreamUsage](#streamusage) | 是  | 音频流使用类型。                                             |
| contentType     | [ContentType](#contenttype) | 是  | 音频打断媒体类型。                                           |
| pauseWhenDucked | boolean                     | 是  | 音频打断时是否可以暂停音频播放(true表示音频播放可以在音频打断期间暂停,false表示相反)。 |
7144

7145 7146 7147
## InterruptAction<sup>(deprecated)</sup>

音频打断/获取焦点事件的回调方法。
7148

7149
> **说明:**
J
jiaoyanlin3 已提交
7150
> 从 API version 7 开始支持,从 API version 9 开始废弃。建议使用[InterruptEvent](#interruptevent9)替代。
7151

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

7154 7155 7156 7157 7158 7159
| 名称       | 类型                                        | 必填 | 说明                                                         |
| ---------- | ------------------------------------------- | ---- | ------------------------------------------------------------ |
| actionType | [InterruptActionType](#interruptactiontypedeprecated) | 是   | 事件返回类型。TYPE_ACTIVATED为焦点触发事件,TYPE_INTERRUPT为音频打断事件。 |
| type       | [InterruptType](#interrupttype)             | 否   | 打断事件类型。                                               |
| hint       | [InterruptHint](#interrupthint)             | 否   | 打断事件提示。                                               |
| activated  | boolean                                     | 否   | 获得/释放焦点。true表示焦点获取/释放成功,false表示焦点获得/释放失败。 |