Java-Tipp 24: So spielen Sie Audio in Anwendungen ab

Das Abspielen von Audiodateien in Java-Anwendungen wird in der aktuellen Java-Version nicht offiziell unterstützt. Aber keine Angst, es gibt einen Weg! Dieser Tipp zeigt Ihnen, wie - beginnend mit einer Beschreibung der grundlegenden Schritte zum Abspielen von Audioclips in Java-Applets und anschließend zur Unterstützung von Java-Anwendungen.

Das Abspielen von Audioclips in Applets ist recht einfach und umfasst die folgenden Schritte:

  • Erstellen Sie ein AudioClip-Objekt
  • Laden Sie die .au-Sounddatei in AudioClip
  • Spielen Sie Sounds einmal oder Loop kontinuierlich
  • Stoppen Sie die Wiedergabe

So sieht der Code für diese Schritte aus:

import java.applet. *; AudioClip ac = getAudioClip (getCodeBase (), soundFile); ac.play (); // einmal spielen ac.stop (); // hör auf zu spielen ac.loop (); // ununterbrochen spielen

Es erscheint logisch, denselben Code zum Abspielen von Audioclips in einer Java-Anwendung zu verwenden. Wenn Sie dies tun, erhalten Sie leider Fehler vom Compiler. Warum? Weil das AudioClipObjekt und die getAudioClip()Methode Teil des Pakets java.applet sind - und nicht Teil von Anwendungen. Die gute Nachricht ist, dass wir abtauchen und die Dinge selbst zum Laufen bringen können.

Der Trick zur Lösung dieses Problems besteht darin, einige undokumentierte Funktionen zu verwenden, die Sun in seinem JDK bereitstellt. Bei einem Blick in die Datei classes.zip aus dem Sun JDK (unter Verwendung eines der verschiedenen zipfile-Dienstprogramme) finden wir nicht nur die Standard-Java-Pakete wie java.applet, sondern auch sun.audio . (Diese befinden sich im Verzeichnis sun / audio.)

Das sun.audio- Paket enthält alles, was wir brauchen, um Audioclips abspielen zu können! Hier ist der Code:

import sun.audio. *; // importiere das sun.audio Paket import java.io. *; // ** füge dies entsprechend in deinen Anwendungscode ein // Öffne einen Eingabestream zur Audiodatei. InputStream in = neuer FileInputStream (Dateiname); // Erstellen Sie ein AudioStream-Objekt aus dem Eingabestream. AudioStream as = neuer AudioStream (in); // Verwenden Sie das statische Klassenmitglied "player" aus der Klasse AudioPlayer, um // einen Clip abzuspielen. AudioPlayer.player.start (as); // Ebenso, um das Audio zu stoppen. AudioPlayer.player.stop (as);

Um eine URL als Audio-Stream-Quelle zu verwenden, ersetzen Sie das Setup für den Eingabestream und den Audio-Stream wie folgt:

AudioStream as = neuer AudioStream (url.openStream ()); 

Das kontinuierliche Abspielen des Audiostreams erhöht die Komplexität etwas:

// Audio-Stream wie zuvor beschrieben erstellen. // AudioData-Quelle erstellen. AudioData data = as.getData (); // ContinuousAudioDataStream erstellen. ContinuousAudioDataStream cas = neuer ContinuousAudioDataStream (Daten); // Audio abspielen. AudioPlayer.player.play (cas); // Ebenso, um das Audio zu stoppen. AudioPlayer.player.stop (cas);

Und da hast du es. Denken Sie daran, dass diese Technik undokumentierte Funktionen verwendet. Es gibt keine Garantie dafür, dass es mit etwas anderem als dem aktuellen Sun JDK funktioniert.

Chong Ser Wah ist Berater am Kompetenzzentrum für Java in Singapur. Schauen Sie sich den Java Cup-Wettbewerb des Zentrums an.

Diese Geschichte "Java-Tipp 24: So spielen Sie Audio in Anwendungen ab" wurde ursprünglich von JavaWorld veröffentlicht.