Hallo Leute,
kennt jemand diese Bibliothek? Sie erweitert Java um mp3-Fähigkeiten.
Auch hier brauche ich eine Hintergrundmusik, die auf Knopfdruck ein/ und ausgeschaltet werden kann.
Unterschied zur Sun-Bibliothek: die play-Loop scheint atomar/synchronized zu sein: wenn man sie normal anschubst, blockiert sie das Programm. Man muss sie also in einen Extra-Thread packen.
Und nun kommen die Probleme:
stoppen soll das Gedudel anhalten, cont an der Stelle wieder aufsetzen.
play:
Code:
// braucht javazoom.jl.player.Player, player ist Typ Player
// als Thread starten, mp3thread und player sind global zur class:
public void starten()
{ try
{ mp3thread=new Thread()
{ public void run()
{ try { player.play(); }
catch (Exception e) { System.out.println(e); }
}
};
mp3thread.start();
}
catch (Exception e) { System.out.println("mp3 nicht spielbar!"); }
}
Variante 1:
Code:
public void stoppen()
{ if (mp3thread!=null) mp3thread.suspend();
System.out.println("gestoppt");
}
public void conti()
{ if (mp3thread!=null) mp3thread.resume(); else starten();
System.out.println("weiter");
}
funktioniert wunderbar, ist aber deprecated.
Variante 2:
Code:
public void stoppen_neu()
{ if (mp3thread!=null)
{ try { posi=player.getPosition(); mp3thread.interrupt(); }
catch (Exception e) { }
System.out.println("Stop2"+posi);
}
}
public void conti_neu()
{ if (mp3thread!=null)
{ if (mp3thread.isInterrupted()) mp3thread.notify();
System.out.println("conti2");
}
else starten(); // generiert den Thread nochmal
}
funktioniert nur auf dem Papier, der mp3thread denkt gar nicht daran, zu stoppen!
Player selbst hat keine Funktion dafür.
Hier noch der Output der Funktionen nach start/pause/conti:
run:
conti2
Stop26797
conti2
BUILD SUCCESSFUL (total time: 21 seconds)
aber genudelt wird pausenlos. Natürlich ist der Thread auch nicht interrupted.
Wo muss ich da eingreifen so dass es wie im deprecated Beispiel funktioniert?
Gruß,
Ulrike
Zusatzfrage: das Ganze läuft unter Windows XP, ist die Bibliothek auch Linux-kompatibel?
Lesezeichen