Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich hab ein Programm welches Musik abspielt, unter Windows läuft es super und Linux bekomme ich manchmal eine Exception, daher habe ich mir gedacht, dass ich die Musik unter Linux einfach nicht mehr abspiele :roll: , die Frage ist nun, wie kann ich mit Java ermitteln, ob es ein Windows oder Linux Betriebssystem ist ?
ich hätte dir gerne die Exception geschrieben, aber ich bekomme die auf meinem Notebook/PC gar nicht bzw, habe diese erst 1.mal bekommen, auf den Rechner der UNI öfters, nur ich muss das Programm beim Prof abgeben und da will ich auf nummer sicher gehen, dass es läuft, aber den Code kannst du haben.
Ein Thread der Musik abspielen soll
Code:
import java.io.InputStream;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.Sequencer;
public class MdiPlayerThread extends Thread{
private Sequencer sequencer = null;
// Konstruktor dieser Klasse
public MdiPlayerThread(){
this.startWelcomeMidi();
this.startMidiPlayer();
}
// Erstelle einen neuen Thread und starten diesen
public void startMidiPlayer(){
Thread midi_thread = new Thread(this);
midi_thread.start();
}
public void stopMusik(){
sequencer.stop();
}
public void startMusik(){
sequencer.start();
}
// Methode zum initialisieren und starten des Liedes
// welches läuft, bei der Schulansicht
public void startWelcomeMidi(){
try{
sequencer = MidiSystem.getSequencer();
sequencer.open();
InputStream midiFile = MdiPlayerThread.class.getResourceAsStream( "sound/schoolmidi.mid" );
sequencer.setSequence( MidiSystem.getSequence(midiFile) );
sequencer.start();
}catch(Exception ex){
}
}
// Methode zum starten des Threads
public void run(){
while(true){
try{
Thread.sleep(50);
}catch(Exception ex) {}
}
}
}
Das ist es, ich würde dir gerne das ganze Programm posten, aber sind mehr als ca. 3.000 Zeilen Code. Der Sinn ist aber, ich hab ein Hauptmenü wo diese Musik abgespielt werden soll, verlasse ich das Hauptmenü um ein anderes Programm zu starten, so wird die Musik in der Methode stopMusik() angehalten, komme ich wieder in das Hauptmenü so soll es mit der Methode startMusik() wieder gestartet werden, die Methode stopMusik() , spinnt unter Linux ab und zu. Sollte ich den Exception wieder bekommen, so werde ich diese posten. Unter Windows gibt es keien Probleme.
PS : Wenn ich schon dabei bin, wie kann ich prüfen ob das Lied zu ende ist und es von vorne starten !
Also einfach so ne kleine Datei loopen, das würde ich an deiner Stelle mit nem java.applet.AudioClip machen (dafür brauchst du kein Applet, das kriegst du auch über die statische Methode Applet.newAudioClip).