Phonegap,停止音频

时间:2013-05-15 11:36:03

标签: javascript html cordova

我尝试制作一个简单的phonegap应用程序,可以播放几首歌曲。 到目前为止,我的应用程序可以播放一首歌,但是当我点击两次播放按钮时:

 <button onclick="playAudio('test.mp3')">Play Some Audio</button>

它再次播放该歌曲,以便可以听到回声,而不是先停止音频,然后从歌曲的开头开始。 我尝试了严厉的事情,但我的停止按钮都有效。可以在此处找到停止音频的Api:http://docs.phonegap.com/en/2.0.0/cordova_media_media.md.html#media.stop 这是我的停止按钮:

 <button onclick="stopAudio()">Stop Some Audio</button>

和整个项目:

     <body>
     <h1>Playing Audio</h1>
      <button onclick="playAudio('test.mp3')">Play Some Audio</button>
      <button onclick="stopAudio()">Stop Some Audio</button>
      </div>
     <script type="text/javascript" src="cordova-2.4.0.js"></script>
     <script type="text/javascript" src="js/index.js"></script>
     <script type="text/javascript">
        app.initialize();
        function playAudio(src) {
        if (device.platform == 'Android') {
            src = '/android_asset/' + src;
        }

        var media = new Media(src, success, error_error);

        media.play();

    }

    function success() {
        // ignore
    }

    function error_error(e) {
        alert('great error');
        alert(e.message);
    }

    function stopAudio() {
     if (media) {
     var media = new Media(src, success, error_error);
         media.stop();
         }
    }
    </script>
</body>

所以也许有人知道如何让停止按钮工作? 对不起我来自德国的糟糕的问候和祝福!

2 个答案:

答案 0 :(得分:2)

您可以在播放音频 audioPlaying 时创建标记,并每次检查该标记以再次尝试播放音频。这是最直接的解决方案。

此外,您正在使用Media对象的两个不同实例,当您在其上调用stop时,您正在引用完全不同的实例。您需要增加媒体对象的范围,请参阅以下内容:

编辑:添加了audioPlaying = false;到停止功能,以防止卡住。

 <body>
 <h1>Playing Audio</h1>
  <button onclick="playAudio('test.mp3')">Play Some Audio</button>
  <button onclick="stopAudio()">Stop Some Audio</button>
  </div>
 <script type="text/javascript" src="cordova-2.4.0.js"></script>
 <script type="text/javascript" src="js/index.js"></script>
 <script type="text/javascript">
    var audioPlaying = false;
    var media;
    app.initialize();
    function playAudio(src) {
        if (audioPlaying === false) {
            if (device.platform == 'Android') {
                src = '/android_asset/' + src;
            }

            media = new Media(src, success, error_error);

            media.play();
            audioPlaying = true;
        } else {
            //audio is already playing
        }
    }

function success() {
    // ignore
}

function error_error(e) {
    alert('great error');
    alert(e.message);
}

function stopAudio() {
 if (media) {
     media.stop();
     audioPlaying = false;
     }
}
</script>

答案 1 :(得分:1)

创建全局变量var media;并在单击“播放”按钮时为其赋值。而不是一次又一次地初始化

改变你的代码,希望它能起作用。

<body>
     <h1>Playing Audio</h1>
      <button onclick="playAudio('test.mp3')">Play Some Audio</button>
      <button onclick="stopAudio()">Stop Some Audio</button>
      </div>
     <script type="text/javascript" src="cordova-2.4.0.js"></script>
     <script type="text/javascript" src="js/index.js"></script>
     <script type="text/javascript">
        var media;
        app.initialize();
        function playAudio(src) {
        if (device.platform == 'Android') {
            src = '/android_asset/' + src;
        }

        media = new Media(src, success, error_error);

        media.play();

    }

    function success() {
        // ignore
    }

    function error_error(e) {
        alert('great error');
        alert(e.message);
    }

    function stopAudio() {
     if (media) {
         media = new Media(src, success, error_error);
         media.stop();
         }
    }
    </script>
</body>