检测铃声是否播放完毕

Dr *_*rge 5 java android ringtone

我想检测铃声何时播放完毕,但 AndroidRingtone类没有OnCompletionListener像该类MediaPlayer那样的 。具体来说,在实践中,我按以下方式播放铃声:

Ringtone r = RingtoneManager.getRingtone(
                getApplicationContext(), soundUri);
r.play();
Run Code Online (Sandbox Code Playgroud)

我想捕捉铃声播放器的完成事件(如果它甚至启动了这个事件......),就像人们可以在课堂上做的那样MediaPlayer。我知道该类Ringtone提供了该方法isPaying,但我不喜欢定期检查它直到返回 false 的解决方案...另一方面,通过该类MediaPlayer,可以检测玩家是否已完成播放某些内容,通过设置回调以更干净的方式OnCompletionListener

final MediaPlayer player = new MediaPlayer();
player.setDataSource(filepath);
player.setOnCompletionListener(new OnCompletionListener() {
     @Override
     public void onCompletion(MediaPlayer mp) {
        player.release();
     }
});
player.prepare();
player.start();
Run Code Online (Sandbox Code Playgroud)

那么,如何使用铃声管理器执行相同的操作呢?有可能吗?Ringtone.isPlaying或者定期检查, 直到返回 false 的解决方案是最好的解决方案吗???