I'm having problems using my AudioPlayer class. I have a class that calls it which simply contains the following:
public class Test
{
public void test()
{
AudioPlayer ap1 = new AudioPlayer();
ap1.printUsageAndExit();
ap1.main({"a.wav"});
}
}
I recieve the error on line 6, when I call
ap1.main({"a.wav"});
Note: When I use my audio player directly it has no problems, I am having problems using it from another class.
The audio player is a bit more complicated but follows for reference.
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
public class AudioPlayer
{
private static final int EXTERNAL_BUFFER_SIZE=128000;
public static void main(String[] args)
{
if (args.length != 1)
{
printUsageAndExit();
}
String strFilename = args[0];
File soundFile = new File(strFilename);
AudioInputStream audioInputStream=null;
try
{
audioInputStream=AudioSystem.getAudioInputStream(soundFile);
}
catch(Exception e)
{
e.printStackTrace();
System.exit(1);
}
AudioFormat audioFormat =audioInputStream.getFormat();
SourceDataLine line = null;
DataLine.Info info = new DataLine.Info(SourceDataLine.class,audioFormat);
try
{
line = (SourceDataLine) AudioSystem.getLine(info);
line.open(audioFormat);
}
catch (LineUnavailableException e)
{
e.printStackTrace();
System.exit(1);
}
catch (Exception e)
{
e.printStackTrace();
System.exit(1);
}
line.start();
int nBytesRead =0;
byte[] abData=new byte[EXTERNAL_BUFFER_SIZE];
while(nBytesRead != -1)
{
try
{
nBytesRead=audioInputStream.read(abData,0,abData.length);
}
catch (IOException e)
{
e.printStackTrace();
}
if (nBytesRead >= 0)
{
int nBytesWritten = line.write(abData, 0, nBytesRead);
}
}
line.drain();
line.close();
System.exit(0);
}
public static void printUsageAndExit()
{
out("SimpleAudioPlayer: usage:");
out("\tjava SimpleAudioPlayer <soundfile>");
System.exit(1);
}
private static void out(String strMessage)
{
System.out.println(strMessage);
}
}
Thanks in advance in anybody has a solution!