8

如何将播放/暂停按钮添加到以下代码?

import javazoom.jl.player.Player;

try{
    FileInputStream fis = new FileInputStream("mysong.mp3");
    Player playMP3 = new Player(fis);
    playMP3.play();
}
catch(Exception exc){
    exc.printStackTrace();
    System.out.println("Failed to play the file.");
}
4

1 回答 1

10

您需要使用AdvancedPlayer该类而不是 just Player,因为较简单的类无法真正开始播放中间的文件。

您需要添加一个PlaybackListener并监听该stop()方法。然后,您可以简单地从您离开的那一刻重新开始。

private int pausedOnFrame = 0;

AdvancedPlayer player = new AdvancedPlayer(fis);
player.setPlayBackListener(new PlaybackListener() {
    @Override
    public void playbackFinished(PlaybackEvent event) {
        pausedOnFrame = event.getFrame();
    }
});
player.play();
// or player.play(pausedOnFrame, Integer.MAX_VALUE);

这将记住帧播放已暂停(如果已暂停)。

现在,当暂停后再次按下 Play 时,您将检查是否pausedOnFrame是介于 0 和文件中帧数之间的数字并调用play(int begin, int end).

请注意,在执行此操作之前,您应该知道文件中的帧数。如果你不这样做,你可以尝试通过这个技巧播放所有帧:

player.play(pausedOnFrame, Integer.MAX_VALUE);

也就是说,API 在您的情况下似乎不是很有帮助,但除了切换到不同的库之外,这是您能做的最好的事情。

于 2013-06-03T09:17:47.597 回答