1

いくつかの曲を再生できる単純な phonegap アプリケーションを作成しようとしました。これまでのところ、私のアプリは曲を再生できますが、再生ボタンを 2 回タップすると:

 <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>

ストップボタンを機能させる方法を知っている人はいますか?私の悪い英語とドイツからの挨拶でごめんなさい!

4

2 に答える 2

2

オーディオがaudioPlayingで再生されたときにフラグを作成し、オーディオの再生を再試行するたびにそのフラグを確認できます。これは、ここで最も簡単な解決策です。

また、Media オブジェクトの 2 つの異なるインスタンスを使用しています。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>

于 2013-05-15T11:43:42.497 に答える