Android Receiver(听筒模式和扬声器模式,铃音模式)
2014年10月31日 09:45:56 老司机s 阅读数:13082
版权声明:本文为博主原创文章,未经博主允许不得转载。Android北京开发技术群 482266514密码CSDN https://blog.csdn.net/wds1181977/article/details/40649511
听筒播放Mp3
下载Demohttp://download.csdn.net/detail/wds1181977/8114967
切换为听筒模式声音由听筒发出
AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
am.setMode(AudioManager.MODE_IN_CALL);
切换为其他模式
am.setMode(AudioManager.MODE_NORMAL);//正常模式,即在没有铃音与电话的情况
am.setMode(AudioManager.MODE_RINGTONE);//铃响模式
am.setMode(AudioManager.MODE_IN_CALL);//接通电话模式
am.setMode(AudioManager.MODE_IN_COMMUNICATION);//通话模式。
获取当前状态
mAudioMode = am.getMode()
判断音频路由模式
am. isSpeakerphoneOn(); //检查喇叭扩音器是否开着。若喇叭扩音器开着,返回true
am. isBluetoothScoOn();/检查通信是否使用蓝牙SCO。
am. isBluetoothA2dpOn(); //检查A2DP音频路由到蓝牙耳机是否打开 音频到/从蓝牙耳机,返回ture
am. isWiredHeadsetOn(); // 检查音频路由到有线耳机是否开着。若音频被路由到/从有线耳机,返回true
am. isMusicActive();//检查是否有音乐是活动的
权限
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
设置喇叭扩音器打开或关闭。
这个方法只能用于代替音频设置的平台范围管理应用程序或主要电话应用程序。
参数on 为true打开喇叭扩音器;为false关闭喇叭扩音器。
public void setSpeakerphoneOn (boolean on)
铃声模式
获取当前铃音模式
getRingerMode()
设置当前模式
public void setRingerMode (int ringerMode)
am.setRingerMode(RINGER_MODE_NORMAL);//铃音正常模式 am.setRingerMode(RINGER_MODE_SILENT);//铃音静音模式 静音且不会振动 am.setRingerMode(RINGER_MODE_VIBRATE);//铃音震动模式 会静音且会振动
获取音量类型和大小
//通话音量 max 最大音量 current当前音量
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 );
设置音量大小
int maxVolume = am.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL);//获取当前通话最大音量
am.setStreamVolume(AudioManager.STREAM_VOICE_CALL, maxVolume,AudioManager.USE_DEFAULT_STREAM_TYPE);}
调出系统音量控制
/**
* 参数1:声音类型,
* 可取为STREAM_VOICE_CALL(通话)、
* STREAM_SYSTEM(系统声音)、
* STREAM_RING(铃声)、
* STREAM_MUSIC(音乐)、
* STREAM_ALARM(闹铃声)
* 参数2:调整音量的方向,可取
* ADJUST_LOWER(降低)、
* ADJUST_RAISE(升高)、
* ADJUST_SAME
* 参数3:可选的标志位
* @param position
*/
adjustStreamVolume(int streamType, int direction, intflags)
如
//降低音量,调出系统音量控制
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);
}