package greenfoot.sound;
import java.io.IOException;
import java.net.URL;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.UnsupportedAudioFileException;
import bluej.utility.Debug;
| Wrapper classer for a AudioInputStream. It just delegates all methods
| to the wrapped class except for restart().
|
| @author Poul Henriksen
|
public class JavaAudioInputStream
implements GreenfootAudioInputStream{
private AudioInputStream stream;
private URL url;
private boolean readingHasStarted = false;
private boolean open;
public JavaAudioInputStream(URL url) throws UnsupportedAudioFileException,
IOException
{
this.url = url;
open();
}
public void open() throws UnsupportedAudioFileException, IOException
{
if (!open) {
readingHasStarted = false;
if (stream != null) {
try {
stream.close();
} catch (IOException e) {
Debug.reportError("Exception while closing java audio input stream.", e);
}
}
stream = AudioSystem.getAudioInputStream(url);
open = true;
}
}
public void restart() throws UnsupportedAudioFileException, IOException
{
if (!open || readingHasStarted() || stream == null) {
open = false;
open();
}
}
| Whether reading from this stream has begun.
|
| @return True if it has been restarted and no reading has been done since.
| False otherwise.
|
private boolean readingHasStarted()
{
return readingHasStarted;
}
public String getSource()
{
return url.toString();
}
public int available() throws IOException
{
return stream.available();
}
public void close() throws IOException
{
open = false;
stream.close();
}
public boolean equals(Object obj)
{
if (obj == null) {
return false;
}
if (! (obj instanceof JavaAudioInputStream) ) {
return false;
}
return stream.equals(((JavaAudioInputStream)obj).stream);
}
public AudioFormat getFormat()
{
return stream.getFormat();
}
public long getFrameLength()
{
return stream.getFrameLength();
}
public int hashCode()
{
return stream.hashCode();
}
public void mark(int readlimit)
{
stream.mark(readlimit);
}
public boolean markSupported()
{
return stream.markSupported();
}
public int read() throws IOException
{
readingHasStarted = true;
return stream.read();
}
public int read(byte[] b, int off, int len) throws IOException
{
readingHasStarted = true;
return stream.read(b, off, len);
}
public int read(byte[] b) throws IOException
{
readingHasStarted = true;
return stream.read(b);
}
public void reset() throws IOException
{
stream.reset();
}
public long skip(long n) throws IOException
{
readingHasStarted = true;
return stream.skip(n);
}
public String toString()
{
return stream.toString();
}
}
top,
use,
map,
class JavaAudioInputStream
. JavaAudioInputStream
. open
. restart
. readingHasStarted
. getSource
. available
. close
. equals
. getFormat
. getFrameLength
. hashCode
. mark
. markSupported
. read
. read
. read
. reset
. skip
. toString
171 neLoCode
+ 6 LoComm