【发布时间】:2012-03-08 08:29:45
【问题描述】:
我有这个 Phonegap 应用程序,它应该在某些事件上播放音频文件。在 iPad 模拟器中尝试该应用程序时会听到此音频,但在合适的 iPad 上却听不到(而且我肯定会听到其他声音)
我在 head 部分包含了 phonegap*.js:
<head>
<meta name = "viewport" content = "user-scalable=no,width=device-width" />
<script
type="text/javascript" charset="utf-8"
src="scripts/phonegap-1.3.0.js">
</script>
<script
type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" >
</script>
</head>
这是播放音频文件的函数:
function playAudio(audio_file) {
switch (audio_file) {
case 'right':
new Media('media/audio/right.wav').play();
break;
case 'timer' :
new Media('media/audio/timer.wav').play();
break;
case 'complete':
new Media('media/audio/complete.wav').play();
break;
}
}
一些很简单的东西。没有奇怪的格式,只有 wavs。可能是没有为设备正确定义路径的原因吗?请记住:它们在模拟器中工作。即使在 Safari 中,它们也会引发“错误:尝试在 'deviceready' 之前调用 PhoneGap.exec()。忽略。”,所以它们被调用了。
【问题讨论】:
-
我还没有使用 PhoneGap,但在我看来,
Media对象找不到 .wav 文件。如果有任何方法可以查询它们是否已成功加载或找到媒体文件,您应该在播放它们之前这样做。 -
“错误:尝试在'deviceready'之前调用PhoneGap.exec()。忽略”是一种症状吗?还是来自不同的测试场景?如果这是一个症状,这似乎很明显 - 竞争条件,phonegap 还没有准备好。
-
媒体对象能够在 iPad 模拟器中找到这些文件,但我会尝试查询它们并提供一些视觉反馈以防万一 - 感谢 Michael 的想法。
-
djna,不,只是 Safari 不知道如何处理 PhoneGap。这只是一个探测这些行是否被正确调用。