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

前端 未结 3 1239
梦毁少年i
梦毁少年i 2021-01-18 08:33

I need to do on the website some feature to disabled idle/sleep phone. Does anyone try make this on phone with android ? is it in any way possible?

相关标签:
3条回答
  • 2021-01-18 09:11

    JavaScript in Chrome on Android (7.0) indeed shuts down after 5 min in sleep mode. Aaargh!

    To prevent that, we need e.g. an audio object:

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

    and play it at regular intervals:

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

    Note that the Audio object has to be "unlocked" in a user gesture callback. This can be accomplished e.g. by having a grey CSS overlay with a big fat dummy "Start" button, whose onClick() callback only hides the overlay and calls dummyAudio.load().

    0 讨论(0)
  • 2021-01-18 09:19

    We strongly don't encourage developers to do this at all. However it is possible. You can simply have a video playing on the page and the device won't go to sleep. This means you could have single frame video set to auto-loop and play (requires a user interaction)

    Richard Tibbett has created NoSleep.js to simplify the process for developers.

    0 讨论(0)
  • 2021-01-18 09:36

    There is an experimental implementation of Wake Lock API (http://www.w3.org/TR/wake-lock/) in Chromium starting I believe from version 48.0.2551.0. Though this only works when the experimental features are enabled in the browser e.g. via --enable-experimental-web-platform-features command line switch, so this is not yet useful for the general audience. In the meantime I think it is possible to use the video playback trick as suggested by Kinlan.

    0 讨论(0)
提交回复
热议问题