Programmering

Java Tips 24: Hvordan spille av lyd i applikasjoner

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.

$config[zx-auto] not found$config[zx-overlay] not found