您需要使用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 在您的情况下似乎不是很有帮助,但除了切换到不同的库之外,这是您能做的最好的事情。