2012-08-16 17 views
26

Questo è il mio codice per disattivare/riattivare il telefono. Ma vorrei controllare se il telefono è alias su muto e se non lo è, lo silenziamo. Se è in vibrazione, lo renderò normale.Come verificare se il telefono è disattivato, vibrato o rumoroso in Android

Posso controllare questo stato in qualche modo?

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

} 

risposta

47

provare questo:

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

grazie. è stato veloce :) – senzacionale

+0

senzacionale, benvenuto :) –

5

Nel mio caso ho scoperto che anche se le mie impostazioni del telefono è a vibrare, si tornerà AudioManager.RINGER_MODE_SILENT quando è il silenzio, così ho trovato un modo per verificare la modalità di vibrazione se poi:

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

E per ottenere il quadro completo, per scoprire se la suoneria è acceso:

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