概述:
播放音量的管理主要包括对系统音量的管理和对音频流音量的管理。系统音量与音频流音量分别是指HarmonyOS系统的总音量和指定音频流的音量,其中音频流音量的大小受制于系统音量,管理两者的接口不同。

  1. 系统音量:
import { audio } from '@kit.AudioKit';

// 通过AudioVolumeManager只能获取音量信息及监听音量变化,不能主动调节系统音量

let audioManager = audio.getAudioManager();
let audioVolumeManager = audioManager.getVolumeManager();

  1. 监听系统音量:
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} `);
});

  1. 使用音量面板调节系统音量: 依赖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.');  
  });  
}

  1. 设置音频流音量: 管理音频流音量的接口是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}`);
});

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐