我正在开发一个应用程序并使用 IntelXDK 来构建它。如果满足条件,我需要播放一些声音,首先我尝试了 HTML5 和 JS,在桌面上它可以工作,但是在构建时,它没有声音......
第一次尝试 - HTML5 和 JS
<audio src="snd/yes.mp3" id="yes"></audio>
<audio src="snd/no.mp3" id="no"></audio>
if(condition) {
$('#yes').trigger("play");
} else {
$('#no').trigger("play");
}
然后我尝试了如下所示的原生 IntelXDK 版本:
if(condition) {
intel.xdk.player.playSound("snd/yes.mp3");
} else {
intel.xdk.player.playSound("snd/no.mp3");
}
不仅它不起作用,而且还 f*** 使我的其余代码无法触发弹出窗口和页面更改。
有谁知道如何解决这个问题? 我需要在播放之前预加载声音吗?
**更新
我刚刚发现,如果我使用 HTML5 音频标签并在我的服务器中提供指向声音的链接,声音会正常工作,但如果我尝试从我的 snd
文件夹中获取相同的声音他们不会工作...这是为什么?
最佳答案
问题是您的“root”不在您认为的位置,因此找不到您的“snd”目录。不幸的是,这个问题因每个目标而异,它不是 XDK 控制的东西,它与 Cordova 应用程序的构建方式有关。您可以使用这些函数来定位文件的根目录,这应该可以帮助您完成这项工作。
// getWebPath() returns the location of index.html
// getWebRoot() returns URI pointing to index.html
function getWebPath() {
"use strict" ;
var path = window.location.pathname ;
path = path.substring( 0, path.lastIndexOf('/') ) ;
return 'file://' + path ;
}
function getWebRoot() {
"use strict" ;
var path = window.location.href ;
path = path.substring( 0, path.lastIndexOf('/') ) ;
return path ;
}
关于android - 如何使用 JAM 和 Intel XDK 添加声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27468939/