0

私は PhoneGap 3.0.0 を使用していますが、confic.xml ファイルには必要なプラグインが含まれています。コードを実行するとサウンドが開始され、それ以外はすべて機能すると言い始めることができます。働きたくないことが1つだけあります。

Jquery モバイルを使用しています。

オーディオを止めることはできません。

グローバル変数「my_audio」を読み取り、「stop()」関数を起動する「stopAudio()」という関数を呼び出しています。

これが私のコードです。

索引.html

<a href="#stopaudio" data-role="button">Stop Audio</a>

AudioHandler.js

document.addEventListener("deviceready", onDeviceReady, false);

var my_media = null;

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);
    }
}   


function stopAudio() {
    my_media.stop();
}

controller.js

$("#stopaudio").click(function() {
    stopAudio();
});

使用例:

playAudio("/android_assets/www/mysound.mp3");

だから私はこれらの3つのファイルを持っています。私が投稿したのは少量のコンテンツですが、それらのファイルの他のコンテンツは音声とは関係ありません。また、すべてをコメントアウトしてみました。

つまり、基本的に「controller.js」はクリックが検出されるファイルであり、そこから AudioHandler.js から来る関数「stopAudio()」が呼び出されます。

電話の起動時にオーディオが開始されます。

オーディオを止めることはできません。

アイデアが不足しています。どんな助けでも大歓迎です:-)

ありがとう :)

4

1 に答える 1

2

my_mediaここでローカル変数として宣言しました:

try {
        var my_media = new Media(url,

グローバルにしたいので、次を削除しvarます。

function playAudio(url) {
    try {

        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);
    }
}   
于 2013-10-14T10:52:18.453 に答える