0

我正在使用 PhoneGap 3.0.0,我的 confic.xml 文件确实有所需的插件。我可以开始说当我运行我的代码时我的声音确实开始了,其他一切都正常。只有一件事不想工作。

我正在使用 Jquery 移动。

我无法停止音频。

我正在调用一个名为“stopAudio()”的函数,该函数读取全局变量“my_audio”并触发“stop()”函数。

这是我的代码。

索引.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();
}

控制器.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 回答