Media.play在Android 4.3中不同步工作

Media.play在Android 4.3中不同步工作,android,synchronization,android-mediaplayer,Android,Synchronization,Android Mediaplayer,我正在使用AppFramework2和Cordova2.9,在三星GalaxyS4上测试一款智能手机应用程序,它本质上是一本会说话的短语手册。我发现在播放了大约25-30个声音片段后,声音停止了播放。我发现问题在于Android上的音频资源是有限的,并且在发布media.play之后没有发布。我为每一个成功的游戏添加了一个控制台日志,这表明即使在资源耗尽时也能成功执行 所以,我在media.play之后添加了media.stop和media.release,正如在本论坛和其他地方的几个问题中所讨

我正在使用AppFramework2和Cordova2.9,在三星GalaxyS4上测试一款智能手机应用程序,它本质上是一本会说话的短语手册。我发现在播放了大约25-30个声音片段后,声音停止了播放。我发现问题在于Android上的音频资源是有限的,并且在发布media.play之后没有发布。我为每一个成功的游戏添加了一个控制台日志,这表明即使在资源耗尽时也能成功执行

所以,我在media.play之后添加了media.stop和media.release,正如在本论坛和其他地方的几个问题中所讨论的那样,我发现声音完全停止工作了……唉

凭直觉,我在media.play和media.stop.now之间添加了一条警报语句,只要在警报显示时单击OK,就可以随时播放声音。我还注意到控制台日志条目根本就不存在了。因此,看起来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"> 

谢谢你的建议,这让我快发疯了

我修好了。问题是我把它修好了。问题是media.play在执行media.stop和media.release之前没有等待完成播放。所以我的媒体播放;我的媒体站;我的媒体发布;不起作用,至少在装有安卓4.3的三星GS4上不起作用。所以我这样做了,它工作得非常好,函数soundclip{var my_media=new mediagewebroot+/test.ogg,函数{my_media.stop;my_media.release;},函数{my_media.stop;my_media.release;};my_media.play;//结束声音剪辑