我正在编写一个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。
谁能指出我正确的方向?
自己回答了这个问题,多花点时间深入阅读文档。
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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)