即使铃声处于静音模式,也可以在我的应用程序中播放声音

时间:2014-09-11 06:50:26

标签: android android-mediaplayer ringtone android-audiomanager

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

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

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)。

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

任何帮助都将不胜感激。

提前致谢!

1 个答案:

答案 0 :(得分:0)

所以另一种解决方案是你可以在这里播放下面的铃声片段

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()铃声检查以停止播放。