Web ページからサウンドを録音する Java アプレットがあります。ディスクへの保存操作は、スレッドである内部クラスによって行われます。
class saveThread extends Thread {
public void run() {
AudioFileFormat.Type fileType = AudioFileFormat.Type.WAVE;
FileDialog fd = new FileDialog(new Frame(), "Save as WAVE", FileDialog.SAVE);
fd.setFile("*.wav");
fd.setVisible(true);
String name = fd.getDirectory() + fd.getFile();
File file = new File(name);
try {
byte audio[] = out.toByteArray();
InputStream input = new ByteArrayInputStream(audio);
final AudioFormat format = getFormat();
final AudioInputStream ais = new AudioInputStream(input, format, audio.length / format.getFrameSize());
AudioSystem.write(ais, fileType, file);
} catch (Exception e) {
e.printStackTrace();
}
}
}//End of inner class saveThread
問題は、Web ページでアプレットを実行すると、ディスクへの保存操作が機能しないことです。しかし、私がアプレットを直接実行しているとき、それは魅力のように機能します。そのため、おそらく問題は、ブラウザーがアプレットのスレッドをサポートしていないことだと思いました。