2015-03-11 1 views
4

Согласно document,Почему AudioManager.getRingerMode() возвращает только 3 режима?

getRingerMode() возвращает текущий режим сигнала вызова, один из RINGER_MODE_NORMAL, RINGER_MODE_SILENT или RINGER_MODE_VIBRATE.

Но должно быть 4 режима, не так ли?

Звук ВКЛ, Вибрация ВЫКЛ: Как я могу узнать, что это настройка?
Sound ON, вибросигнал: RINGER_MODE_NORMAL
Sound OFF, вибрирует OFF: RINGER_MODE_SILENT
Sound OFF, вибросигнал: RINGER_MODE_VIBRATE

Пожалуйста, помогите мне. Спасибо.

enter image description here

ответ

2

Вы можете установить метод звонка в RINGER_MODER_NORMAL (звук и вибрацию на) и отдельно установить настройки для VIBRATE_SETTING_OFF вибрировать (отключить вибросигнал полностью) ИЛИ VIBRATE_SETTING_ONLY_SILENT. (Вибро, только если режим молчит), как ниже:

Чтобы отключить вибрации рингтон:

setVibrateSetting (AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF) 

Чтобы отключить уведомления вибраций:

setVibrateSetting (AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF) 

UPDATE: Для того, чтобы получить статус текущего режима аудио на

if(getRingerMode()==AudioManager.RINGER_MODE_NORMAL) 
    { if((getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER))==AudioManager.AudioManager.VIBRATE_SETTING_OFF){  
     Log.d("Ringer Mode is":"ring with no vibraion") 
     } 
    else{ 
    Log.d("Ringer Mode is":"ring with vibraion") 
    } 

    else if(getRingerMode()==AudioManager.RINGER_MODE_SILENT){ 

if((getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER))==AudioManager.AudioManager.VIBRATE_SETTING_OFF){  
     Log.d("Ringer Mode is":"Silent with no vibraion") 
     } 
    else{ 
    Log.d("Ringer Mode is":"Silent with vibraion") 
    } 
    } 
else{ 
Log.d("Ringer Mode is":"Silent with vibraion") 

} 

В Docs сказано, что RINGER_MODE_SILENT режим отменит установку вибрировать.

PS: Согласно DOC прибудете/setVibrateSetting() ** метод ** осуждается уровня API 16. Примечание: Я нету Испытано код.

+0

Я не собираюсь, чтобы выключить его. Просто нужно знать настройки системы. – iForests

+0

Вы можете использовать комбинацию getRingerMode() и getVirateSetting(), чтобы получить желаемый эффект. –

+1

Но getVirateSetting() устарел ... »Этот метод был устаревшим на уровне API 16. Приложения должны поддерживать свою собственную вибрирующую политику, основанную на текущем режиме звонка, который может быть запрошен с помощью getRingerMode()." – iForests

0
if (Settings.System.getInt(context.getContentResolver(), "vibrate_when_ringing", 0) == 1) 
{  
    return true; 
} 
else if (Settings.System.getInt(context.getContentResolver(), "vibrate_when_ringing", 0) == 0) 
{ 
    return false; 
} 

меня попробовать, полезно

Смежные вопросы