Přehrávání zvukových souborů v aplikacích Java není v aktuální verzi Java oficiálně podporováno. Ale nebojte se, existuje způsob! Tento tip vám ukáže, jak - počínaje popisem základních kroků při přehrávání zvukových klipů v appletech Java a následným přechodem k podpoře aplikací Java.
Přehrávání zvukových klipů v appletech je poměrně jednoduché a zahrnuje následující kroky:
- Vytvořte objekt AudioClip
- Načtěte zvukový soubor .au do AudioClip
- Přehrávejte zvuky jednou nebo nepřetržitě opakujte
- Zastavit přehrávání
Takto vypadá kód těchto kroků:
import java.applet. *; AudioClip ac = getAudioClip (getCodeBase (), soundFile); ac.play (); // hrát jednou ac.stop (); // přestat hrát ac.loop (); // hraje nepřetržitě
Zdálo by se logické použít stejný kód k přehrávání zvukových klipů v aplikaci Java. Bohužel, pokud to uděláte, dostanete chyby z kompilátoru. Proč? Protože Audioklip
objekt a getAudioClip ()
metoda jsou součástí java.applet balíček - a nejsou součástí aplikací. Dobrou zprávou je, že se můžeme ponořit dolů a nechat věci fungovat sami.
Trik k řešení tohoto problému spočívá v použití některých nezdokumentované funkce, které poskytuje Sun ve svém JDK. Nahlédnutí dovnitř classes.zip soubor ze Sun JDK (pomocí kteréhokoli z různých utilit zipfile), nenajdeme jen standardní Java balíčky jako java.applet ale také slunce. audio. (Jsou v adresáři sun / audio.)
The slunce. audio balíček obsahuje vše, co potřebujeme, abychom mohli přehrávat zvukové klipy! Tady je kód:
importovat sun.audio. *; // import balíku sun.audio import java.io. *; // ** podle potřeby jej přidejte do kódu aplikace // Otevřete vstupní proud do zvukového souboru. InputStream in = nový FileInputStream (název souboru); // Vytvoří objekt AudioStream ze vstupního proudu. AudioStream jako = nový AudioStream (v); // K přehrávání // klipu použijte statického člena třídy „player“ ze třídy AudioPlayer. AudioPlayer.player.start (jako); // Podobně k zastavení zvuku. AudioPlayer.player.stop (jako);
Chcete-li použít adresu URL jako zdroj zvukového streamu, nahraďte následující nastavení vstupního streamu a zvukového streamu:
AudioStream jako = nový AudioStream (url.openStream ());
Neustálé přehrávání zvukového streamu přidává trochu větší složitost:
// Vytvořte audio stream, jak již bylo uvedeno výše. // Vytvořit zdroj zvukových dat. Data audiodata = as.getData (); // Vytvořit ContinuousAudioDataStream. ContinuousAudioDataStream cas = nový ContinuousAudioDataStream (data); // Přehrávání zvuku. AudioPlayer.player.play (cas); // Podobně k zastavení zvuku. AudioPlayer.player.stop (cas);
A tady to máte. Pamatujte, že tato technika používá nezdokumentované funkce; neexistují žádné záruky, že to bude fungovat s čímkoli jiným, než s aktuálním Sun JDK.
Chong Ser Wah je konzultantem v Competency Center for Java v Singapuru. Podívejte se na soutěž Java Cup v centru.Tento příběh „Tip Java 24: Jak přehrávat zvuk v aplikacích“ původně publikoval JavaWorld.