我可以阻止手机在网页上休眠吗

Can I prevent phone from sleep on a webpage

本文关键字:休眠 网页 手机 我可以      更新时间:2023-09-26

在应用程序中我可以使用http://developer.android.com/reference/android/os/PowerManager.WakeLock.html但是有没有一种方法可以保持网页运行并防止入睡?如果它至少能在安卓系统上运行,那就太好了。

您可以使用:https://github.com/richtr/NoSleep.js

在任何Android或iOS网络浏览器中防止显示器休眠并启用唤醒锁定。

请注意,该库在某些平台/浏览器上存在一些可靠性/性能问题。用户已经找到了问题评论和拉取请求中列出的解决方案,但由于回购所有者当前似乎不活跃,因此尚未添加这些解决方案。

在生产中使用之前,建议您检查这些拉取请求(和/或问题)以了解潜在的改进。

您可以使用唤醒锁web API(检查支持)

https://web.dev/wakelock/

在页面上播放假循环视频或音频

你可以用这个快速的例子将带有虚假数据的循环视频添加到你的页面,并防止移动设备睡眠:

// Create the root video element
var video = document.createElement('video');
video.setAttribute('loop', '');
// Add some styles if needed
video.setAttribute('style', 'position: fixed;');
// A helper to add sources to video
function addSourceToVideo(element, type, dataURI) {
    var source = document.createElement('source');
    source.src = dataURI;
    source.type = 'video/' + type;
    element.appendChild(source);
}
// A helper to concat base64
var base64 = function(mimeType, base64) {
    return 'data:' + mimeType + ';base64,' + base64;
};
// Add Fake sourced
addSourceToVideo(video,'webm', base64('video/webm', 'GkXfo0AgQoaBAUL3gQFC8oEEQvOBCEKCQAR3ZWJtQoeBAkKFgQIYU4BnQI0VSalmQCgq17FAAw9CQE2AQAZ3aGFtbXlXQUAGd2hhbW15RIlACECPQAAAAAAAFlSua0AxrkAu14EBY8WBAZyBACK1nEADdW5khkAFVl9WUDglhohAA1ZQOIOBAeBABrCBCLqBCB9DtnVAIueBAKNAHIEAAIAwAQCdASoIAAgAAUAmJaQAA3AA/vz0AAA='));
addSourceToVideo(video, 'mp4', base64('video/mp4', 'AAAAHGZ0eXBpc29tAAACAGlzb21pc28ybXA0MQAAAAhmcmVlAAAAG21kYXQAAAGzABAHAAABthADAowdbb9/AAAC6W1vb3YAAABsbXZoZAAAAAB8JbCAfCWwgAAAA+gAAAAAAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIVdHJhawAAAFx0a2hkAAAAD3wlsIB8JbCAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAIAAAACAAAAAABsW1kaWEAAAAgbWRoZAAAAAB8JbCAfCWwgAAAA+gAAAAAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAVxtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAEcc3RibAAAALhzdHNkAAAAAAAAAAEAAACobXA0dgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAIAAgASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAAFJlc2RzAAAAAANEAAEABDwgEQAAAAADDUAAAAAABS0AAAGwAQAAAbWJEwAAAQAAAAEgAMSNiB9FAEQBFGMAAAGyTGF2YzUyLjg3LjQGAQIAAAAYc3R0cwAAAAAAAAABAAAAAQAAAAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAEAAAABAAAAFHN0c3oAAAAAAAAAEwAAAAEAAAAUc3RjbwAAAAAAAAABAAAALAAAAGB1ZHRhAAAAWG1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAAK2lsc3QAAAAjqXRvbwAAABtkYXRhAAAAAQAAAABMYXZmNTIuNzguMw=='));
// Append the video to where ever you need
document.body.appendChild(video);
// Start playing video after any user interaction.
// NOTE: Running video.play() handler without a user action may be blocked by browser.
var playFn = function() {
    video.play();
    document.body.removeEventListener('touchend', playFn);
};
document.body.addEventListener('touchend', playFn);

在应用程序中,有几种方法可以做到这一点,但我想你的意思是只在移动网页中,通过Android在任何浏览器中查看。使用普通的HTML/Javascript/等。,我真的,真的很怀疑。

实际上,至少在特定情况下,使用Flash(在启用了插件的启用了Flash的手机上)可能会。我这么说是因为,在没有WAKE_LOCK权限的测试应用程序中,将此swf文件加载到WebView会在某些设备上导致以下异常:

java.lang.SecurityException:两者都没有用户#####当前进程都没有android.permission.WAKE_LOCK

然而,即使这真的奏效了,它也会有崩溃没有WAKE_LOCK权限的应用程序或浏览器的风险。这可能是由于Adobe Flash Player插件中的错误代码,而不是任何有意的功能。

如果您在Android上构建WebViewGold/WebView应用程序(而实际的网页/web应用程序位于这样的包装器中),这里提到的所有方法都将不起作用。但是你也可以设置

PREVENT_SLEEP = TRUE;

在Config.java中,它应该可以做到这一点。

在iOS设备上,每隔几秒钟用Javascript刷新一次页面就会让屏幕保持清醒。这似乎是正确的策略,希望安卓在未来的版本中会采用这一策略。