Android AudioManager类(必看)
来源:互联网 发布:java excel报表开发 编辑:程序博客网 时间:2024/06/03 21:19
Android SDK提供了一个类来控制系统音量和振动的更改api,android.media.AudioManager 通过这个类,我们将手机设置为静音或者振动,和更改振动的类型。AudioManager无法在代码中实例化,需要通过AudioManager audiomanage = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);获取到其实例。audiomanager就是我们定义的声音的对象。,我们可以通过调用AudioManager的方法setRingerMode来控制声音的类型。setRingerMode方法接受一个参数,我们只要根据需要更改的类型值传入就可以拉。这3个分别是:
public static final int RINGER_MODE_SILENT = 0;//静音模式public static final int RINGER_MODE_VIBRATE = 1;//震动模式public static final int RINGER_MODE_NORMAL = 2; //普通
一:audiomanager对象分析
先获取AudioManager实例,
AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
1.通话音量
int max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL );
int current = mAudioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL );
2.系统音量
int max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM );
current = mAudioManager.getStreamVolume(AudioManager.STREAM_SYSTEM );
3.铃声音量
max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_RING);
current = mAudioManager.getStreamVolume(AudioManager.STREAM_RING );
3.音乐音量
max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC );
current = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC );
4.提示声音音量
max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM );
current = mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM );
另外需要知道的一些方法:
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(铃声), IN_CALL(通话)
setMode()——设置声音模式,可取值NORMAL(普通), RINGTONE(铃声), 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);
//关于标志flag 的用法:降低音量,调出系统音量控制
<span style="font-size:18px;">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);}</span>
二:震动类型
关于振动类型:
1:VIBRATE_SETTING_ON //总是震动
2:VIBRATE_SETTING_OFF //从不震动
3:VIBRATE_SETTING_ONLY_SILENT //静音下震动
4:VIBRATE_SETTING_ON //非静音下震动
知道了这些类型,看看怎么实现。
int vibrate_setting = -1;int ring_mode = -1;switch(profile.vibrate) {case ProfileConstants.VIBRATE_ALWAYS_ON:// 总是振动vibrate_setting = AudioManager.VIBRATE_SETTING_ON;ring_mode = 1;break;case ProfileConstants.VIBRATE_NEVER://从不振动vibrate_setting = AudioManager.VIBRATE_SETTING_OFF;ring_mode = 0;break;case ProfileConstants.VIBRATE_ONLY_IN_SILENT://静音下振动vibrate_setting = AudioManager.VIBRATE_SETTING_ONLY_SILENT;ring_mode = 1;break;case ProfileConstants.VIBRATE_UNLESS_SILENT://非静音下振动vibrate_setting = AudioManager.VIBRATE_SETTING_ON;ring_mode = 0;break;}Settings.System.putInt(resolver, "vibrate_in_silent", ring_mode);audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, vibrate_setting);
这样以来我们就实现了和系统提供的振动类型相同的功能了。
- Android AudioManager类(必看)
- android AudioManager类 详解
- android AudioManager类 详解
- android AudioManager类 详解 .
- android AudioManager类 详解
- android AudioManager类 详解
- android AudioManager类 详解
- android AudioManager类 详解 .
- Android audioManager 类
- android AudioManager类 详解
- android AudioManager类 详解
- android AudioManager类 详解
- android AudioManager类 详解
- android AudioManager类 详解 .
- android AudioManager 类详解
- android AudioManager类 详解 .
- android AudioManager类 详解
- android AudioManager类介绍
- php+Angularjs 实现Post 提交表单 模拟登录
- listView的item显示不同布局
- Base64加密解密原理以及代码实现
- 文件的拷贝
- 微电影大赛三等奖
- Android AudioManager类(必看)
- IP地址类
- Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRID
- 好网站留备
- 用最少的机器支撑万亿级访问,微博6年Redis优化历程
- CSS的继承关系和重写(咋个办呢 zgbn)
- cell的重用机制
- Retrofit + GSON处理JSON模板
- next_permutation函数