在 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);
仅供参考,因为您的应用 运行 您不需要背景媒体,只需要前景媒体。
我正在尝试使用应用程序打包的 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);
仅供参考,因为您的应用 运行 您不需要背景媒体,只需要前景媒体。