Cordova Media Plugin多种音频功能

时间:2018-07-06 12:30:41

标签: javascript cordova ionic-framework cordova-plugins phonegap

我是Cordova的新手,我很想找到解决方案,我的应用程序中有20种声音,当我运行该应用程序时,该应用程序首先单击“仅音频”,然后忽略/拒绝其他声音 代码:

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

function onDeviceReady() {
    document.querySelector("#playMp3Mild").addEventListener("touchend", playMp3Mild, false);
    document.querySelector("#stop").addEventListener("touchend", stopAudio, false);
    document.querySelector("#pause").addEventListener("touchend", pauseAudio, false);

};

media = null;
mediaTimer = null;


function playMp3Mild(src) {
    mp3URL = getMediaURL(src);
    if(media === null){
    media = new Media(mp3URL , null, mediaError);
    }
    media.setVolume(0.1);
    media.play();
}

      function stopAudio() {
            if (media) {
                media.stop();
            }
            clearInterval(mediaTimer);
            mediaTimer = null;
        }


 function getMediaURL(s) {
     if(device.platform.toLowerCase() === "android") return "/android_asset/www/" + s;
     return s;
 }

function mediaError(e) {

}

我尝试删除此行if(media === null) 这是可行的,但现在我又遇到了另一个问题,所有音频同时工作。 非常抱歉我的英语不好,我相信与社区合作会更好

1 个答案:

答案 0 :(得分:0)

您可能想先尝试停止旧媒体,因为您覆盖了媒体变量,而不是停止旧媒体。然后将旧媒体值设置为null,这样您的if(media === null)语句将返回true。 media.stop()不会使媒体等于null。 请尝试以下操作,并告诉我们是否适合您。

function playMp3Mild(src) {
    mp3URL = getMediaURL(src);
    stopAudio();
    if(media === null){
    media = new Media(mp3URL , null, mediaError);
    }
    media.setVolume(0.1);
    media.play();
}

function stopAudio() {
    if (media) {
        media.stop();
    }
    clearInterval(mediaTimer);
    media = null;
    mediaTimer = null;
}