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 来监听这个消息,当出现这种情况的时候,如果正在听音乐,较好的设计方案是暂停当前音乐的播放,如果正在玩游戏,那么尽量降低游戏的音量是个不错的解决方法。
几个比较常用到的方法:
方法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);
}
最新文章
- [Erlang 0118] Erlang 杂记 V
- 基于小脚丫的ADC081S101 电压采集595数码管显示
- cordova常用资料源
- velocity模板引擎学习(3)-异常处理
- [Codeforces] 347B - Fixed Points
- LINUX 内核导论
- Peter&;#39;s Hobby
- sql server基础学习之引号
- Spring 4学习——问题与注意事项(一)
- Java数据持久层框架 MyBatis之API学习二(入门)
- volatile特性及内存语义
- LOJ.2865.[IOI2018]狼人(Kruskal重构树 主席树)
- PPI | protein-protein interaction | 蛋白互作分析
- 【BZOJ1449】 球队收益
- win7频繁提示资源管理器已停止工作解决办法
- java作业第三次作业
- sublime格式化js、css、html的通用插件-html js css pretty
- springboot中radis配置和使用【进阶二】
- 一、初识java
- HDU - 4763 找出特殊规律的串