home *** CD-ROM | disk | FTP | other *** search
Java Source | 1997-01-27 | 3.5 KB | 123 lines |
- /*
- * @(#)AudioPlayer.java 1.29 96/02/03 Arthur van Hoff
- *
- * Copyright (c) 1994, 1995 Sun Microsystems, Inc. All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software
- * and its documentation for NON-COMMERCIAL purposes and without
- * fee is hereby granted provided that this copyright notice
- * appears in all copies. Please refer to the file "copyright.html"
- * for further important copyright and licensing information.
- *
- * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
- * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
- * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
- */
-
- package sun.audio;
-
- import java.util.Vector;
- import java.util.Enumeration;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.io.FileOutputStream;
-
- /**
- * This class provides an interface to play audio streams.
- *
- * To play an audio stream use:
- * <pre>
- * AudioPlayer.player.start(audiostream);
- * </pre>
- * To stop playing an audio stream use:
- * <pre>
- * AudioPlayer.player.stop(audiostream);
- * </pre>
- * To play an audio stream from a URL use:
- * <pre>
- * AudioStream audiostream = new AudioStream(url.openStream());
- * AudioPlayer.player.start(audiostream);
- * </pre>
- * To play a continuous sound you first have to
- * create an AudioData instance and use it to construct a
- * ContinuousAudioDataStream.
- * For example:
- * <pre>
- * AudoData data = new AudioStream(url.openStream()).getData();
- * ContinuousAudioDataStream audiostream = new ContinuousAudioDataStream(data);
- * AudioPlayer.player.stop(audiostream);
- * </pre>
- *
- * @see AudioData
- * @see AudioDataStream
- * @see AudioDevice
- * @see AudioStream
- * @author Arthur van Hoff, Thomas Ball
- * @version 1.29, 02/03/96
- */
- public
- class AudioPlayer extends Thread {
-
- private AudioDevice devAudio;
-
- /**
- * The default audio player. This audio player is initialized
- * automatically.
- */
- public static final AudioPlayer player = new AudioPlayer();
-
- private static ThreadGroup getAudioThreadGroup() {
- ThreadGroup g = currentThread().getThreadGroup();
- while (g.getParent() != null) {
- g = g.getParent();
- }
- return g;
- }
-
- /**
- * Construct an AudioPlayer.
- */
- private AudioPlayer() {
- super(getAudioThreadGroup(), "Audio Player");
- devAudio = AudioDevice.device;
- setPriority(MAX_PRIORITY);
- setDaemon(true);
- start();
- }
-
- /**
- * Start playing a stream. The stream will continue to play
- * until the stream runs out of data, or it is stopped.
- * @see AudioPlayer#stop
- */
- public synchronized void start(InputStream in) {
- devAudio.openChannel(in);
- notify();
- }
-
- /**
- * Stop playing a stream. The stream will stop playing,
- * nothing happens if the stream wasn't playing in the
- * first place.
- * @see AudioPlayer#start
- */
- public synchronized void stop(InputStream in) {
- devAudio.closeChannel(in);
- }
-
- /**
- * Main mixing loop. This is called automatically when the AudioPlayer
- * is created.
- */
- public void run() {
- devAudio.open();
- devAudio.play();
- devAudio.close();
- System.out.println("audio player exit");
- }
- }
-