Isingeniso se-Java Sound API
I-Java Sound API iyikhithi yamathuluzi enamandla eklanyelwe ukunikeza ukwesekwa komsindo kuzo zonke izinkundla. Iza ihlanganiswe ne-Java Development Kit (JDK) futhi yenza onjiniyela bakwazi ukudlala, ukuqopha, nokucubungula amafayela alalelwayo ngamafomethi ahlukahlukene. Kulesi sihloko, sizogxila ezintweni eziyisisekelo zokudlala umsindo ezinhlelweni ze-Java sisebenzisa amakilasi e-AudioClip ne-AudioSystem, ayingxenye ye-Java Sound API.
I-Java Sound API ingahlukaniswa ngamaphakheji amabili ayinhloko: i-javax.sound.sampled futhi javax.sound.midi. Iphakheji eliyisampula lisetshenziselwa ukuphatha imisebenzi eyisisekelo yomsindo efana nokudlala, ukurekhoda, kanye nokuhlanganiswa kwedatha yomsindo, kuyilapho iphakheji ye-midi yakhelwe ukuphatha okuqanjwa komculo okusekelwe ku-MIDI namathrekhi omsindo.
Ukudlala Imisindo usebenzisa i-AudioClip
Okokuqala, ake sihlole ukuthi uwadlala kanjani amafayela omsindo usebenzisa i- I-AudioClip interface, okuyingxenye ye java.applet iphasela. Nakuba isixhumi esibonakalayo se-AudioClip saqale sadalelwa ama-applet, sisasebenza futhi siwusizo ekudlaleni amafayela alalelwayo amancane ezinhlelweni ze-Java.
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(); } }
Kumazwibela ekhodi angenhla, singenise i- I-AudioClip interface kanye I-URL ikilasi. Lawa makilasi asivumela ukuthi silayishe insiza yomsindo futhi siyidlale sisebenzisa indlela ye-play() yesibonelo se-AudioClip. Ukuze usebenzise i-AudioClip, qiniseka ukuthi ubeka ifayela elithi โsound.wavโ kumkhombandlela ofanayo nefayela lakho le-Java noma unikeze indlela yefayela efanele.
Nokho, uma usebenza ngamafayela omsindo amakhulu noma udinga ukulawula okuyinkimbinkimbi ekudlaleni, isixhumi esibonakalayo se-AudioClip singase singanele, futhi kufanele ucabangele ukusebenzisa ikilasi le-AudioSystem.
Ukudlala imisindo kusetshenziswa ikilasi le-AudioSystem
The Uhlelo lwe-AudioSystem ikilasi liyingxenye yephakheji ye-javax.sound.sampled futhi inikeza amandla okudlala okulalelwayo athuthuke kakhulu. Isibonelo esilandelayo sibonisa ukuthi lidlalwa kanjani ifayela lomsindo usebenzisa ikilasi le-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(); } } }
Kulesi sibonelo, siqale sangenisa amakilasi adingekayo kanye nezixhumanisi ezivela ku- i-javax.sound.sampled iphasela. Bese, sakha i I-AudioInputStream into yokufunda idatha yomsindo efayelini, kanye a isiqeshana isibonelo sokubamba idatha yomsindo kumemori. Ngemva kokuvula isiqeshana, sibize indlela yokuqala () yokudlala umsindo.
Le ndlela ihlinzeka ngokulawula okwengeziwe ekudlalweni komsindo, okuhlanganisa ikhono lokumisa isikhashana, ukuqalisa kabusha, iluphu, nokumisa umsindo, ikwenze ulungele uhla olubanzi lwezinhlelo zokusebenza.
Ukufingqa, sixoxe ngezindlela ezimbili ezihlukene zokudlala imisindo ku-Java sisebenzisa amakilasi e-AudioClip ne-AudioSystem. I-AudioClip interface ifanele amafayela alalelwayo amancane ezinhlelweni ezilula, kuyilapho ikilasi le-AudioSystem linikeza amandla okudlala okulalelwayo athuthukile ezimweni eziyinkimbinkimbi. Ukusebenzisa amalabhulali anamandla e-Java kuqinisekisa ukusebenza komsindo okungenazihibe nolwazi lomsebenzisi oluthuthukisiwe kuzo zonke izinhlelo zokusebenza ezihlukahlukene.