阅读(2398) (17)

鸿蒙OS 音量管理开发指导

2020-09-17 09:22:50 更新

场景介绍

音量管理的主要工作是音量调节,输入/输出设备管理,注册音频中断、音频采集中断的回调等。

接口说明

接口名 描述
AudioManager() 构造函数。
AudioManager(Context context) 构造函数,由使用者指定应用上下文 Context。
AudioManager(String packageName) 构造函数,由使用者指定包信息。
activateAudioInterrupt(AudioInterrupt interrupt) 激活音频中断状态检测。
deactivateAudioInterrupt(AudioInterrupt interrupt) 去激活音频中断状态检测。
getAudioParameter(String key) 获取音频硬件中指定参数 keys 所对应的参数值。
AudioDeviceDescriptor[] getDevices(DeviceFlag flag) 获取设备信息。
int getMaxVolume(AudioVolumeType volumeType) 获取指定音频流音量最大档位。
int getMinVolume(AudioVolumeType volumeType) 获取指定音频流音量最小档位。
int getRingerMode() 获取铃声模式。
int getVersion() 获取音频套件版本。
int getVolume(AudioVolumeType volumeType) 获取指定音频流的音量档位。
boolean isDeviceActive(int deviceType) 判断设备的开关状态。
boolean isMute(AudioVolumeType volumeType) 特定的流是否处于静音状态。
boolean mute(AudioVolumeType volumeType) 将特定流设置为静音状态。
boolean setAudioParameter(String key, String value) 为音频硬件设置可变数量的参数值。
boolean setDeviceActive(int deviceType, boolean state) 设置设备的开关状态。
boolean setRingerMode(AudioRingMode mode) 设置铃声模式。
boolean setVolume(AudioVolumeType volumeType, int volume) 设置特定流的音量档位。
boolean unmute(AudioVolumeType volumeType) 将特定流设置为非静音状态。
boolean setMasterMute(boolean isMute) 将主音频输出设备设置为静音或取消静音状态。
boolean setMicrophoneMute(boolean isMute) 将麦克风设置为静音或取消静音状态。
boolean isMicrophoneMute() 判断麦克风是否处于静音状态。
List<AudioCapturerConfig> getActiveCapturerConfigs() 获取设备当前激活的音频采集任务的配置信息。
registerAudioCapturerCallback(AudioCapturerCallback cb) 注册音频采集参数变更回调。
void unregisterAudioCapturerCallback(AudioCapturerCallback cb) 去注册音频采集参数变更回调。
Uri getRingerUri(Context context, RingToneType type) 获取指定铃声类型的Uri。
void setRingerUri(Context context, RingToneType type, Uri uri) 设置指定铃声类型的 Uri。
AudioManager.CommunicationState getCommunicationState() 获取当前的通话模式。
void setCommunicationState(AudioManager.CommunicationState communicationState) 设置当前的通话模式。
boolean changeVolumeBy(AudioVolumeType volumeType, int index) 将当前音量增加或减少一定量。
boolean connectBluetoothSco() 连接到蓝牙 SCO 通道。
boolean disconnectBluetoothSco() 断开与蓝牙 SCO 通道的连接。
java.util.List<AudioRendererInfo> getActiveRendererConfigs() 获取有关活动音频流信息,包括使用类型、内容类型和标志。
static int getMasterOutputFrameCount() 获取主输出设备缓冲区中的帧数。
static int getMasterOutputSampleRate() 获取主输出设备的采样率。
boolean isMasterMute() 检查音频流是否全局静音。
static boolean isStreamActive(AudioVolumeType volumeType) 检查指定类型的音频流是否处于活动状态。
static int makeSessionId() 创建一个会话 ID,AudioRendererInfo.Builder.sessionID(int)将使用该会话 ID 来设置音频播放参数,而AudioCapturerInfo.Builder.sessionID(int)将使用该会话 ID 来设置记录参数。
void registerAudioRendererCallback(AudioRendererCallback cb) 注册音频播放参数变更回调。
void unregisterAudioRendererCallback(AudioRendererCallback cb) 去注册音频播放参数变更回调。

开发步骤

音量管理提供的都是独立的功能,一般作为音频播放和音频采集的功能补充来使用。开发者根据具体使用场景选择方法即可。

音频中断状态检测和音频采集中断状态检测的使用样例,请参考音频播放音频采集的开发步骤。