InputStream から AudioInputStream にキャストすることは可能ですか?
特定のイベントで小さなサウンドファイルを再生したいので、次のSoundThreadを作成しました
import java.io.*;
import javax.sound.sampled.*;
public class SoundThread implements Runnable{
private String filename;
SoundThread(String filename) {
this.filename = filename;
}
public void run() {
try {
InputStream in = ClassLoader.getSystemResourceAsStream("sounds/"+filename+".wav");
Clip clip = AudioSystem.getClip();
clip.open((AudioInputStream)in);
clip.start();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
} catch (LineUnavailableException e){
e.printStackTrace();
}
}
}
私はそれを実行します
new Thread(new SoundThread("nameOfTheSoundFile")).start();
最初はsun.audio.AudioPlayerとsun.audio.AudioStreamで処理していましたが、そのコードをEclipseに入れるとすぐにエラーが表示されました。だから私は試しました
AudioInputStream in = (AudioInputStream)ClassLoader.getSystemResourceAsStream("sounds/"+filename+".wav");
InputStream を AudioInputStream にキャストするには (Eclipse ではエラーは表示されませんでした)、実行すると ClassCastException がスローされます。この問題の解決策はありますか?