android - 如何使用 JAM 和 Intel XDK 添加声音

标签 android html cordova jquery-mobile intel-xdk

我正在开发一个应用程序并使用 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/

相关文章:

android - gen 文件夹中没有 R.java - android

android - 撤销个人权限后更新 session

html - FontAwesome 图标不可见,但适用于另一个相同的 View

cordova - Ionic iOS 构建失败,未找到错误存档

angular - Ionic 3 - 检查位置是否已启用

Android XML 到 JSON 的转换, bool 值包含在 ""内

android - 将数据库中的特定列检索到 Spinner

javascript - HTTPS 调用不会在 Cordova android release apk 中进行

中间图像的 html/css 格式和外部的四个 div

javascript - 如何将 AngularJS 指令应用于 ajax 内容?