As well as support for displaying images, applets also have support for playing sound (provided that the
client machine has hardware support for playing audio clips). The easiest way to play sounds in applets is by using
the play()
method. This is very useful for playing simple sounds, especially when
starting and stopping applets. The method has the syntax:
// In java.applet.Applet void play(URL url, String name)
where the first argument is the base directory of the applet and the second argument is the sound file to play. It can be used like:
this.play( this.getDocumentBase(), "theSound.au");
The play()
method requires that the applet .class
file and the
sound clip are below the same directory. For a more complicated use of sounds you could use:
// In java.applet.Applet AudioClip getAudioClip(URL url, String name)
where this method returns an object of the java.applet.AudioClip
Interface (no not a class,
we will discuss this again). We can then use the play()
, loop()
or
stop()
methods of this object. Multiple AudioClip
objects can be playing
at the same time, and the resulting sound is mixed together to produce a composite.
Task: Write an Java applet that plays a sound when it is minimized and a different sound when it is once again maximised
Solution: Ok there is no point this time to show a picture as it just plays audio, but
here SoundApplet.html
is my solution applet.
The source code is below and at SoundApplet.java
// The SoundApplet that plays a different sound on start and stop import java.applet.Applet; import java.applet.AudioClip; public class SoundApplet extends Applet { private AudioClip theStartSound, theStopSound; public void init() { this.theStartSound = this.getAudioClip( this.getDocumentBase(), "start.wav" ); this.theStopSound = this.getAudioClip( this.getDocumentBase(), "stop.wav" ); } public void start() { this.theStartSound.play(); } public void stop() { this.theStopSound.play(); } }
This code works perfectly, but it may not work completely as expected on your web browser. It is much easier
to see working correctly if you use the appletviewer application. To make this easy I have created
a .zip
version that contains the source and sound files -
SoundApplet.zip
. Extract this file to a folder of
your choice and then use the appletviewer application from the command prompt.
In this segment of code I have created two AudioClip
states called theStartSound
and theStopSound
so as to allow these objects to be accessed from any method in the SoundApplet
class. We only wish to load the sound clips from the disk once, and as we know that the init()
of an
applet is only called once; we should load the sound clips there. The start()
and stop()
methods then play the respective sounds once to completion without having to re-load them again.
© 2006
Dr. Derek Molloy
(DCU).