Programiranje

Nasvet Java 24: Kako predvajati zvok v aplikacijah

Predvajanje zvočnih datotek v programih Java v tej izdaji Java uradno ni podprto. Toda ne bojte se, obstaja pot! Ta nasvet vam bo pokazal, kako - začenši z opisom osnovnih korakov pri predvajanju zvočnih posnetkov v programčkih Java in nato preklopite na podporo za aplikacije Java.

Predvajanje zvočnih posnetkov v programčkih je zelo preprosto in vključuje naslednje korake:

  • Ustvarite objekt AudioClip
  • Naložite zvočno datoteko .au v AudioClip
  • Predvajajte zvoke enkrat ali neprekinjeno zankajte
  • Ustavite predvajanje

Evo, kako izgleda koda za te korake:

uvoz java.applet. *; AudioClip ac = getAudioClip (getCodeBase (), soundFile); ac.play (); // enkrat predvajamo ac.stop (); // nehamo igrati ac.loop (); // igramo neprekinjeno 

Logično bi bilo uporabiti isto kodo za predvajanje zvočnih posnetkov v aplikaciji Java. Če boste to storili, boste prevajalniku prejeli napake. Zakaj? Zaradi AudioClip predmet in getAudioClip () metode so del java.applet paket - in niso del aplikacij. Dobra novica je, da se lahko sami potopimo in poskrbimo, da stvari delujejo.

Trik pri reševanju tega problema je, da ga uporabimo nedokumentirano funkcije, ki jih ponuja Sun v svojem JDK. Pokukati v razredi.zip iz datoteke Sun JDK (z uporabo katerega koli od različnih pripomočkov zipfile), najdemo ne samo standardne pakete Java, kot je java.applet ampak tudi sonce.audio. (Ti so v imeniku sonce / zvok.)

The sonce.audio paket vsebuje vse, kar potrebujemo za predvajanje zvočnih posnetkov! Tu je koda:

uvoz sun.audio. *; // uvozimo paket sun.audio uvoz java.io. *; // ** dodajte to v kodo aplikacije, kot je primerno // Odprite vhodni tok v zvočno datoteko. InputStream in = new FileInputStream (ime datoteke); // Ustvari objekt AudioStream iz vhodnega toka. AudioStream as = nov AudioStream (v); // Za predvajanje // posnetka uporabite statičnega člana razreda "player" iz razreda AudioPlayer. AudioPlayer.player.start (kot); // Podobno tudi za zaustavitev zvoka. AudioPlayer.player.stop (kot); 

Če želite kot vir zvočnega toka uporabiti URL, nadomestite naslednje nastavitve vhodnega toka in zvočnega toka:

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

Neprekinjeno predvajanje zvočnega toka doda nekoliko večjo zapletenost:

// Ustvari zvočni tok, kot smo že omenili. // Ustvari vir AudioData. Podatki AudioData = as.getData (); // Ustvari ContinuousAudioDataStream. ContinuousAudioDataStream cas = novo ContinuousAudioDataStream (podatki); // Predvajanje zvoka. AudioPlayer.player.play (cas); // Podobno tudi za zaustavitev zvoka. AudioPlayer.player.stop (cas); 

In tam imate. Ne pozabite, da ta tehnika uporablja nedokumentirane funkcije; ni nobenih jamstev, da bo delovalo s čim drugim, razen s trenutno Sun JDK.

Chong Ser Wah je svetovalec v Kompetenčnem centru za Javo v Singapurju. Oglejte si središčno tekmovanje Java Cup.

To zgodbo, "Nasvet Java 24: Kako predvajati zvok v aplikacijah", je prvotno objavil JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found