如何检测声音文件何时完成?

时间:2011-09-09 22:13:04

标签: android while-loop

我正在广播接收器活动中使用此代码播放声音文件:

notification.sound = Uri.parse("android.resource://emad.app/raw/seven_chimes");

我想检测此文件何时播放完毕。

我尝试了这样的循环,但我认为这对媒体播放器只有好处,因为即使我确定声音文件仍在播放,它总是=假:

/*
 * Stay here until the chime sound is finished.
 */
   while (manager.isMusicActive()){
   }

你能告诉我应该使用什么而不是manager.isMusicActive()吗?

3 个答案:

答案 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是布尔值,如果有人感到困惑,我将进一步说明。希望它将来对其他人有帮助。编码愉快!