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