Cordova(Android)。当应用程序最小化时禁用音频播放。

8

当启动时,声音开始播放,最小化时不会停止。我该怎么做?通过以下方式:

 document.addEventListener("pause", onPause, false); 
 document.addEventListener("resume", onResume, false);

我无法做到。 暂停事件监听器 无法完成。帮帮我。对不起,我的英语不好。

  • P.S. 我需要写很多请求

var app = {
    initialize: function () {
        this.bindEvents();
    },
    bindEvents: function () {
        document.addEventListener('deviceready', this.onDeviceReady, false);
    },
    onDeviceReady: function () {
        app.receivedEvent('deviceready');

        var myMedia = new Media("/android_asset/www/audio/sample.mp3")
        myMedia.play({
            playAudioWhenScreenIsLocked: false
        });
    },

    receivedEvent: function () {

    }
};

app.initialize();
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">
    <meta name="format-detection" content="telephone=no">
    <meta name="msapplication-tap-highlight" content="no">
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
    <title>SOOOUND!</title>
</head>
<body>
    SOOOUND!
    <script type="text/javascript" src="cordova.js"></script>
    <script type="text/javascript" src="js/index.js"></script>
</body>

</html>

2个回答

6

您需要在应用程序中添加一个暂停事件监听器,以便在应用程序进入后台时监听。

document.addEventListener("onDeviceReady", function() {

    // Adds pause event
    document.addEventListener("pause", manageAppPause);

    // Adds resume event
    document.addEventListener("resume", manageAppResume);
});


function manageAppPause() {

    // Check if audio is playing
    // If it is, pause it
}


function manageAppResume() {

    // If you want, check if the audio was playing before the app was put into background
    // If so, resume audio
}

不是的 - 实际上,您需要在manageAppPause中输入您需要的任何代码来暂停正在播放的音频... - Kody R.
做如下操作:函数 管理应用暂停() {音频元素暂停();}函数 管理应用恢复() {音频元素播放();} - Andrey Z.
检查一下并在manageAppPause函数内添加console.log("Paused"),以确保事件实际上被触发。 - Kody R.

2

var app = {
    initialize: function () {
        this.bindEvents();
    },
    bindEvents: function () {
        document.addEventListener('deviceready', this.onDeviceReady, false);
        
    },
    onDeviceReady: function () {
        var myMedia = new Media("/android_asset/www/audio/sample.mp3")
        myMedia.play({
            playAudioWhenScreenIsLocked: false
        });
        document.addEventListener('pause', onPause, false);
        document.addEventListener('resume', onResume, false);
        function onPause() {
            myMedia.pause();
        };
        function onResume() {
            myMedia.play();
        };
    },

};

app.initialize();
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">
    <meta name="format-detection" content="telephone=no">
    <meta name="msapplication-tap-highlight" content="no">
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
    <script type="text/javascript" src="cordova.js"></script>
    <script type="text/javascript" src="js/index.js"></script>
    <title>SOOOUND!</title>
</head>
<body>
    SOOOUND!
</body>

</html>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接