2013-03-22 3 views
3

Я пишу приложение для Android, чтобы просто играть в будильник без матраса, в каком режиме телефон, даже если он находится в бесшумном режиме.Неисправности воспроизводят звук в бесшумном режиме на Android

Я нашел это question и использовал код ответа, чтобы переопределить текущее состояние тома. Мой код выглядит следующим образом:

Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); 
    if (alert == null){ 
     // alert is null, using backup 
     alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     if (alert == null){ 
      // alert backup is null, using 2nd backup 
      alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); 
    } 
} 
ringtone = RingtoneManager.getRingtone(getApplicationContext(), alert); 

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
int volume = audioManager.getStreamVolume(AudioManager.STREAM_ALARM); 
if(volume == 0){ 
    volume = audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM); 
} 
audioManager.setStreamVolume(AudioManager.STREAM_ALARM, volume,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE); 

if(ringtone != null){ 
    ringtone.play(); 
} 

отладки, кажется, что мой старт проблемы в этой строке:

int volume = audioManager.getStreamVolume(AudioManager.STREAM_ALARM); 

, так как мой телефон, кажется, вернет 4, когда он находится в беззвучном режиме и 7, когда он при максимальном объеме. Я не знаю, так ли это, что он должен возвращать. Я просто предположил, что если телефон находится в бесшумном режиме, он вернется 0.

Любой, кто может указать мне в правильном направлении?

+0

Что вы недопонимание, что бесшумный режим означает, что ... молчит. Как и в, нет звука. Вы знаете этих людей в кинотеатре, что мы, наконец, учим, как их телефоны вибрировать? –

+0

@RobertHarvey Я знаю, как работает бесшумная функция ... Я хочу переопределить бесшумный режим, когда мой будильник погаснет. но он не работает с кодом, найденным в ответе на этот [вопрос] (http://stackoverflow.com/a/9750343/2198661), не работает на телефоне, который я использую для запуска приложения. – frmi

+0

Прошу прощения. Я не понимал, что вы просто пишете это приложение для себя. –

ответ

5

Ответ на вопрос сам, потратьте больше времени на чтение документации в глубину.

Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); 
    if (alert == null){ 
     // alert is null, using backup 
     alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     if (alert == null){ 
      // alert backup is null, using 2nd backup 
      alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); 
    } 
} 
ringtone = RingtoneManager.getRingtone(getApplicationContext(), alert); 

после установки мелодии я должен был установить тип потока для рингтона:

ringtone.setStreamType(AudioManager.STREAM_ALARM); 
+1

, похоже, не работает в nexus 5 4.4.4 :( – amIT