Musik Playlist

Anrutas

Neues Mitglied
Hallo !
Ich möchte eine Musik Playlist mit Java Programmieren.
Ich bin bis hier hin gekommen und möchte jetzt das die Playlist erstellt wird und dann abgespielt durch die Startklasse.
Kann mir wer weiterhelfen?

Java:
import java.util.ArrayList;

public class Playlist {

MusikPlayer mp;
ArrayList songs;

public Playlist(){
    mp = new MusikPlayer();
    songs = new ArrayList<>();
}

// ArrayList füllen:
public void erstellePlaylist(){
    songs.add("Music/alligatoah_-_willst_du-Charts.to.mp3");
    songs.add("Music/JAY Z - Numb  Encore.mp3");
    songs.add("Music/Flo Rida – My house (Official Video).mp3");
}

// Alle Songs der Liste kurz anspielen
public void alleSongsPreview(){
    for(String song : songs){
       mp.dateiAnspielen(song);
       }
}

// Song gezielt nach Index-Nummer abspielen
public void spieleSongNummer(int index){
    Object dateiname = songs.get(index);
    mp.starteAbspielen(dateiname);
}

// Dateinamen aller Songs durchsuchen und ersten gefundenen Song abspielen
public void spieleSongName(String search){
    String suchwort = search.toLowerCase();
    boolean gefunden = false;
    int found =-1;

    for(int i = 0; i < songs.size() && !gefunden; i++){
        if(((String) songs.get(i)).toLowerCase().contains(suchwort)){
           gefunden = true;
           }
     }

     if(gefunden){
          spieleSongNummer(found);
          }
      else{
           System.out.println("Kein Song gefunden, der " + search + " beinhaltet.");
           }
    }

}



[CODE lang="java" title="Musikplayer"]

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.IOException;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.AudioDevice;
import javazoom.jl.player.FactoryRegistry;
import javazoom.jl.player.advanced.AdvancedPlayer;


public class MusikPlayer
{

private AdvancedPlayer player;

public MusikPlayer()
{
player = null;
}


public void dateiAnspielen(String dateiname)
{
try {
playerVorbereiten(dateiname);
try {
player.play(1500);
} catch (JavaLayerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


finally {
killPlayer();
}
}


public void starteAbspielen(final String dateiname)
{
try {
playerVorbereiten(dateiname);
Thread playerThread = new Thread() {
public void run()
{
try {
player.play(5000);
}
catch(JavaLayerException e) {
meldeProblem(dateiname);
}
finally {
killPlayer();
}
}
};
playerThread.start();
}
catch (Exception ex) {
meldeProblem(dateiname);
}
}

public void stop()
{
killPlayer();
}


private void playerVorbereiten(String dateiname)
{
try {
InputStream is = gibEingabestream(dateiname);
player = new AdvancedPlayer(is, erzeugeAudiogeraet());
}
catch (IOException e) {
meldeProblem(dateiname);
killPlayer();
}
catch(JavaLayerException e) {
meldeProblem(dateiname);
killPlayer();
}
}


private InputStream gibEingabestream(String dateiname)
throws IOException
{
return new BufferedInputStream(
new FileInputStream(dateiname));
}


private AudioDevice erzeugeAudiogeraet()
throws JavaLayerException
{
return FactoryRegistry.systemRegistry().createAudioDevice();
}


private void killPlayer()
{
synchronized(this) {
if(player != null) {
player.stop();
player = null;
}
}
}


private void meldeProblem(String dateiname)
{
System.out.println("Es gab ein Problem beim Abspielen von: " + dateiname);
}


public void starteAbspielen(Object dateiname) {
// TODO Auto-generated method stub

}

}[/CODE]


[CODE lang="java" title="Startklasse"]public class Startklasse {

public static void main(String args[]){
Playlist playlist = new Playlist();
playlist.erstellePlaylist();
//playlist.alleSongsPreview();
//playlist.spieleSongNummer(1);
playlist.spieleSongName("My house");
}
}[/CODE]
 

Neumi5694

Top Contributor
Im Grunde musst du nur die Pfade aller in Frage kommenden Dateien in eine .m3u-Textdatei schreiben (verwende UTF-8 als Codierung), das ist ein Standardformat für Playlists.
Danach kannst du mit deinem dieser beiden Befehle deine m3u mit dem Defaultplayer öffnen lassen:
Java:
Desktop.getDesktop().open(m3ufile);
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler file:" + m3ufilename);
Der zweite Befehlt klappt nur für Windows.
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben