我正在广播接收器活动中使用此代码播放声音文件:
notification.sound = Uri.parse("android.resource://emad.app/raw/seven_chimes");
我想检测此文件何时播放完毕。
我尝试了这样的循环,但我认为这对媒体播放器只有好处,因为即使我确定声音文件仍在播放,它总是=假:
/*
* Stay here until the chime sound is finished.
*/
while (manager.isMusicActive()){
}
你能告诉我应该使用什么而不是manager.isMusicActive()
吗?
答案 0 :(得分:102)
您可以使用MediaPlayer类并添加一个完成侦听器,以便在声音播放完毕后激活
MediaPlayer mp = MediaPlayer.create(this,Uri.parse("android.resource://emad.app/raw/seven_chimes"));
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
performOnEnd();
}
});
mp.start();
答案 1 :(得分:1)
尝试使用服务播放音乐.. 播放一次后,停止服务,然后在onDestroy()服务方法上添加程序。 希望它有所帮助:)
答案 2 :(得分:0)
不适用于广播接收器,但这对我当前使用Kotlin跟踪音频文件何时播放完的项目有效。
playButton.setOnClickListener {
if (isPlaying) {
pauseSound()
}else {
playSound()
}
mediaPlayer.setOnCompletionListener {
playButton.text = "Play"
isPlaying = false
}
}
isPlaying是布尔值,如果有人感到困惑,我将进一步说明。希望它将来对其他人有帮助。编码愉快!