java - 如何定期播放声音?

标签 java audio codenameone

以下代码每秒成功调用两次。声音文件长约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/

相关文章:

java - 如何将时间转换为长?

java - 当我调用 SOAP 服务时,Java 是否会在幕后处理 HTTPS 编码?

javascript - 音量 slider 自动静音

actionscript-3 - ActionScript 3 - 声音文件对比。以编程方式创建的声音

android - 我怎样才能让声音文件在每次点击 Android 中的按钮时播放?

codenameone - 代号一 : How to Change Picker PopUp Design?

ios - 我的 CN1 应用程序在启动时崩溃

java - Spring Boot war 在 Elastic Beanstalk 中启动时失败,但在本地运行时正确启动

php - Codenameone 上传图片

java - 使用Java远程访问HBase Table List