【问题标题】:How to add sounds with JQM and IntelXDK如何使用 JQM 和 IntelXDK 添加声音
【发布时间】:2014-12-14 11:42:29
【问题描述】:

我正在开发一个应用程序并使用 IntelXDK 来构建它。如果满足条件,我需要播放一些声音,首先我尝试了带有 JS 的 HTML5,并且在桌面上它正在工作,但是在构建时,它没有声音......

第一次尝试 - 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");
}

不仅它不起作用,而且它还搞砸了我的其余代码,不允许触发弹出窗口和页面更改。

有谁知道如何解决这个问题? 我需要在播放之前预加载声音吗?

**更新

我刚刚发现,如果我使用 HTML5 音频标签并提供指向服务器内声音的链接,这些声音可以正常工作,但如果我尝试从 snd 文件夹中获取相同的声音,它们将无法正常工作……这是为什么呢?

【问题讨论】:

  • 您是否遇到任何错误?如果上面的代码阻止了其他函数的运行,则说明某处存在语法错误。
  • @omar ,没有语法错误,没有什么,就像我说的,整个应用程序在浏览器上运行良好,但在为 android 构建时无法运行。第二个版本取自英特尔网站作为解决方案,但他们经常提供不起作用的解决方案......
  • 如果您愿意,可以使用离子塞。我测试了这个,它非常好。 ionden.com/a/plugins/ion.sound/en.html

标签: android html cordova jquery-mobile intel-xdk


【解决方案1】:

问题是您的“根”不在您认为的位置,因此找不到您的“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 ;
}

【讨论】:

  • 我希望这是问题所在,但我对此表示怀疑……因为我在 snd 文件夹旁边有一个 img 文件夹,并且每当我调用图像时与调用声音时相同,图像显示。
  • 当您“调用”图像时,您的意思是您使用的是 标签还是实际上调用的是 intel.xdk API?这些是不等价的。另外,您是否查看过 XDK 中的音频演示应用程序?请参阅“基本混合”应用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多