Media.play在Android 4.3中无法同步工作

时间:2013-12-26 13:15:11

标签: android synchronization android-mediaplayer

我正在创建一款智能手机应用程序,它本质上是一款会说话的短语手册,使用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"> 

感谢您的任何建议,这让我疯了!

0 个答案:

没有答案