Ää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.