

JavaFX Media Player
Dobrý den,
Pomocí tohoto kódu přehrávám audio
import java.io.File;
import javafx.embed.swing.JFXPanel;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
public class Player {
public static void main(String[] args) {
play();
}
private static void play() {
new JFXPanel();
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new FileNameExtensionFilter("Cat", "mp3", "wav"));
fileChooser.setControlButtonsAreShown(false);
fileChooser.showOpenDialog(null);
String musicFile = fileChooser.getSelectedFile().getAbsolutePath();
Media hit = new Media(new File(musicFile).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(hit);
mediaPlayer.setOnEndOfMedia(() -> play());
mediaPlayer.play();
}
}
Funguje bez problému, vyberu souboru, spustí se a až dohraje, vyskočí znova okno pro výběr souboru.
Ovšem potřeboval bych ještě jednu věc.
Když vyberu soubor, tak si vezme složku, ve které je soubor a načte všechny soubory s danou příponou do pole.
Tyto soubory bude postupně přehrávat a až dojde na konec, tak ti opět vyskočí okno s výběrem souboru.
Předem děkuji za radu.
Najprve by se to chtělo asi trochu zamyslet nad tím, jak bude aplikace navržena.
Jestli zůstane jako cmd aplikace, nebo to bude klasická "Windowsí".
Když zůstane jako cmd, je možné se vyhnout eventě playeru.
Např. bylo by to možné řešit tak, že zapíšu nalezené soubory i s cestami do souboru a pak je pouštím jako argument k této aplikaci.
Tedy namísto prostého:
Něco jako
V případě bytelnější, oknové aplikace něco jako toto:
Zkusil jsem si to zkompilovat, ale projevuje se mi tam chyba přehravače (nevolá se eventa).
Bohužel nemám tolik času, abych zjišťoval, čím to je.
Takže buď můžeš vyzkoušet něco z toho, co píšu, a nebo se obrátit na kluky z poradny na profesionální, placené řešení.
Díky, už jsem na to došel
import java.io.File;
import javafx.embed.swing.JFXPanel;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
public class Player {
private static int pocet;
private static Media hit;
private static MediaPlayer mediaPlayer;
private static File[] listFiles;
public static void player() {
pocet = 0;
new JFXPanel();
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new FileNameExtensionFilter("Music", "mp3", "wav"));
fileChooser.setControlButtonsAreShown(false);
fileChooser.setCurrentDirectory(new File("C:\\"));
fileChooser.showOpenDialog(null);
String musicFile = fileChooser.getSelectedFile().getParent();
File dir = new File(musicFile);
listFiles = dir.listFiles((File dir1, String name) -> {
String pripona = name.toLowerCase().substring(name.length() - 3);
return pripona.equals("mp3") || pripona.equals("wav");
});
play();
}
private static void play() {
pocet += 1;
if (pocet < listFiles.length + 1) {
hit = new Media(new File(listFiles[pocet - 1].toString()).toURI().toString());
mediaPlayer = new MediaPlayer(hit);
mediaPlayer.setOnEndOfMedia(() -> play());
mediaPlayer.play();
} else {
player();
}
}
}