Avspilling av lydfiler i Java-applikasjoner støttes ikke offisielt i den nåværende versjonen av Java. Men frykt ikke, det er en måte! Dette tipset viser deg hvordan - starter med en beskrivelse av de grunnleggende trinnene som er involvert i å spille av lydklipp i Java-appletter og deretter går videre til Java-applikasjonsstøtte.
Å spille lydklipp i appletter er ganske enkelt og involverer følgende trinn:
- Lag et AudioClip-objekt
- Last .au-lydfil inn i AudioClip
- Spill lyder én gang eller løkke kontinuerlig
- Stopp avspilling
Slik ser koden for disse trinnene ut:
importere java.applet. *; AudioClip ac = getAudioClip (getCodeBase (), soundFile); ac.play (); // spill en gang ac.stop (); // slutte å spille ac.loop (); // spill kontinuerlig
Det virker logisk å bruke den samme koden til å spille av lydklipp i et Java-program. Dessverre, hvis du gjør det, vil du få feil fra kompilatoren. Hvorfor? Fordi det AudioClip
objektet og getAudioClip ()
metoden er en del av java.applet pakke - og er ikke en del av applikasjonene. Den gode nyheten er at vi kan dykke ned og få ting til å fungere selv.
Trikset for å løse dette problemet er å bruke noen papirløst funksjoner som er levert av Sun i JDK. Tar en titt inn i classes.zip fra Sun JDK (ved hjelp av noen av de forskjellige zipfile-verktøyene), finner vi ikke bare de vanlige Java-pakkene som java.applet men også sol. lyd. (Disse er i katalogen sol / lyd.)
De sol. lyd pakken inneholder alt vi trenger for å kunne spille av lydklipp! Her er koden:
importere sun.audio. *; // importere sun.audio-pakken import java.io. *; // ** legg dette til applikasjonskoden din etter behov // Åpne en inngangsstrøm til lydfilen. InputStream in = ny FileInputStream (filnavn); // Opprett et AudioStream-objekt fra inngangsstrømmen. AudioStream som = ny AudioStream (i); // Bruk det statiske klassemedlemmet "player" fra klasse AudioPlayer til å spille // klipp. AudioPlayer.player.start (som); // På samme måte for å stoppe lyden. AudioPlayer.player.stop (som);
Hvis du vil bruke en URL som lydstrømskilde, må du erstatte følgende for oppsett av inngangsstrøm og lydstrøm:
AudioStream som = ny AudioStream (url.openStream ());
Å spille av lydstrømmen tilfører kontinuerlig litt mer kompleksitet:
// Opprett lydstrøm som diskutert tidligere. // Opprett AudioData-kilde. AudioData data = as.getData (); // Opprett ContinuousAudioDataStream. ContinuousAudioDataStream cas = new ContinuousAudioDataStream (data); // Spill av lyd. AudioPlayer.player.play (cas); // På samme måte for å stoppe lyden. AudioPlayer.player.stop (cas);
Og der har du det. Husk at denne teknikken bruker papirløse funksjoner; det er ingen garantier for at det vil fungere med annet enn dagens Sun JDK.
Chong Ser Wah er konsulent ved kompetansesenteret for Java i Singapore. Ta en titt på senterets Java Cup-konkurranse.Denne historien, "Java Tips 24: How to play audio in applications" ble opprinnelig utgitt av JavaWorld.