android之AudioManager詳解_什麼是AudioManager

來源:互聯網
上載者:User

AudioManager類位於android.Media 包中,該類提供存取控制音量和鈐聲模式的操作。

官方文檔中註明了:Use Context.getSystemService(Context.AUDIO_SERVICE) to get an instance of this class.

所以我們可以通過下面的語句獲得:

 

AudioManager audiomanage = (AudioManager)getAcitivity().getSystemService(Context.AUDIO_SERVICE);

audiomanager就是我們定義的控制系統聲音的對象。

這裡只講述幾個比較常用到的方法:

adjustVolume(int direction, int flags)

用來控制手機音量大小,

當傳入的第一個參數為AudioManager.ADJUST_LOWER 時,可將音量調小一個單位,

傳入AudioManager.ADJUST_RAISE時,則可以將音量調大一個單位。

 

adjustStreamVolume(int streamType, int direction, intflags)

(以步長)調節手機音量大小
參數1:聲音類型,可取為STREAM_VOICE_CALL(通話)、STREAM_SYSTEM(系統聲音)、STREAM_RING(鈴聲)、STREAM_MUSIC(音樂)、STREAM_ALARM(鬧鈴聲)
參數2:調整音量的方向,可取ADJUST_LOWER(降低)、ADJUST_RAISE(升高)、ADJUST_SAME
參數3:可選的標誌位

setStreamVolume(int streamType, int index, intflags)   

直接設定音量大小

getMode()

返回當前音頻模式,如 NORMAL(普通), RINGTONE(鈴聲), orIN_CALL(通話)

setMode()

設定聲音模式,可取值NORMAL(普通), RINGTONE(鈴聲), or IN_CALL(通話)

getRingerMode()

返回當前的鈴聲模式。如RINGER_MODE_NORMAL(普通)、RINGER_MODE_SILENT(靜音)、RINGER_MODE_VIBRATE(震動)

setRingerMode(int ringerMode)

改變鈴聲模式

getStreamVolume(int streamType)

取得當前手機的音量,最大值為7,最小值為0,當為0時,手機自動將模式調整為“震動模式”。

getStreamMaxVolume(int streamType)

獲得當前手機最大鈴聲。

setStreamMute(int streamType, boolean state)
靜音或不靜音音頻流
設定指定聲音類型(streamType)是否為靜音。如果state為true,則設定為靜音;否則,不設定為靜音。

//音量控制,初始化定義AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);//最大音量int maxVolume =mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);//當前音量int currentVolume =mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

 

直接控制音量的多少:

if(isSilent){  mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,0, 0);}else{  mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,tempVolume, 0);//tempVolume:音量絕對值}

 

以一步步長控制音量的增減,並彈出系統預設音量控制條:

//降低音量,調出系統音量控制if(flag ==0){  mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_LOWER,                            AudioManager.FX_FOCUS_NAVIGATION_UP);}//增加音量,調出系統音量控制else if(flag ==1){  mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_RAISE,                            AudioManager.FX_FOCUS_NAVIGATION_UP);}

 

 

常用方法:
android audioManager擷取音量:
先擷取AudioManager執行個體,
AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

//通話音量int max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL ); int current = mAudioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL ); //系統音量int max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM ); current = mAudioManager.getStreamVolume(AudioManager.STREAM_SYSTEM ); //鈴聲音量max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_RING); current = mAudioManager.getStreamVolume(AudioManager.STREAM_RING ); //音樂音量max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC ); current = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC ); //提示聲音音量max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM ); current = mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM ); 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.