鴻蒙OS 音量管理開發(fā)指導

2020-09-18 14:31 更新

場景介紹

音量管理的主要工作是音量調節(jié),輸入/輸出設備管理,注冊音頻中斷、音頻采集中斷的回調等。

接口說明

接口名 描述
AudioManager() 構造函數。
AudioManager(Context context) 構造函數,由使用者指定應用上下文 Context。
AudioManager(String packageName) 構造函數,由使用者指定包信息。
activateAudioInterrupt(AudioInterrupt interrupt) 激活音頻中斷狀態(tài)檢測。
deactivateAudioInterrupt(AudioInterrupt interrupt) 去激活音頻中斷狀態(tài)檢測。
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) 判斷設備的開關狀態(tài)。
boolean isMute(AudioVolumeType volumeType) 特定的流是否處于靜音狀態(tài)。
boolean mute(AudioVolumeType volumeType) 將特定流設置為靜音狀態(tài)。
boolean setAudioParameter(String key, String value) 為音頻硬件設置可變數量的參數值。
boolean setDeviceActive(int deviceType, boolean state) 設置設備的開關狀態(tài)。
boolean setRingerMode(AudioRingMode mode) 設置鈴聲模式。
boolean setVolume(AudioVolumeType volumeType, int volume) 設置特定流的音量檔位。
boolean unmute(AudioVolumeType volumeType) 將特定流設置為非靜音狀態(tài)。
boolean setMasterMute(boolean isMute) 將主音頻輸出設備設置為靜音或取消靜音狀態(tài)。
boolean setMicrophoneMute(boolean isMute) 將麥克風設置為靜音或取消靜音狀態(tài)。
boolean isMicrophoneMute() 判斷麥克風是否處于靜音狀態(tài)。
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() 獲取主輸出設備緩沖區(qū)中的幀數。
static int getMasterOutputSampleRate() 獲取主輸出設備的采樣率。
boolean isMasterMute() 檢查音頻流是否全局靜音。
static boolean isStreamActive(AudioVolumeType volumeType) 檢查指定類型的音頻流是否處于活動狀態(tài)。
static int makeSessionId() 創(chuàng)建一個會話 ID,AudioRendererInfo.Builder.sessionID(int)將使用該會話 ID 來設置音頻播放參數,而AudioCapturerInfo.Builder.sessionID(int)將使用該會話 ID 來設置記錄參數。
void registerAudioRendererCallback(AudioRendererCallback cb) 注冊音頻播放參數變更回調。
void unregisterAudioRendererCallback(AudioRendererCallback cb) 去注冊音頻播放參數變更回調。

開發(fā)步驟

音量管理提供的都是獨立的功能,一般作為音頻播放和音頻采集的功能補充來使用。開發(fā)者根據具體使用場景選擇方法即可。

音頻中斷狀態(tài)檢測和音頻采集中斷狀態(tài)檢測的使用樣例,請參考音頻播放音頻采集的開發(fā)步驟。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號