【问题标题】:Play sounds in my application even though ringer is in silent mode即使铃声处于静音模式,也可以在我的应用程序中播放声音
【发布时间】:2014-09-11 06:50:25
【问题描述】:

我有一个应用程序,我需要阻止铃声和通知声音/振动,并在手机处于来电状态时播放自定义声音。

我尝试这样做的方法是在我的应用程序启动时将铃声模式设置为静音模式:

audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT)

它确实使铃声和通知声音静音。

但是,当我在手机处于来电状态时尝试播放自定义声音时,使用音乐流:

MediaPlayer mp= MediaPlayer.create(context, R.raw.my_ringtone);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setLooping(false);
mp.start();

它不适用于某些设备(其中之一是 LG G2)。

我确信有办法解决这个问题,因为当铃声/通知处于振动模式时,其他应用程序/游戏确实会播放声音。

任何帮助将不胜感激。

提前致谢!

【问题讨论】:

  • audioManager.setStreamVolume 怎么样?不行吗?

标签: android android-mediaplayer ringtone android-audiomanager


【解决方案1】:

所以另一个解决方案是你可以在这里播放铃声 sn-p 下面给出

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);
ringtone = RingtoneManager.getRingtone(getApplicationContext(), Uri.parse(ringTonePath));
if(ringtone!=null){
    ringtone.setStreamType(AudioManager.STREAM_ALARM);
    ringtone.play();
    isRinging = true;
}

isRinging 设置为标志,如果您想以编程方式停止播放,或者您可以检查铃声的isPlaying() 以停止播放。

【讨论】:

  • 但是行“audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);”会取消静音模式,那有什么意义呢?还是我错过了什么?
  • 嘿,您尝试过我发布的答案吗?如果它适合你,请接受它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多