Как я могу проверить, когда музыка закончилась - PullRequest
0 голосов
/ 30 мая 2019

У меня есть JFrame с 2 кнопками: Включение и выключение

Моя проблема в том, что когда песня закончилась, я не могу проверить, закончилась ли она, и воспроизвести ее снова

Как я могу это проверить? огромное спасибо Ниже описан способ воспроизведения звука на Swing

class MP3 {
private Player player;
private String filename;

public MP3(String filename) {
    this.filename = filename;
}
public void stop() {
    if (player != null)
        player.close();
}
public void play() {

    try {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filename));
        player = new Player(bis);
    } catch (FileNotFoundException | JavaLayerException ex) {
        System.out.println(ex);
    }

    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                player.play();
            } catch (Exception ex) {
                System.out.println(ex);
            }
        }
    }).start();
}

}

И событие, когда я нажимаю кнопки

private void btnPlayActionPerformed(java.awt.event.ActionEvent evt) {                                        
    sound = new MP3("src/Sound/02 - Cold Pizza.mp3");
    sound.play();
    btnPlay.setVisible(false);
    btnStop.setVisible(true);
}                                       

private void btnStopActionPerformed(java.awt.event.ActionEvent evt) {                                        
    sound.stop();
    btnStop.setVisible(false);
    btnPlay.setVisible(true);
}  

sound является экземпляром класса MP3 в основном классе

1 Ответ

0 голосов
/ 04 июня 2019

Я так и сделал.Я сделал MP3-файл WAV-файл.Затем я сделал два объекта

AudioInputStream songReader;
Clip song;
try{
   songReader =
              AudioSystem.getAudioInputStream(
              getClass().getResource("wally.wav"));
   song = AudioSystem.getClip();
   song.open(songReader);
}catch (Exception e){
    System.out.println("won't work");
}
try{
   song.stop();
   song.setFramePosition(0);
}catch(Exception e){
    System.out.println("Error playing your music");
}
try{
   song.start();
   song.loop(song.LOOP_CONTINUOUSLY);
}catch(Exception e){
   System.out.println("Won't work");
}

Это заставляет его играть бесконечно, но если вам нужно, вы можете остановить его в любой момент с помощью song.stop ().Надеюсь, это сработает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...