我们正在使用JQuery在HTML5中开发一个App。
是否有一种方法/方法,在JavaScript或其他技术中,保持屏幕“开启”?
感谢。
答案 0 :(得分:4)
Google的WebVR polyfill在Chrome上有一个way to do this。它基本上创建了一个小视频(带有数据URL,因此无需额外下载)并循环播放。
这似乎是一个黑客,所以如果将来不可靠,我不会感到惊讶。
他们的代码也通过触发位置更新在iOS上实现了相同的功能。
以下是Android的相关代码:
var Util={};
Util.base64 = function(mimeType, base64) {
return 'data:' + mimeType + ';base64,' + base64;
};
var video = document.createElement('video');
video.setAttribute('loop', '');
function addSourceToVideo(element, type, dataURI) {
var source = document.createElement('source');
source.src = dataURI;
source.type = 'video/' + type;
element.appendChild(source);
}
addSourceToVideo(video,'webm', Util.base64('video/webm', 'GkXfo0AgQoaBAUL3gQFC8oEEQvOBCEKCQAR3ZWJtQoeBAkKFgQIYU4BnQI0VSalmQCgq17FAAw9CQE2AQAZ3aGFtbXlXQUAGd2hhbW15RIlACECPQAAAAAAAFlSua0AxrkAu14EBY8WBAZyBACK1nEADdW5khkAFVl9WUDglhohAA1ZQOIOBAeBABrCBCLqBCB9DtnVAIueBAKNAHIEAAIAwAQCdASoIAAgAAUAmJaQAA3AA/vz0AAA='));
addSourceToVideo(video, 'mp4', Util.base64('video/mp4', 'AAAAHGZ0eXBpc29tAAACAGlzb21pc28ybXA0MQAAAAhmcmVlAAAAG21kYXQAAAGzABAHAAABthADAowdbb9/AAAC6W1vb3YAAABsbXZoZAAAAAB8JbCAfCWwgAAAA+gAAAAAAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIVdHJhawAAAFx0a2hkAAAAD3wlsIB8JbCAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAIAAAACAAAAAABsW1kaWEAAAAgbWRoZAAAAAB8JbCAfCWwgAAAA+gAAAAAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAVxtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAEcc3RibAAAALhzdHNkAAAAAAAAAAEAAACobXA0dgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAIAAgASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAAFJlc2RzAAAAAANEAAEABDwgEQAAAAADDUAAAAAABS0AAAGwAQAAAbWJEwAAAQAAAAEgAMSNiB9FAEQBFGMAAAGyTGF2YzUyLjg3LjQGAQIAAAAYc3R0cwAAAAAAAAABAAAAAQAAAAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAEAAAABAAAAFHN0c3oAAAAAAAAAEwAAAAEAAAAUc3RjbwAAAAAAAAABAAAALAAAAGB1ZHRhAAAAWG1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAAK2lsc3QAAAAjqXRvbwAAABtkYXRhAAAAAQAAAABMYXZmNTIuNzguMw=='));
video.play();
答案 1 :(得分:2)
没有办法只编写javascript或其他网页代码来保持屏幕开启,而无需编写至少一些java代码。
为了解释为什么我这么肯定,如果你是通过html5开发一个网络应用程序,你必须使用WebView作为你的应用程序的主要“屏幕”来托管你的html,javascript代码。因此,您的“Web代码”不会直接在应用程序中运行,而是使用View作为其持有者。正如你猜测的那样,你不能只是从一些甚至没有在本机部分运行的代码中锁定屏幕。
如果您不是Android编程专家,我可以提供一种非常简单的方法来保持屏幕显示。在我使用WebView的第一个活动中,在onCreate
之后添加super
:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
答案 2 :(得分:1)
最简单的方法是转到“设置”,“开发者选项”,然后选择“充电时保持清醒”。无需编码任何代码!
这假设OP希望在连接到外部电源时将屏幕保持在 ,这是合理的,否则当内部电池耗尽时,没有聪明的编码会阻止屏幕快速关闭
外部电源可以像便携式USB电池一样简单。当它最终变空时,设备将像往常一样进入休眠状态,但仍可在其内部电池上运行。
我在这里找到了这个解决方案: posting about keeping the screen on
答案 3 :(得分:0)
继续打开设备并不取决于操作系统,而是取决于浏览器。 Chrome正在实施Wake Lock API,但仍处于试验阶段。
在完全可用之前,还可以通过在后台播放base64视频来模拟api。这将锁定所有浏览器的睡眠模式。
处找到一个Web组件实现。答案 4 :(得分:0)
未来的答案 - 因为它现在是实验性的 - 是使用名为的新 API:Screen Wake Lock API
我认为您可以将其与以前的解决方法答案混合使用
// Create a reference for the Wake Lock.
let wakeLock = null;
// create an async function to request a wake lock
try {
wakeLock = await navigator.wakeLock.request('screen');
statusElem.textContent = 'Wake Lock is active!';
} catch (err) {
// try other solutions here ...
}
您可以关注此功能的支持here