Так что я пытаюсь создать виджет музыкального плеера, но имею проблемы с воспроизведением нескольких выбранных песен по одному. Я надеялся, что усиленный цикл будет перебирать все выбранные файлы и воспроизводить их по одному, но одновременно воспроизводит все песни. Есть ли лучший способ сделать эту работу?Как я могу получить доступ к одному файлу и манипулировать им одновременно в методе getSelectedFiles()?
FileInputStream FIS;
BufferedInputStream BIS;
public Player player;
public long pauseLocation;
public long songTotalLength;
public boolean playState = false;
public String fileLocation;
public boolean playState(){
return playState;
}
public void setPlayState(boolean value){
this.playState = value;
}
public void select() {
FileNameExtensionFilter filter = new FileNameExtensionFilter("MP3 Files", "mp3", "mpeg3");
JFileChooser chooser = new JFileChooser("D:\\MAIN_DIV\\Music");
chooser.addChoosableFileFilter(filter);
chooser.setMultiSelectionEnabled(true);
int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
stop();
if (playState == false) {
File[] selectedFile = chooser.getSelectedFiles();
for (File x : selectedFile) {
String song = x + "";
String name = chooser.getSelectedFile().getName();
display.setText(name);
play(song);
}
}
}
}
public void play(String path){
playState();
try {
FIS = new FileInputStream(path);
BIS = new BufferedInputStream(FIS);
player = new Player(BIS);
songTotalLength = FIS.available();
fileLocation = path + "";
//System.out.println(path);
} catch (FileNotFoundException | JavaLayerException ex) {
} catch (IOException ex) {
}
new Thread(){
@Override
public void run(){
if(playState == false){
try {
player.play(); //play from start or resume
if (player.isComplete() && MusicPlayer.count==1){
play(fileLocation);
}
if (player.isComplete()){
MusicPlayer.display.setText("");
}
} catch (JavaLayerException ex) {
}
}
}
}.start();
setPlayState(false);
}
Ничего не существует для петли как таковой. Проблема заключается в «игре». Из вашего вопроса неясно, что делает игра, но она, вероятно, создает фоновый процесс для воспроизведения песни и возвращается во время воспроизведения песни, позволяя петле продолжать собирать новые песни. Если вы покажете исходный код 'play', мы можем вам помочь. Дополнительно: что такое плейлист? Не удалось ли запустить плейлист после цикла for? –
Хорошо. Итак, это исходный код для игры. Я удалил класс списка воспроизведения из кода (все еще работаю над этим). Может быть, теперь я могу получить дополнительную помощь. –
Я надеялся, что цикл продолжится только после того, как метод воспроизведения был выполнен с песней. –