概述:
播放音量的管理主要包括对系统音量的管理和对音频流音量的管理。系统音量与音频流音量分别是指HarmonyOS系统的总音量和指定音频流的音量,其中音频流音量的大小受制于系统音量,管理两者的接口不同。
- 系统音量:
import { audio } from '@kit.AudioKit';
// 通过AudioVolumeManager只能获取音量信息及监听音量变化,不能主动调节系统音量
let audioManager = audio.getAudioManager();
let audioVolumeManager = audioManager.getVolumeManager();
- 监听系统音量:
import { audio } from '@kit.AudioKit';
// 通过设置监听事件,可以监听系统音量的变化
audioVolumeManager.on('volumeChange', (volumeEvent: audio.VolumeEvent) => {
console.info(`VolumeType of stream: ${volumeEvent.volumeType} `);
console.info(`Volume level: ${volumeEvent.volume} `);
console.info(`Whether to updateUI: ${volumeEvent.updateUi} `);
});
- 使用音量面板调节系统音量: 依赖AudioManager来进行音频管理
// 音量可使用audioManager进行调节
audioManager.setVolume(audio.AudioVolumeType.MEDIA, this.volume, (err: BusinessError) => {
if (err) {
console.error(`Failed to set the volume. ${err}`);
return;
}
console.info('Callback invoked to indicate a successful volume setting.');
});
}
- 设置音频流音量: 管理音频流音量的接口是AVPlayer或AudioRenderer的setVolume()方法
// 方法一
let volume = 1.0 // 指定的音量大小,取值范围为[0.00-1.00],1表示最大音量
avPlayer.setVolume(volume);
// 方法二
audioRenderer.setVolume(0.5).then(() => { // 音量范围为[0.0-1.0]
console.info('Invoke setVolume succeeded.');
}).catch((err: BusinessError) => {
console.error(`Invoke setVolume failed, code is ${err.code}, message is ${err.message}`);
});