Cómo comprobar si el teléfono está silenciado, vibrado o ruidoso en android

Este es mi código para silenciar / silenciar el teléfono. Pero me gustaría comprobar si el teléfono está alreay en silencio y si no es entonces lo voy a silenciar. Si está en vibración entonces lo haré normal.

¿Puedo comprobar esto de alguna manera?

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); } 

prueba esto:

 switch( audio.getRingerMode() ){ case AudioManager.RINGER_MODE_NORMAL: break; case AudioManager.RINGER_MODE_SILENT: break; case AudioManager.RINGER_MODE_VIBRATE: break; } 

En mi caso descubrí que incluso si la configuración de mi teléfono es para vibrar, se devolverá AudioManager.RINGER_MODE_SILENT cuando es silencio, así que encontrar la forma de comprobar el modo de vibración, si entonces:

 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; } 

Y para obtener el cuadro completo, para saber si el timbre está encendido:

 public static boolean checkRingerIsOn(Context context){ AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); return am.getRingerMode() == AudioManager.RINGER_MODE_NORMAL; } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.