android AudioManager類 詳解
通過getSystemService(Context.AUDIO_SERVICE)方法獲得AudioManager例項物件。
AudioManager audiomanage = (AudioManager)context.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
//音量控制,初始化定義
AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
//最大音量
int
maxVolume =mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
//當前音量
int
currentVolume =mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
直接控制音量的多少:
1 2 3 4 5 |
if (isSilent){
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0 ,
0 );
} else {
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,tempVolume,
0 ); //tempVolume:音量絕對值
}
|
以一步步長控制音量的增減,並彈出系統預設音量控制條:
1 2 3 4 5 6 7 8 9 10 |
//降低音量,調出系統音量控制
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 );