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