我正在创建一款智能手机应用程序,它本质上是一款会说话的短语手册,使用App Framework 2和Cordova 2.9,在三星Galaxy S4上进行测试。我发现在播放了大约25到30个声音片段后,声音停止播放。我发现问题是Android上的音频资源是有限的,并且在发布media.play后没有被释放。我为每个成功的游戏添加了一个控制台日志,这表明即使资源耗尽也能成功执行。
所以,我在media.play之后添加了media.stop和media.release(正如在这个论坛和其他地方的其他几个问题中所讨论的那样),发现声音完全停止了......叹了口气。
在预感中,我在media.play和media.stop之间添加了一个警告声明,现在声音可以按照我想要的频率播放,只要我在警报显示时单击“确定”即可。我还注意到控制台日志条目根本不再生成。因此,看起来像media.play之后的命令正在立即执行而不是等待声音完成播放。因此,我发布media.play,然后它才能播放media.stop和media.release被执行,所以我没有声音。这似乎得到了证实,因为我注意到在声音片段播放完毕之前显示警报并且点击OK终止了声音播放,可能是因为media.stop和media.release被执行了。
我是否误解了同步调用应该如何工作?任何建议,以解决这个问题。这是我的js代码:
<!-- Get the web root path -->
<script type="text/javascript">
function getWebRoot() {
"use strict" ;
var path = window.location.href ;
path = path.substring( 0, path.lastIndexOf( '/' ) ) ;
return path ;
}
</script>
<!-- /Get the web root path -->
<!-- Play sound using cordova -->
<script type="text/javascript">
function soundclip() {
var my_media = new Media(getWebRoot() + "/test.ogg", function() { console.log("my media found so stop and release after play"); });
my_media.play() ;
if (my_media) {
alert("my media found alert before stop and release") ;
my_media.stop();
my_media.release();
} ; // End If my_media
} ; // End soundclip
</script>
<!-- /Play sound using cordova -->
这是html
<input type="button" onClick="soundclip()" value=" Play Ay Caramba 1">
感谢您的任何建议,这让我疯了!