Panimula sa Java Sound API
Ang Java Sound API ay isang makapangyarihang toolkit na idinisenyo upang magbigay ng sound support sa lahat ng platform. Ito ay kasama ng Java Development Kit (JDK) at nagbibigay-daan sa mga developer na maglaro, mag-record, at magproseso ng mga audio file sa iba't ibang format. Sa artikulong ito, tututuon natin ang mga pangunahing kaalaman sa paglalaro ng tunog sa mga application ng Java gamit ang mga klase ng AudioClip at AudioSystem, na bahagi ng Java Sound API.
Ang Java Sound API ay maaaring ikategorya sa dalawang pangunahing pakete: javax.sound.sampled at javax.sound.midi. Ang naka-sample na package ay ginagamit upang pangasiwaan ang mga pangunahing audio functionality gaya ng pag-play, pag-record, at pag-synthesize ng audio data, samantalang ang midi package ay idinisenyo para sa pamamahala ng MIDI-based na mga komposisyon ng musika at soundtrack.
Nagpapatugtog ng Mga Tunog gamit ang AudioClip
Upang magsimula, tuklasin natin kung paano mag-play ng mga sound file gamit ang AudioClip interface, na bahagi ng java.applet pakete. Bagama't ang interface ng AudioClip ay unang ginawa para sa mga applet, ito ay may kaugnayan pa rin at kapaki-pakinabang para sa paglalaro ng maliliit na audio file sa mga Java application.
import java.applet.AudioClip;
import java.net.URL;
public class SoundPlayer {
public static void main(String[] args) {
AudioClip sound;
URL soundURL = SoundPlayer.class.getResource("sound.wav");
sound = java.applet.Applet.newAudioClip(soundURL);
sound.play();
}
}
Sa snippet ng code sa itaas, na-import namin ang AudioClip interface at ang URL klase. Binibigyang-daan kami ng mga klaseng ito na mag-load ng audio resource at i-play ito gamit ang play() method ng AudioClip instance. Upang gumamit ng AudioClip, tiyaking ilagay ang "sound.wav" na file sa parehong direktoryo ng iyong Java file o ibigay ang tamang landas ng file.
Gayunpaman, kung nagtatrabaho ka sa mas malalaking audio file o nangangailangan ng mas sopistikadong kontrol sa pag-playback, maaaring hindi sapat ang interface ng AudioClip, at dapat mong isaalang-alang ang paggamit ng klase ng AudioSystem.
Nagpapatugtog ng mga tunog gamit ang klase ng AudioSystem
Ang AudioSystem Ang klase ay bahagi ng javax.sound.sampled na pakete at nagbibigay ng mas advanced na mga kakayahan sa pag-playback ng audio. Ipinapakita ng sumusunod na halimbawa kung paano mag-play ng audio file gamit ang klase ng AudioSystem:
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.File;
import java.io.IOException;
public class SoundPlayer {
public static void main(String[] args) {
try {
File soundFile = new File("sound.wav");
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(soundFile);
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
// Keep the application running till the sound is played completely
Thread.sleep(clip.getMicrosecondLength() / 1000);
} catch(LineUnavailableException | UnsupportedAudioFileException | IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
Sa halimbawang ito, una naming na-import ang mga kinakailangang klase at interface mula sa javax.sound.sampled pakete. Pagkatapos, lumikha kami ng isang AudioInputStream object na basahin ang audio data mula sa file, at a Klip halimbawa upang hawakan ang data ng audio sa memorya. Pagkatapos buksan ang clip, tinawag namin ang start() na paraan upang i-play ang tunog.
Nagbibigay ang diskarteng ito ng higit na kontrol sa pag-playback ng audio, kabilang ang kakayahang i-pause, ipagpatuloy, i-loop, at ihinto ang tunog, na ginagawa itong angkop para sa malawak na hanay ng mga application.
Sa kabuuan, tinalakay namin ang dalawang magkaibang diskarte sa paglalaro ng mga tunog sa Java gamit ang mga klase ng AudioClip at AudioSystem. Ang interface ng AudioClip ay angkop para sa maliliit na audio file sa mga simpleng application, habang ang klase ng AudioSystem ay nag-aalok ng mga advanced na kakayahan sa pag-playback ng audio para sa mas kumplikadong mga sitwasyon. Ang paggamit ng makapangyarihang mga library ng Java ay nagsisiguro ng tuluy-tuloy na pagpapagana ng tunog at isang pinahusay na karanasan ng user sa iba't ibang mga application.