在修改情景模式的时候先要获取初始的情景模式,可以用getRingerMode()获得。不过需要说明一下一些参数定义:
RINGER_MODE_SILENT 静音 , 且无振动 。
RINGER_MODE_VIBRATE 静音 , 但有振动 。
RINGER_MODE_NORMAL 正常声音 , 振动开关由 setVibrateSetting 决定 .。
铃响模式的设置是通过 AudioManager( 音频管理器 ) 来实现的 。
public class SoundManager {
private AudioManager mAudioManager;
public SoundManager (Context context) {
mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
}
/**
* 有声无震动
* @param audio
*/
public void ring(AudioManager audio) {
audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF);
audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF);
}
/**
* 有声有震动
* @param audio
*/
public void ringAndVibrate(AudioManager audio) {
audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ON);
audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_ON);
}
/**
* 无声有震动
* @param audio
*/
public void vibrate(AudioManager audio) {
audio.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ON);
audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_ON);
}
/**
* 无声无震动
* @param audio
*/
public void noVibrateAndRing(AudioManager audio) {
audio.setRingerMode(AudioManager.RINGER_MODE_SILENT);
audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF);
audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF);
}
}