android - 调用 playAudio() 30 到 40 次后,Phonegap 声音停止播放

标签 android cordova media

在我的应用程序中,我对鼠标点击给出了声音响应。我是这样做的

我是这样调用函数的

<center><input id="click_flip" type="button" value="Click Me" class="clickme" onclick="callplay()"></center>

这是函数

<script type="text/javascript" charset="utf-8">

        function callplay()
        {
                                         if(voice=="male")
                                        playAudio('/android_asset/www/Mobile/sound/Male/'+rand1+'.mp3');
                                        else
                                        playAudio('/android_asset/www/Mobile/sound/Female/'+rand1+'.mp3');
        }
        // Audio player
        //

      var my_media = null;

        // Play audio
        //
        function playAudio(src) {




                // Create Media object from src

                my_media = new Media(src, onSuccess, onError);
            // else play current audio
            // Play audio
            my_media.play();



        }





        // onSuccess Callback
        //
        function onSuccess() {
            console.log("playAudio():Audio Success");
        }

        // onError Callback 
        //
        function onError(error) {
         //   alert('code: '    + error.code    + '\n' + 
                  'message: ' + error.message + '\n');
        }


        </script>

但是当我重复点击按钮时(大约 30 到 40 次)。声音没有任何反应。

之后使用这个 link我已经添加了这个功能

if(my_media){ 
   my_media.stop();
   my_media.release();
 }

也试过了

function playAudio(url) {
    try {

        var my_media = new Media(url,
            // success callback
            function () {
                **my_media.release();**
            },
            // error callback
            function (err) {
                **my_media.release();**
            });

        // Play audio
        my_media.play();
    } catch (e) {
        alert(e.message);
    }
}

但不工作。请建议

最佳答案

我遇到了同样的问题,解决方法是在创建新媒体之前释放以前的媒体:

var my_media = null;

function playAudio(src)
{
    if(my_media != null) my_media.release();
    my_media = new Media(src);
    my_media.play();
}

如果释放硬件则不需要停止,因为释放会自动停止当前媒体。不知何故,如果您尝试在成功或错误回调中发布,它并不总是有效。

有时(尤其是用户输入时)如果您尝试在前一个媒体未完成之前播放新媒体,整个过程就会中断。

关于android - 调用 playAudio() 30 到 40 次后,Phonegap 声音停止播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22731364/

相关文章:

android - 有没有办法在 Android ICS 中隐藏系统/导航栏

android - 如何优化 Canvas 上的绘图文本

javascript - 移动设备上的电话号码链接检测

security - 安全客户端-服务器 Phonegap 应用程序的架构

asp.net - asp.net媒体保护

html - 通讯边框错误

android - 如何检测 WebView 中的重定向何时完成?

android - ListView 中的 TextView : the text overflowing the screen

java - 如何以编程方式将图像下载到 iPad?

django - 你如何要求在 Django 中登录媒体文件