package com.telpo.faceHengDian.utile; import android.app.Service; import android.content.Context; import android.media.AudioManager; /** * 音量控制 */ public class VolumeUtil { private AudioManager mAudioManager; public VolumeUtil(Context context){ mAudioManager = (AudioManager) context.getSystemService(Service.AUDIO_SERVICE); } //获取最大多媒体音量 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 getCallVolume(){ return mAudioManager.getStreamVolume( 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 int getAlermVolume(){ return mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM ); } // 设置多媒体音量 /** * 第一个是streamType,streamType是需要调整音量的类型 * 第二个direction,是音量调节的方向,可以取下面的几个值: * ADJUST_LOWER 降低音量 * ADJUST_RAISE 升高音量 * ADJUST_SAME 保持不变,使用这个值UI上会向用户展示当前的音量 * 第三个flags,是附加参数,用于影响设置过程中的一些系统行为,两个常用的是: * FLAG_PLAY_SOUND 调整音量时播放声音 * FLAG_SHOW_UI 调整时显示音量条,跟按按键调节音量时出现的音量条一致 * 0 表示什么额外行为也没有,比如想自己绘制音量条时,可以使用这个值防止显示系统默认的音量条 * @param volume */ public void setMediaVolume(int volume){ mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, //音量类型 volume, AudioManager.FLAG_PLAY_SOUND|0); } //设置通话音量 public void setCallVolume(int volume){ mAudioManager.setStreamVolume( AudioManager.STREAM_VOICE_CALL, volume, AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_SHOW_UI); } //设置提示音量 public void setAlermVolume(int volume){ mAudioManager.setStreamVolume( AudioManager.STREAM_ALARM, volume,AudioManager.FLAG_PLAY_SOUND |AudioManager.FLAG_SHOW_UI); } // 关闭/打开扬声器播放 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); } } }