如何使用JavaZOOM JLayer库播放/暂停mp3文件?

如何使用JavaZOOM JLayer库播放/暂停mp3文件?,java,Java,如何将播放/暂停按钮添加到以下代码 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

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

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.");
}

你需要使用类,而不是只使用<代码>播放器>代码>,因为更简单的一个不能真正开始在中间播放文件。 您需要添加一个函数并侦听

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和文件中的帧数之间的数字,然后调用

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

player.play(pausedOnFrame, Integer.MAX_VALUE);

也就是说,API在您的情况下似乎没有多大帮助,但除了切换到其他库之外,它是您所能做的最好的方法。

此线程应该会对您有所帮助,它涵盖了所有方面:使用MediaPlayer classI真的不知道为什么这个问题会被解决。我知道答案,我只是在打字。OP并没有使用通常的JMF,而是提出了一个非常简单的问题,这个问题的答案在第一眼看来可能并不明显。当然,这不是有史以来表现最好的问题,但对我来说很有意义。@Slanec如果你想输入所说的答案,它会被重新打开。@user241320 Integer.MAX_值技巧奏效了吗?AdvancedPlayer的play()方法在内部也使用Integer.MAX_值,所以应该没问题。我快速查看了实现。我也尝试过实现它,但在恢复时,我获得了对track…(跟踪)的随机点访问权,我检查了event.getFrame(),似乎传递的值与我们正在侦听的值不对应。。。