在 android 中使用 RingtoneManager 重复铃声

Repeat Ringtone using RingtoneManager in android

目前我正在使用以下代码播放铃声:

Ringtone ringtone = RingtoneManager.getRingtone(this, Uri.parse(selectedRingtone));
ringtone.play();

如果我播放默认或系统铃声,它们会循环播放或重复播放。但如果我从我的画廊或媒体商店中选择任何其他声音,它只会播放一次。我浏览了一些链接,但我不想使用 MediaPlayer。我只需要使用 RingtoneManger.

你必须使用 MediaPlayer

Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
MediaPlayer player = MediaPlayer.create(this, notification);
player.setLooping(false);
player.start(); 

Ringtone and RingtoneManager

中没有任何与循环相关的方法

您正在播放的文件(默认)似乎包含有关文件本身循环的信息。如果你想循环其他文件,你必须确保这些文件也包含有关循环的信息。它将帮助您将目标归档 Ringtone.class。

否则,我建议您使用 MediaPlayer。即使没有有关文件中循环的信息,它也允许您循环播放声音(为什么您不想使用此 class?)

如果您的目标是 Api 28 或更大,现在 Ringtone

中有一个 setLooping 方法

https://developer.android.com/reference/android/media/Ringtone.html#setLooping(boolean)

所以在你原来的例子中,你只需添加

ringtone.setLooping(true);