我有一些代码可以作为超级基本的音乐播放器:
import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class MusicPlayer{
private Clip c;
private boolean playing;
public MusicPlayer(){
playing = false;
}
public void play(String fileName) {
if(playing == false){
try {
c.drain();
c.flush();
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(fileName));
c = AudioSystem.getClip();
c.open(audioInputStream);
c.start();
playing = true;
} catch(Exception ex) {
System.out.println("Error with playing sound:" + ex);
ex.printStackTrace();
}
}
}
public void stop(){
if(playing == true){
c.stop();
playing = false;
}
}
}
问题是,如果我尝试打开太多的wav文件,程序会崩溃并出现OutOfMemoryError。为程序提供更多内存(开始时不太理想)仍然意味着每次打开新文件时程序运行速度都会变慢。你可以看到我试图通过以下方式解决这个问题:
c.drain();
c.flush();
但显然这还不够。任何帮助表示赞赏!