Programování

Tip Java 24: Jak přehrávat zvuk v aplikacích

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.