2013-03-22 91 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

你所誤解是靜音模式意味着...無語。如在,沒有聲音。你認識電影院裏的那些人,我們終於教導瞭如何讓他們的手機振動? – 2013-03-22 19:55:48

+0

@RobertHarvey我知道靜音功能是如何工作的......當我的鬧鈴響起時,我想重寫靜音模式。但它不適用於在此[問題](http://stackoverflow.com/a/9750343/2198661)的答案中找到的代碼在我用於運行該應用程序的手機上無效。 – frmi 2013-03-22 21:41:15

+0

對不起。我沒有意識到你只是自己寫這個應用程序。 – 2013-03-22 21:42:58

回答

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 2014-10-28 14:12:45