2012-08-16 24 views
26

Este es mi código para silenciar/activar el sonido del teléfono. Pero me gustaría verificar si el teléfono ya está silenciado y si no lo está, lo silenciaré. Si está en vibración, lo haré normal.Cómo verificar si el teléfono está silenciado, vibra o fuerte en android

¿Puedo verificar 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); 

} 

Respuesta

47

probar esto:

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

u gracias. eso fue rápido :) – senzacionale

+0

senzacionale, bienvenido :) –

5

En mi caso me di cuenta de que incluso si la configuración de mi teléfono es vibrar, volverá AudioManager.RINGER_MODE_SILENT cuándo es el silencio, así que encontré una manera de comprobar la modo de vibración si a continuación:

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 la imagen completa, para averiguar si el timbre está en:

public static boolean checkRingerIsOn(Context context){ 
    AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); 
    return am.getRingerMode() == AudioManager.RINGER_MODE_NORMAL; 
} 
Cuestiones relacionadas