28

这是我静音/取消静音电话的代码。但我想检查电话是否已经静音,如果不是,我将静音。如果是在振动,那么我会让它正常。

我可以以某种方式检查这些状态吗?

public void changeRingerMode(Context context){

AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);

    /**
    * To Enable silent mode.....
    */
    audio.setRingerMode(AudioManager.RINGER_MODE_SILENT);

    /**
    * To Enable Ringer mode.....
    */
    audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

}
4

2 回答 2

59

尝试这个:

switch( audio.getRingerMode() ){
case AudioManager.RINGER_MODE_NORMAL:
   break;
case AudioManager.RINGER_MODE_SILENT:
   break;
case AudioManager.RINGER_MODE_VIBRATE:
   break;
}
于 2012-08-16T10:48:29.000 回答
6

就我而言,我发现即使我的手机设置为振动,它也会AudioManager.RINGER_MODE_SILENT在静音时返回,所以我找到了一种检查振动模式的方法:

public static boolean checkVibrationIsOn(Context context){
    boolean status = false;
    AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
    if(am.getRingerMode() == AudioManager.RINGER_MODE_VIBRATE){
        status = true;
    } else if (1 == Settings.System.getInt(context.getContentResolver(), "vibrate_when_ringing", 0)) //vibrate on
        status = true;
    return status;
}

并获得完整的图片,以确定振铃器是否打开:

public static boolean checkRingerIsOn(Context context){
    AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
    return am.getRingerMode() == AudioManager.RINGER_MODE_NORMAL;
}
于 2015-09-03T03:37:21.333 回答