Programavimas

„Java“ patarimas 24: Kaip leisti garsą programose

Garso failų grojimas „Java“ programose oficialiai nepalaikomas dabartiniame „Java“ leidime. Bet nebijok, yra būdas! Šis patarimas jums parodys, kaip - pradedant pagrindinių žingsnių, susijusių su garso įrašų grojimu „Java“ programėlėse, aprašymu, tada pereinant prie „Java“ programų palaikymo.

Garso įrašų grojimas programėlėse yra gana paprastas ir apima šiuos veiksmus:

  • Sukurkite „AudioClip“ objektą
  • Įkelkite .au garso failą į „AudioClip“
  • Leiskite garsus vieną kartą arba nuolat kartokite
  • Sustabdyti atkūrimą

Štai kaip atrodo šių veiksmų kodas:

importuoti java.applet. *; AudioClip ac = getAudioClip (getCodeBase (), soundFile); ac.play (); // groti vieną kartą ac.stop (); // nustoti groti ac.loop (); // žaisti nuolat 

Atrodytų logiška naudoti tą patį kodą garso įrašams leisti „Java“ programoje. Deja, jei tai padarysite, gausite kompiliatoriaus klaidų. Kodėl? Nes „AudioClip“ objektas ir „getAudioClip“ () metodas yra java.apletas paketas - ir nėra programų dalis. Geros naujienos yra tai, kad galime patys pasinerti ir priversti viską veikti.

Šios problemos sprendimo gudrybė yra kai kurių naudojimas be dokumentų funkcijos, kurias „Sun“ teikia savo JDK. Žvilgterėti į vidų klasės.zip failą iš „Sun JDK“ (naudojant bet kurią iš įvairių zipfile paslaugų), randame ne tik standartinius „Java“ paketus, tokius kaip java.apletas bet ir saulė.audio. (Tai yra kataloge saulė / garsas.)

saulė.audio pakete yra viskas, ko reikia, kad galėtume leisti garso įrašus! Štai kodas:

importuoti sun.audio. *; // importuoti sun.audio paketą importuoti java.io. *; // ** atitinkamai pridėkite tai prie savo programos kodo // Atidarykite garso failo įvesties srautą. „InputStream“ = naujas „FileInputStream“ (failo pavadinimas); // Sukurkite „AudioStream“ objektą iš įvesties srauto. „AudioStream as = new AudioStream (in)“; // Leiskite // klipui naudoti statinį klasės nario „grotuvą“ iš „AudioPlayer“. „AudioPlayer.player.start“ (kaip); // Panašiai, kad sustabdytumėte garsą. „AudioPlayer.player.stop“ (kaip); 

Jei norite naudoti URL kaip garso srauto šaltinį, įvesties srauto ir garso srauto sąrankoje pakeiskite šiuos duomenis:

„AudioStream as = new AudioStream“ (URL.openStream ()); 

Nuolatinis garso srauto grojimas suteikia šiek tiek daugiau sudėtingumo:

// Sukurti garso srautą, kaip aptarta anksčiau. // Sukurti „AudioData“ šaltinį. Garso duomenų duomenys = as.getData (); // Sukurkite „ContinuousAudioDataStream“. ContinuousAudioDataStream cas = naujas ContinuousAudioDataStream (duomenys); // Leisti garsą. „AudioPlayer.player.play“ (cas); // Panašiai, kad sustabdytumėte garsą. „AudioPlayer.player.stop“ (cas); 

Ir jūs turite tai. Atminkite, kad ši technika naudoja nedokumentuotas funkcijas; nėra jokių garantijų, kad jis veiks su bet kuo kitu, išskyrus dabartinį „Sun JDK“.

Chongas Seras Wahas yra „Java“ kompetencijų centro Singapūre konsultantas. Peržiūrėkite centro „Java“ taurės varžybas.

Šią istoriją „Java 24 patarimas: kaip leisti garsą programose“ iš pradžių paskelbė „JavaWorld“.