Ohjelmointi

Java-vinkki 24: Kuinka toistaa ääntä sovelluksissa

Äänitiedostojen toistamista Java-sovelluksissa ei tueta virallisesti nykyisessä Java-julkaisussa. Mutta älä pelkää, on olemassa tapa! Tämä vinkki näyttää kuinka - aloitetaan kuvaamalla äänileikkeiden toistamista Java-sovelmissa ja siirtymällä sitten Java-sovellusten tukeen.

Äänileikkeiden toistaminen sovelmissa on melko yksinkertaista ja sisältää seuraavat vaiheet:

  • Luo AudioClip-objekti
  • Lataa .au-äänitiedosto AudioClipiin
  • Toista ääniä kerran tai toista jatkuvasti
  • Lopeta toisto

Näiden vaiheiden koodi näyttää tältä:

tuo java.applet. *; AudioClip ac = getAudioClip (getCodeBase (), soundFile); ac.play (); // toista kerran ac.stop (); // lopeta ac.loop () -pelien toisto; // pelata jatkuvasti 

Vaikuttaa loogiselta käyttää samaa koodia äänileikkeiden toistamiseen Java-sovelluksessa. Valitettavasti, jos teet niin, saat kääntäjältä virheitä. Miksi? Koska AudioClip esine ja getAudioClip () menetelmä ovat osa java.applet paketti - eivätkä ole osa sovelluksia. Hyvä uutinen on, että voimme sukeltaa alas ja saada asiat toimimaan itse.

Temppu tämän ongelman ratkaisemiseen on käyttää joitain ilman asiakirjoja ominaisuudet, jotka Sun tarjoaa JDK: ssaan. Kurkistaa sisään luokat. zip tiedosto Sun JDK: lta (käyttämällä mitä tahansa zipfile-apuohjelmia), löydämme paitsi tavalliset Java-paketit, kuten java.applet mutta myös sun.audio. (Nämä ovat hakemistossa sun / audio.)

sun.audio paketti sisältää kaiken mitä tarvitsemme voidaksemme toistaa äänileikkeitä! Tässä koodi:

tuonti sun.audio. *; // tuo sun.audio-paketti tuoda java.io. *; // ** lisää tämä sovelluskoodiin tarvittaessa // Avaa audiotiedoston syöttövirta. InputStream sisään = uusi FileInputStream (tiedostonimi); // Luo AudioStream-objekti tulovirrasta. AudioStream as = uusi AudioStream (sisään); // Käytä luokan leikkeen staattista "pelaajaa" luokan AudioPlayerista. AudioPlayer.player.start (as); // Samoin äänen lopettamiseksi. AudioPlayer.player.stop (as); 

Jos haluat käyttää URL-osoitetta äänivirran lähteenä, korvaa seuraava syötevirran ja äänivirran asetuksissa:

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

Äänivirran jatkuva toistaminen lisää hieman monimutkaisuutta:

// Luo äänivirta kuten aiemmin keskusteltiin. // Luo AudioData-lähde. AudioData-tiedot = as.getData (); // Luo ContinuousAudioDataStream. ContinuousAudioDataStream cas = uusi ContinuousAudioDataStream (data); // Toista ääni. AudioPlayer.player.play (cas); // Samoin äänen lopettamiseksi. AudioPlayer.player.stop (cas); 

Ja sinulla on se. Muista, että tämä tekniikka käyttää dokumentoimattomia ominaisuuksia; ei ole takeita siitä, että se toimii muun kuin nykyisen Sun JDK: n kanssa.

Chong Ser Wah on konsultti Java-osaamiskeskuksessa Singaporessa. Katso keskuksen Java Cup -kilpailu.

Tämän tarinan "Java Tip 24: Kuinka toistaa ääntä sovelluksissa" julkaisi alun perin JavaWorld.

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