• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 音量管理开发指导
2
3## 简介
4
5AudioVolumeManager提供了音量管理的方法。开发者可以通过本指导了解应用如何通过AudioVolumeManager获取指定流音量信息、监听铃声模式变化、设置麦克风静音等。
6
7## 运作机制
8
9该模块提供了音量管理模块常用接口
10
11**图1** 音量管理常用接口
12
13![zh-ch_image_audio_volume_manager](figures/zh-ch_image_audio_volume_manager.png)
14
15**说明:** AudioVolumeManager包含音量变化监听处理和音频音量组管理相关(AudioVolumeGroupManager),开发者调用AudioVolumeGroupManager的相关方法,需要先调用getVolumeGroupManager方法创建AudioVolumeGroupManager实例,从而调用对应的接口实现相应的功能,主要接口有:获取指定流的音量、设置麦克风静音、监听麦克风状态变化等。更多介绍请参考[API参考文档](../reference/apis/js-apis-audio.md)。
16
17## 约束与限制
18
19开发者在进行麦克风管理开发前,需要先对所开发的应用配置麦克风权限(ohos.permission.MICROPHONE),如果要设置麦克风状态,则需要配置音频管理配置权限(ohos.permission.MANAGE_AUDIO_CONFIG),需注意该权限为系统级别权限。权限配置相关内容可参考:[访问控制授权申请指导](../security/accesstoken-guidelines.md)
20
21## 开发指导
22
23详细API含义可参考:[音量管理API文档AudioVolumeManager](../reference/apis/js-apis-audio.md#audiovolumemanager9)
24
251. 创建AudioVolumeGroupManager实例。
26
27   在使用AudioVolumeGroupManager的API前,需要使用getVolumeGroupManager创建一个AudioStreamManager实例。
28
29   ```js
30   import audio from '@ohos.multimedia.audio';
31   async loadVolumeGroupManager() {
32     const groupid = audio.DEFAULT_VOLUME_GROUP_ID;
33     var audioVolumeGroupManager = await audio.getAudioManager().getVolumeManager().getVolumeGroupManager(groupid);
34     console.error('audioVolumeGroupManager create success.');
35   }
36
37   ```
38
392. (可选)获取音量信息、铃声模式。
40
41   如果开发者需要获取指定音频流的音量信息(铃声、语音电话、媒体、语音助手等),或者获取当前设备是静音、震动、响铃模式,可参考并调用以下接口。更多事件请参考[API参考文档](../reference/apis/js-apis-audio.md)。
42
43   ```js
44   import audio from '@ohos.multimedia.audio';
45   async loadVolumeGroupManager() {
46     const groupid = audio.DEFAULT_VOLUME_GROUP_ID;
47     var audioVolumeGroupManager = await audio.getAudioManager().getVolumeManager().getVolumeGroupManager(groupid);
48     console.info('audioVolumeGroupManager create success.');
49   }
50
51   //获取指定流的当前音量(范围为0 ~ 15)
52   async getVolume() {
53    await loadVolumeGroupManager();
54    await audioVolumeGroupManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => {
55      console.info(`getVolume success and volume is: ${value}.`);
56    });
57   }
58   //获取指定流的最小音量
59   async getMinVolume() {
60     await loadVolumeGroupManager();
61     await audioVolumeGroupManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => {
62       console.info(`getMinVolume success and volume is: ${value}.`);
63     });
64   }
65   //获取指定流的最大音量
66   async getMaxVolume() {
67     await loadVolumeGroupManager();
68     await audioVolumeGroupManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((value) => {
69       console.info(`getMaxVolume success and volume is: ${value}.`);
70     });
71   }
72   //获取当前铃声模式:  静音(0)| 震动(1) | 响铃(2)
73   async getRingerMode() {
74     await loadVolumeGroupManager();
75     await audioVolumeGroupManager.getRingerMode().then((value) => {
76       console.info(`getRingerMode success and RingerMode is: ${value}.`);
77     });
78   }
79   ```
80
813. (可选)查询、设置、监听麦克风状态。
82
83   如果开发者需要获取、设置麦克风状态,或者监听麦克风状态变化等信息,可参考并调用以下接口。
84
85   ```js
86   import audio from '@ohos.multimedia.audio';
87   async loadVolumeGroupManager() {
88     const groupid = audio.DEFAULT_VOLUME_GROUP_ID;
89     var audioVolumeGroupManager = await audio.getAudioManager().getVolumeManager().getVolumeGroupManager(groupid);
90     console.info('audioVolumeGroupManager create success.');
91   }
92
93   async on() {   //监听麦克风状态变化
94     await loadVolumeGroupManager();
95     await audioVolumeGroupManager.audioVolumeGroupManager.on('micStateChange', (micStateChange) => {
96       console.info(`Current microphone status is: ${micStateChange.mute} `);
97     });
98   }
99
100   async isMicrophoneMute() { //查询麦克风是否静音
101     await audioVolumeGroupManager.audioVolumeGroupManager.isMicrophoneMute().then((value) => {
102       console.info(`isMicrophoneMute is: ${value}.`);
103     });
104   }
105
106   async setMicrophoneMuteTrue() { //设置麦克风静音
107     await loadVolumeGroupManager();
108     await audioVolumeGroupManager.audioVolumeGroupManager.setMicrophoneMute(true).then(() => {
109       console.info('setMicrophoneMute to mute.');
110     });
111   }
112
113   async setMicrophoneMuteFalse() { //取消麦克风静音
114     await loadVolumeGroupManager();
115     await audioVolumeGroupManager.audioVolumeGroupManager.setMicrophoneMute(false).then(() => {
116       console.info('setMicrophoneMute to not mute.');
117     });
118   }
119   async test(){  //综合调用:先设置监听,然后查询麦克风状态,设置麦克风静音后再查询状态,最后取消麦克风静音。
120     await on();
121     await isMicrophoneMute();
122     await setMicrophoneMuteTrue();
123     await isMicrophoneMute();
124     await setMicrophoneMuteFalse();
125   }
126   ```
127
128