以下代码每秒成功调用两次。声音文件长约100ms。它只播放一次,但我希望它能继续播放:后续调用将跳过 play
调用,不会引发异常,但也不会发出声音。
有没有一种有效的方法可以让它发挥作用?
InputStream knockAudio = fetchResourceFile().getData("mysound.wav");
try {
final Media m = MediaManager.createMedia(knockAudio, "audio/wav");
onClickTask = new TimerTask() {
@Override
public void run() {
m.cleanup(); // Here's something I tried, but had no effect
m.prepare(); // I also tried this without cleanup
m.play(); // But to start with just had this (no cleanup or prepare)
}
};
} catch (IOException ex) {
Log.e(ex);
}
最佳答案
第一次播放后,Codename One 上的声音会自动清除/删除。您必须重新创建它,这并不像听起来那么昂贵。
其原因与媒体播放中最常见的错误有关,即缺乏适当的清理,因此我们隐式地这样做以避免此类内存泄漏。由于您要获取的输入流是在 RAM 中创建的,因此开销应该相对较低。
关于java - 如何定期播放声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21583218/