1. 程式人生 > >Android開發之調整手機音量

Android開發之調整手機音量

調整手機的各種音量可以通過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 保持不變,這個主要用於向用戶展示當前的音量