android.media.Ringtone.play()在28次播放后停止工作

时间:2016-10-05 14:35:13

标签: android ringtone ringtonemanager

我的应用程序已开启数小时,并使用附加了前景通知的后台服务。每隔一段时间使用声音播放声音:

try {
    Ringtone r = RingtoneManager.getRingtone(context, uri);
    r.play();
} catch (Exception e) {
    e.printStackTrace();
}

声音正常,但一段时间后声音不再播放了。
没有错误,没有警告,没有崩溃。没声音。

我的用户也在抱怨,因此它看起来不像设备特定问题。

Android Docs没有提及此事。 谁知道为什么会这样?

1 个答案:

答案 0 :(得分:2)

不要在BroadcastReceiver中创建铃声或MediaPlayer!

问题在于铃声或MediaPlayer的背景。通过从广播接收器触发声音,每次播放声音时都会创建新的MediaPlayer或铃声。经过28次,声音不再播放了。

通过播放来自IntentSerice的声音,或重新使用MediaPlayer或铃声的静态实例,所有内容都按预期播放。