在 Codenameone 中播放捆绑文件中的背景音乐

Playing Background Music From Bundled File in Codenameone

我正在尝试使用应用程序打包的 mp3 文件在代号 one 中播放背景声音(beep-07.mp3 就在 src 文件夹中)。

我可以使用 MediaManager.createMedia 使它工作,代码是从这个 post 借来的:

但是 MediaManager.createBackgroundMedia 函数只接受一个 uri,所以我尝试使用 MediaManager.createBackgroundMedia("file://beep-07.mp3");但没有声音播放。

我在文件字符串中做错了什么吗?

设备上不存在 src 目录。那里的文件被打包为资源,相当于一个 jar。所以如果你想要 URL,你需要提取它们。请注意,这可能适用于 "jar://beep-07.mp3",但我不确定。

一个更正确的方法是在第一次使用时从 jar 中提取它,然后使用这个 URL(下面的代码假定静态导入 CN class):

String fileName = getAppHomePath() + "beep-07.mp3";
if(!existsInFileSystem(fileName)) {
    try(InputStream i = getResourceAsStream("/beep-07.mp3");
       OutputStream o = openFileOutputStream(fileName)) {
        copy(i, o);
    }
}
Media m = MediaManager.createBackgroundMedia(fileName);

仅供参考,因为您的应用 运行 您不需要背景媒体,只需要前景媒体。