防止 Android chrome 闲置/自动锁定/休眠 phone?

Prevent Android chrome from going idle / auto-locking / sleeping phone?

我需要在网站上禁用一些功能 idle/sleep phone。有没有人尝试用 android 在 phone 上做这个?有可能吗?

我们强烈不鼓励开发者这样做。然而这是可能的。您只需在页面上播放一段视频,设备就不会进入休眠状态。这意味着您可以将单帧视频设置为自动循环播放(需要用户交互)

Richard Tibbett 创建了 NoSleep.js 来简化开发人员的流程。

Chromium 中有一个唤醒锁 API (http://www.w3.org/TR/wake-lock/) 的实验性实现,我相信从版本 48.0.2551.0 开始。尽管这仅在浏览器中启用实验性功能时有效,例如通过 --enable-experimental-web-platform-features 命令行开关,所以这对一般观众来说还没有用。与此同时,我认为可以使用 Kinlan 所建议的视频播放技巧。

JavaScript in Chrome on Android (7.0) 确实在睡眠模式下 5 分钟后关闭。啊啊啊!

为了防止这种情况,我们需要例如音频对象:

<audio id="dummyAudio">
   <source src="silent.ogg" type="audio/ogg">
   <source src="silent.mp3" type="audio/mpeg">
</audio>

并定期播放:

function playDummyAudio() { dummyAudio.play(); }    
$(function() {
   var dummyAudio = document.querySelector('#dummyAudio');
   window.setInterval(playDummyAudio, 60 * 1000);
}

请注意,音频对象必须在用户手势回调中 "unlocked"。这可以完成,例如通过一个灰色 CSS 叠加层和一个大胖虚拟 "Start" 按钮,其 onClick() 回调仅隐藏叠加层并调用 dummyAudio.load().