From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/html/k100251.html | 413 +++++++++++++++++++++ 1 file changed, 413 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/html/k100251.html (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100251.html') diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100251.html b/Master/Reference Architectures and Patterns/hjp5/html/k100251.html new file mode 100644 index 0000000..aa4c6de --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100251.html @@ -0,0 +1,413 @@ + + + +Handbuch der Java-Programmierung, 5. Auflage + + + + + + + + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage +
 <<  +  <   +  >   + >>  + API  +Kapitel 39 - Applets I +
+
+ + + + +

39.3 Die Ausgabe von Sound +

+
+ +
+ + + + +

39.3.1 Soundausgabe in Applets

+

+ + + + + + + + + + + +
+ +

+Das JDK bietet auch einige Möglichkeiten, Sound auszugeben. Hierbei +muss klar zwischen dem JDK 1.2 und seinen Vorgängern unterschieden +werden. Während das JDK 1.2 die Soundausgabe sowohl Applikationen +als auch Applets ermöglicht, war diese vorher nur für Applets +möglich. Dabei war die Ausgabe auf gesampelte Sounds beschränkt, +die im AU-Format vorliegen +mußten. Das AU-Format stammt aus der SUN-Welt und legt ein Sample +im Format 8 Bit Mono, Sampling-Rate 8 kHz, µ-law-Kompression +ab. Seit dem JDK 1.2 werden dagegen auch die Sample-Formate WAV + und AIFF +sowie die Midi-Formate Typ 0 und Typ +1 und RMF unterstützt. +Zudem gibt es einige Shareware- oder Freeware-Tools, die zwischen +verschiedenen Formaten konvertieren können (z.B. CoolEdit +oder GoldWave). Mit dem JDK 1.3 wurden die +Fähigkeiten erneut erweitert. Mit der nun im JDK enthaltenen +Sound-Engine kann Musik nicht nur wiedergegeben, sondern auch aufgenommen +und bearbeitet werden, und es ist möglich, Zusatzgeräte +wie Mixer, Synthesizer oder andere Audiogeräte anzusteuern.

+ + + + +
 JDK1.1-6.0 
+
+ +

+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 Sound-Datei 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 Sound-Datei (siehe nächster +Abschnitt) oder die Kombination von Verzeichnis-URL und Dateinamen +angegeben werden. Üblicherweise wird zur Übergabe des Verzeichnis-URLs +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 Sound-Datei 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 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 Sound-Datei 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 39.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
+ +Listing 39.7: Das sprechende »Hello, World«

+

+ + + + + + + + + +
+ +

+Eine HTML-Datei HWApplet.html zum Aufruf +dieses Applets findet sich in Abschnitt 51.6. +Sie wird dort als Beispiel für die Einbindung von Applets in +jar-Dateien verwendet.

+ + + + +
 Hinweis 
+
+ + + + +

39.3.2 Soundausgabe in Applikationen

+

+ + + + + + + + + + + +
+ +

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

+ + + + +
 JDK1.1-6.0 
+
+ +

+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
+ +Listing 39.8: Soundausgabe aus einer Applikation

+ +

+Das Programm kann beispielsweise dazu verwendet werden, einige der +Standard-Sounddateien unter Windows abzuspielen: + +

+java PlaySound file:///c:/windows\media\passport.mid
+
+java PlaySound file:///c:/windows\media\dermic~1.wav
+
+ +
+ + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage, Addison +Wesley, Version 5.0.1 +
 <<  +  <   +  >   + >>  + API  +© 1998, 2007 Guido Krüger & Thomas +Stark, http://www.javabuch.de +
+ + + -- cgit v1.2.3