1# 音量管理开发指导 2 3## 简介 4 5AudioVolumeManager提供了音量管理的方法。开发者可以通过本指导了解应用如何通过AudioVolumeManager获取指定流音量信息、监听铃声模式变化、设置麦克风静音等。 6 7## 运作机制 8 9该模块提供了音量管理模块常用接口 10 11**图1** 音量管理常用接口 12 13 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