Подтвердить что ты не робот

Как проверить, отключен ли телефон, вибрировать или громко в андроиде

Это мой код для отключения/включения телефона. Но я хотел бы проверить, не отключен ли телефон при отключении звука, а если нет, я отключу его. Если он вибрирует, тогда я сделаю его нормальным.

Могу ли я проверить это как-то?

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

}
4b9b3361

Ответ 1

попробуйте следующее:

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

Ответ 2

В моем случае я узнал, что даже если мои настройки телефона будут вибрировать, он вернет 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;
}