Betriebssystem ermitteln

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi,

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 ?
 
Code:
System.getProperty ("os.name")

Aber poste lieber mal die Exception, ich denke das sollte sich eigentlich beheben lassen.
 
Hi,

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).

Mit der javax.sound.* API kenn ich mich net aus
 
Ich werde es mal mit deinem Tipp versuchen, eine Frage hätte ich noch !

private boolean checkUpOS(){
return System.getProperties("os.name".toLowerCase().contains("win"));
}

Wie kann ich das machen ???:L , ein return klappt icht so ganz, da der Rückgabewert vom Typ Properties ist ?
 
private boolean checkUpOS(){
return System.getProperties("os.name".toLowerCase().contains("win"));
}

Du prüfst gerade, ob der String "os.name" das Wort "win" enthält und das Ergebnis dieser Operation ist dein Input für System.getProperties.

Richtig wäre:
Den OS-Name mit System.getProperty (nicht ies) zur ermitteln, und diesen per toLowerCase und contains zu prüfen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben