
374
|
Chapter 10, Audio
#73 Play a Sound with QuickTime for Java
HACK
example, if the media could play in both directions and you wanted to be
notified when it reached the beginning of the movie too, you’d pass
StdQTConstants.triggerAtStop | StdQTConstants.triggerAtStart
.
Next, you have to use
callMeWhen( )
to register the callback. This signs you
up for one callback—if you’re called and are still interested in future events,
you have to reregister with another
callMeWhen( )
.
When the sound finishes, the callback calls
execute( ). This is when you shut
everything down, as in the other hacks. Notice that you close down Quick-
Time with
QTSession.close( ), the obvious counterpart to QTSession.open( ).
There are some issues about how well it works on Windows: it sometimes
hangs for me, and you may want to use the safer
QTSession.exitMovies( ),
which only closes down some of QTJ, but the rest seems to get taken care of
by QTJ itself, as I’ve never had a problem.
And one more bit of arcane QTJ lore: the code makes a call to
TaskAllMovies.addMovieAndStart( ). This helps deal with the fact that mov-
ies have to explicitly be given CPU time, with calls to a
task( ) method, in
order to work.
TaskAllMovies is a convenience Thread that can periodically
make this tasking call for all your movies. If you’ve read Chris’ book on
QTJ, you would think that this isn’t necessary, as having the AWT event-
dispatch thread usually ...