JLayer - как сделать пауза/продолжить?
Я хочу сделать 2 кнопки. Одна будет кнопка play, а другая pause. У меня уже есть код, но он работает не так как нужно. Если остановить проигрывание и продолжить, то музыка продолжит играть но в другом месте.
Код:
JFrame frmAdvancedaudioplayer = new JFrame();
frmAdvancedaudioplayer.setResizable(false);
frmAdvancedaudioplayer.setTitle("AdvancedAudioPlayer 0.1(Alpha)");
frmAdvancedaudioplayer.setSize(572, 183);
frmAdvancedaudioplayer.setLocationRelativeTo(null);
frmAdvancedaudioplayer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmAdvancedaudioplayer.getContentPane().setLayout(null);
JButton btnNewButton = new JButton("\u25B6");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
play();
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (JavaLayerException e1) {
// TODO Auto-generated catch block
JOptionPane.showMessageDialog(null, "Unable to play file");
e1.printStackTrace();
}
}
});
btnNewButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
btnNewButton.setToolTipText("Play");
btnNewButton.setBounds(153, 0, 64, 26);
frmAdvancedaudioplayer.add(btnNewButton);
JButton btnNewButton_1 = new JButton("\u275A\u275A");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
pause();
}
});
btnNewButton_1.setCursor(new Cursor(Cursor.HAND_CURSOR));
btnNewButton_1.setToolTipText("Pause");
btnNewButton_1.setBounds(220, 0, 64, 26);
frmAdvancedaudioplayer.add(btnNewButton_1);
static void play() throws FileNotFoundException, JavaLayerException {
SwingWorker<Void, Void> sworker = new SwingWorker<Void, Void>(){
@Override
protected Void doInBackground() throws Exception {
if(file != null) {
fis = new FileInputStream(file);
playerMP3 = new AdvancedPlayer(fis);
playerMP3.play(pausedOnFrame, Integer.MAX_VALUE);
}else if(file == null) {
openfile();
fis = new FileInputStream(file);
playerMP3 = new AdvancedPlayer(fis);
playerMP3.play();
}
return null;
}
};
sworker.execute();
}
static void pause() {
playerMP3.setPlayBackListener(new PlaybackListener() {
@Override
public void playbackFinished(PlaybackEvent event) {
pausedOnFrame = event.getFrame();
}
});
playerMP3.stop();
}