Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 7. Auflage |
<< | < | > | >> | API | Kapitel 40 - Applets I |
Mit der im JDK enthaltenen Sound-Engine kann Musik wiedergegeben, aufgenommen und bearbeitet werden und es ist möglich, Zusatzgeräte wie Mixer, Synthesizer oder andere Audiogeräte anzusteuern.
Die Ausgabe von Sound ist denkbar einfach und kann auf zwei unterschiedliche Arten erfolgen. Zum einen stellt die Klasse Applet die Methode play zur Verfügung, mit der eine Sounddatei geladen und abgespielt werden kann:
public void play(URL url) public void play(URL url, String name) |
java.applet.Applet |
Hierbei kann entweder der URL einer Sounddatei (siehe nächster Abschnitt) oder die Kombination von Verzeichnis-URL und Dateinamen angegeben werden. Üblicherweise wird zur Übergabe des Verzeichnis-URL eine der Applet-Methoden getCodeBase oder getDocumentBase verwendet. Diese liefern einen URL des Verzeichnisses, aus dem das Applet gestartet wurde bzw. in dem die aktuelle HTML-Seite liegt:
public URL getCodeBase() public URL getDocumentBase() |
java.applet.Applet |
Der Nachteil dieser Vorgehensweise ist, dass die Sounddatei bei jedem Aufruf neu geladen werden muss. In der zweiten Variante wird zunächst durch einen Aufruf von getAudioClip ein Objekt der Klasse AudioClip beschafft, das dann beliebig oft abgespielt werden kann:
public AudioClip getAudioClip(URL url, String name) |
java.applet.Applet |
AudioClip stellt die drei Methoden play, loop und stop zur Verfügung:
public void play() public void loop() public void stop() |
java.applet.AudioClip |
play startet die zuvor geladene Sounddatei und spielt sie genau einmal ab. loop startet sie ebenfalls, spielt den Sound in einer Endlosschleife aber immer wieder ab. Durch Aufruf von stop kann diese Schleife beendet werden. Es ist auch möglich, mehr als einen Sound gleichzeitig abzuspielen. So kann beispielsweise eine Hintergrundmelodie in einer Schleife immer wieder abgespielt werden, ohne dass die Ausgabe von zusätzlichen Vordergrund-Sounds beeinträchtigt würde.
Das folgende Beispiel ist eine neue Variante des »Hello, World«-Programms. Anstatt der textuellen Ausgabe stellt das Applet zwei Buttons zur Verfügung, mit denen die Worte »Hello« und »World« abgespielt werden können:
Abbildung 40.3: Das sprechende »Hello, World«-Programm
Hier ist der Sourcecode des Programms:
001 /* HWApplet.java */ 002 003 import java.awt.*; 004 import java.awt.event.*; 005 import java.applet.*; 006 007 public class HWApplet 008 extends Applet 009 implements ActionListener 010 { 011 Button hello; 012 Button world; 013 AudioClip helloClip; 014 AudioClip worldClip; 015 016 public void init() 017 { 018 super.init(); 019 setLayout(new FlowLayout()); 020 hello = new Button("Hello"); 021 hello.addActionListener(this); 022 add(hello); 023 world = new Button("World"); 024 world.addActionListener(this); 025 add(world); 026 helloClip = getAudioClip(getCodeBase(),"hello.au"); 027 worldClip = getAudioClip(getCodeBase(),"world.au"); 028 } 029 030 public void actionPerformed(ActionEvent event) 031 { 032 String cmd = event.getActionCommand(); 033 if (cmd.equals("Hello")) { 034 helloClip.play(); 035 } else if (cmd.equals("World")) { 036 worldClip.play(); 037 } 038 } 039 } |
HWApplet.java |
Eine HTML-Datei HWApplet.html zum Aufruf dieses Applets findet sich in Abschnitt 53.6.5. Sie wird dort als Beispiel für die Einbindung von Applets in jar-Dateien verwendet. |
|
Seit dem JDK 1.2 kann nicht nur in Applets, sondern auch in Applikationen Sound ausgegeben werden. Dazu bietet die Klasse Applet eine statische Methode newAudioClip:
public static AudioClip newAudioClip(URL url) |
Da es sich um eine Klassenmethode handelt, kann sie auch außerhalb eines Applets aufgerufen werden. Das folgende Beispiel zeigt ein einfaches Programm, das in der Kommandozeile den URL einer Sounddatei erwartet und diese dann maximal 10 Sekunden lang abspielt:
001 /* PlaySound.java */ 002 003 import java.net.*; 004 import java.applet.*; 005 006 public class PlaySound 007 { 008 public static void main(String[] args) 009 { 010 if (args.length >= 1) { 011 try { 012 URL url = new URL(args[0]); 013 AudioClip clip = Applet.newAudioClip(url); 014 clip.play(); 015 try { 016 Thread.sleep(10000); 017 } catch (InterruptedException e) { 018 } 019 System.exit(0); 020 } catch (MalformedURLException e) { 021 System.out.println(e.toString()); 022 } 023 } 024 } 025 } |
PlaySound.java |
Das Programm kann beispielsweise dazu verwendet werden, einige der
Standard-Sounddateien unter Windows abzuspielen:
java PlaySound file:///c:/windows\media\Startup.wav
java PlaySound file:///c:/windows\media\town.mid
Hierbei werden die gängigsten Audioformate unterstützt; die Dokumentation nennt insbesondere MIDI, WAVE, RMF, AIFF und AU.
Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 7. Auflage, Addison Wesley, Version 7.0 |
<< | < | > | >> | API | © 1998, 2011 Guido Krüger & Heiko Hansen, http://www.javabuch.de |