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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+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. |
+ |
+
+
+ |
+ |
+
+
+
+
+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:
+
+
+
+
+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«
+
+
+
+
+
+
+39.3.2 Soundausgabe in Applikationen
+
+
+
+
+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
+
+
+
+
+
+
+
--
cgit v1.2.3