![](/img/trans.png)
[英]Playlists for mp3 files in Java using BufferedReader & BufferedWriter
[英]Error with code for playlists in java mp3 player
我正在努力用Java為我的簡單mp3播放器創建播放列表,但是代碼不起作用。 這是播放列表部分:
FileFilter filter = new FileNameExtensionFilter("MP3 Files", "mp3", "mpeg3");
JFileChooser chooser = new JFileChooser("C:\\Users\\Junior\\Music");
chooser.addChoosableFileFilter(filter);
chooser.setMultiSelectionEnabled(true);
int returnVal = chooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION){
//File myFile=chooser.getSelectedFile();
File[] files=chooser.getSelectedFiles();
//String song=myFile+"";
for(int i=0; i<files.length;i++){
name=files[i].getName()+"";//getting song name for display purpose
try {
MC.Stop();//stopping if any file is playing
display.setText(name.substring(0,name.length()-4));//setting name songs in display (without .mp3)
MC.Play(files[i]+"");//from main class i'm calling play method
} catch (IOException e) {//i'm not really catching any exceptions so...
}//end of catch
}//end of for-loop
}//end of if
此代碼正在播放最后選擇的歌曲(即使我選擇了多個文件-也就是最后選擇的歌曲),但沒有前進到下一首歌曲。
我認為這可能有助於您閱讀評論。 這是我創建的播放列表類。 這是一個抽象類,因此您需要創建自己的擴展該類的類,並實現loadSongs
方法
public abstract class Playlist {
public static final int LOOP_NONE = 0;
public static final int LOOP_PLAYLIST = 1;
public static final int LOOP_SONG = 2;
private List<File> songs;
private int playlistPos;
private int loopMode;
private boolean isShuffled;
public Playlist() {
isShuffled = false;
loopMode = 0;
}
protected abstract List<File> loadPlaylist();
public void initPlaylist() {
songs = loadPlaylist();
}
public File getCurrentSong() {
return songs.get(playlistPos);
}
public int getPlaylistPosition() {
return playlistPos;
}
public void setPlaylistPosition(int playlistPos) {
this.playlistPos = playlistPos;
}
public int getPlaylistSize() {
return songs.size();
}
public boolean isFinalSong() {
return playlistPos == songs.size() - 1;
}
public boolean isShuffled() {
return isShuffled;
}
public int getLoopMode() {
return loopMode;
}
public void toggleShuffle() {
setShuffle(!isShuffled);
}
public void toggleLoop() {
loopMode = (loopMode + 1) % 3;
}
public void skipForward() {
playlistPos = (playlistPos + 1) % songs.size();
// Re-shuffle songs each time the playlist loops
if (playlistPos == 0 && isShuffled) {
shuffle();
}
}
public void skipBack() {
playlistPos = playlistPos == 0 ? songs.size() - 1 : playlistPos - 1;
}
public void setLoop(int loopMode) {
this.loopMode = loopMode;
}
public void setShuffle(boolean shuffle) {
this.isShuffled = shuffle;
if (isShuffled) {
shuffle();
}
else {
unshuffle();
}
}
protected void shuffle() {
Collections.shuffle(songs.subList(playlistPos + 1, songs.size()));
}
protected void unshuffle() {
initPlaylist();
}
}
因此,您將創建一個這樣的子類:
public TestPlaylist extends Playlist {
@Override
protected List<File> loadPlaylist() {
// Show your file chooser, and return the selected files
// as a list.
}
}
並使用它,您將編寫:
Playlist playlist = new TestPlaylist();
playlist.initPlaylist();
// Do what you want with it, for example:
playlist.setShuffle(true);
MC.play(playlist.getCurrentSong().getAbsolutePath());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.