Media.play在Android 4.3中不同步工作
我正在使用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代码: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,正如在本论坛和其他地方的几个问题中所讨
<!-- 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;//结束声音剪辑