Javascript 设备锁定时停止播放HTML5音频(Android和iOS)
我正在开发一款HTML5游戏,具有循环音乐和音效。我用的是电话号码 当我最小化Android设备和iOs设备上的浏览器时,声音会继续播放。当设备被锁定时,情况更是如此!跨浏览器(Safari、Chrome、Android Native、Firefox)也是如此 是否有一个简单的解决方案,或者检测页面处于非活动状态并禁用声音是一个更可能的解决方案Javascript 设备锁定时停止播放HTML5音频(Android和iOS),javascript,html,audio,Javascript,Html,Audio,我正在开发一款HTML5游戏,具有循环音乐和音效。我用的是电话号码 当我最小化Android设备和iOs设备上的浏览器时,声音会继续播放。当设备被锁定时,情况更是如此!跨浏览器(Safari、Chrome、Android Native、Firefox)也是如此 是否有一个简单的解决方案,或者检测页面处于非活动状态并禁用声音是一个更可能的解决方案 我尝试了这个,认为当页面关闭时会触发超时,但它没有:( 对我有用的是以下内容(使用jQuery v2.1.4): 每当Safari窗口失去焦点时,它都
我尝试了这个,认为当页面关闭时会触发超时,但它没有:(
对我有用的是以下内容(使用jQuery v2.1.4):
每当Safari窗口失去焦点时,它都会暂停音轨。当它恢复焦点时,它会继续。在iPhone Safari iOS 9上为我工作。你试过使用?@ThiefMaster吗?我没有,它看起来很有趣,但没有足够的设备支持。只有最新的移动操作系统iOS 7版和安卓4.4.Soun支持dJS内部不处理这个问题。我还打算推荐页面可见性API,以检测页面失去焦点并禁用响应声音。祝你好运。@OJay我理解这一点。页面可见性API似乎是最好的(唯一的)解决方案。尽管它跨平台的兼容性很差。它只有android 4.4支持(KitKat,尚未发布)和刚刚发布的iOS7。因此,该解决方案实际上只能解决25%用户的问题(使用之前发布的游戏中的谷歌分析)
var timeout = -1;
setInterval(function(){
if(timeout!=-1) clearTimeout(timeout);
timeout = setTimeout(function(){
AudioManager.setMute(true);
}, 200);
, 100);
// Declare soundtrack as SoundJS object
soundtrack = createjs.Sound.play("main", {loop: -1});
$(window).focus(function() {
// Unpause when window gains focus
soundtrack.paused = false;
}).blur(function() {
// Pause when window loses focus
soundtrack.paused = true;
});