Android開發之調整手機音量
阿新 • • 發佈:2019-01-26
調整手機的各種音量可以通過AudioManager這個類來操作
注:安卓手機各種音量的最大數值不一樣,請通過下面具體的方法獲取最大音量值。
涉及的引數說明:
streamType型別:(音量型別)
STREAM_ALARM 提示音
STREAM_MUSIC 音樂音量即多媒體音量
STREAM_NOTIFICATION 視窗頂部狀態列Notification,
STREAM_RING 鈴聲
STREAM_SYSTEM 系統
STREAM_VOICE_CALL 通話
STREAM_DTMF 雙音多頻
flags引數:(下面是常用的幾個)
FLAG_PLAY_SOUND 調整音量時播放聲音
FLAG_SHOW_UI 調整時顯示系統的音量進度條
0 表示什麼都不做
下面是具體程式碼:
public class AudioUtil {
private AudioManager mAudioManager;
private static AudioUtil mInstance;
private AudioUtil(Context context){
mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
}
public synchronized static AudioUtil getInstance (Context context){
if(mInstance == null){
mInstance = new AudioUtil(context);
}
return mInstance;
}
//獲取多媒體最大音量
public int getMediaMaxVolume(){
return mAudioManager.getStreamMaxVolume( AudioManager.STREAM_MUSIC );
}
//獲取多媒體音量
public int getMediaVolume(){
return mAudioManager.getStreamVolume( AudioManager.STREAM_MUSIC );
}
//獲取通話最大音量
public int getCallMaxVolume(){
return mAudioManager.getStreamMaxVolume( AudioManager.STREAM_VOICE_CALL );
}
//獲取系統音量最大值
public int getSystemMaxVolume(){
return mAudioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM );
}
//獲取系統音量
public int getSystemVolume(){
return mAudioManager.getStreamVolume(AudioManager.STREAM_SYSTEM );
}
//獲取提示音量最大值
public int getAlermMaxVolume(){
return mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM );
}
/**
* 設定多媒體音量
* 這裡我只寫了多媒體和通話的音量調節,其他的只是引數不同,大家可仿照
*/
public void setMediaVolume(int volume){
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, //音量型別
volume,
AudioManager.FLAG_PLAY_SOUND
| AudioManager.FLAG_SHOW_UI);
}
//設定通話音量
public void setCallVolume(int volume){
mAudioManager.setStreamVolume( AudioManager.STREAM_VOICE_CALL,
volume,
AudioManager.STREAM_VOICE_CALL);
}
// 關閉/開啟揚聲器播放
public void setSpeakerStatus(boolean on) {
if (on) { //揚聲器
mAudioManager.setSpeakerphoneOn(true);
mAudioManager.setMode(AudioManager.MODE_NORMAL);
} else {
// 設定最大音量
int max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL);
mAudioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, max, AudioManager.STREAM_VOICE_CALL);
// 設定成聽筒模式
mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
mAudioManager.setSpeakerphoneOn(false);// 關閉揚聲器
mAudioManager.setRouting(AudioManager.MODE_NORMAL, AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL);
}
}
}
另外,還有個public void adjustStreamVolume(int streamType, int direction, int flags)方法也可用來調整音量,只不過不能設定具體數值,根據系統的閥值來自動調整,其中第1和第3個引數上面有說明,下面是第2個引數的介紹:
direction是調整的方向,增加或減少:
ADJUST_LOWER 降低音量
ADJUST_RAISE 增加音量
ADJUST_SAME 保持不變,這個主要用於向用戶展示當前的音量