Android audioManager


Android audioManager

 

AudioManager provides access to volume and ringer mode control.

獲取對象

Use Context.getSystemService(Context.AUDIO_SERVICE) to get an instance of this class.

AudioManager mAudioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);

 

//通話音量
int max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_VOICE_CALL );
int current = mAudioManager.getStreamVolume( AudioManager.STREAM_VOICE_CALL );
Log.d(“VIOCE_CALL”, “max : ” + max + ” current : ” + current);


//系統音量
max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_SYSTEM );
current = mAudioManager.getStreamVolume( AudioManager.STREAM_SYSTEM );
Log.d(“SYSTEM”, “max : ” + max + ” current : ” + current);

//鈴聲音量
max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_RING );
current = mAudioManager.getStreamVolume( AudioManager.STREAM_RING );
Log.d(“RING”, “max : ” + max + ” current : ” + current);

//音樂音量
max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_MUSIC );
current = mAudioManager.getStreamVolume( AudioManager.STREAM_MUSIC );
Log.d(“MUSIC”, “max : ” + max + ” current : ” + current);

//提示聲音音量
max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_ALARM );
current = mAudioManager.getStreamVolume( AudioManager.STREAM_ALARM );
Log.d(“ALARM”, “max : ” + max + ” current : ” + current);

 

獲取當前正在播放音頻的硬件信息

if (isBluetoothA2dpOn()) {
    // Adjust output for Bluetooth. 藍牙設備 }
else if (isSpeakerphoneOn()) {
     // Adjust output for Speakerphone. 內置揚聲器(免提) }
else if (isWiredHeadsetOn()) {
    // Adjust output for headsets 有線耳機 }
else {
    // If audio plays and noone can hear it, is it still playing? 未知設備 }

出現硬件設備切換的時候,Android 會發送系統廣播 ACTION_AUDIO_BECOMING_NOISY ,您的應用程序中應該注冊一個 BroadcastReceiver 來監聽這個消息,當出現這種情況的時候,如果正在聽音樂,較好的設計方案是暫停當前音樂的播放,如果正在玩游戲,那么盡量降低游戲的音量是個不錯的解決方法。

 

 

 

image

幾個比較常用到的方法:
方法1:adjustVolume(int direction, int flags)
解釋:這個方法用來控制手機音量大小,當傳入的第一個參數為 AudioManager.ADJUST_LOWER 時,可將音量調小一個單位,傳入 AudioManager.ADJUST_RAISE 時,則可以將音量調大一個單位。
方法2:getMode()
解釋:返回當前音頻模式。
方法3:getRingerMode()
解釋:返回當前的鈴聲模式。
方法4:getStreamVolume(int streamType)
解釋:取得當前手機的音量,最大值為7,最小值為0,當為0時,手機自動將模式調整為“震動模式”。

  注意: 分為9個單位 靜音(0),震動(0),1----7 九個等級。從靜音調為1時,需要調大兩個等級. 
方法5:setRingerMode(int ringerMode)
解釋:改變鈴聲模式

//聲音模式
AudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
//靜音模式
AudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
//震動模式
AudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);

 

    //打開揚聲器

         audioManager.setMode(AudioManager.ROUTE_SPEAKER);
         currVolume = audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL);
         if(!audioManager.isSpeakerphoneOn()) {
              audioManager.setSpeakerphoneOn(true);
              audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,
                  audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL ),
                  AudioManager.STREAM_VOICE_CALL);
         }

     // 關閉揚聲器

        if(audioManager.isSpeakerphoneOn()) {
             audioManager.setSpeakerphoneOn(false);
             audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,currVolume,
                   AudioManager.STREAM_VOICE_CALL);
        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM