用opencode或者openchamber的时候如何让手机常亮
最近在手机上远程vibe code,使用了open code和 openchamber工具,但是有一个问题,手机放在桌上查看进度的时候,老是自动锁屏。
经过测试,via浏览器比较好的支持了脚本插件,可以支持自动持续亮屏,而且缩小via浏览器到后台之后,自动息屏。非常满足需求。
如果是部分手机,可能对部分前台APP会强制杀死,请手动给 app加一个免杀的锁,不然长时间运行可能会被自动杀死。
我们可以在via浏览器 加入如下脚本:
// ==UserScript==
// @name 996996.xyz 自动屏幕常亮
// @namespace http://tampermonkey.net/
// @version 1.1
// @description 在可见时保持常亮,切到后台或关闭标签页时立即释放,允许系统正常息屏
// @author YourName
// @match *://*.996996.xyz/*
// @grant none
// @run-at document-end
// ==/UserScript==
(function() {
'use strict';
if (!('wakeLock' in navigator)) {
console.warn('当前浏览器或协议(需HTTPS)不支持 Wake Lock API');
return;
}
let wakeLock = null;
// 请求常亮锁
async function requestWakeLock() {
if (wakeLock !== null) return; // 已有锁,不重复请求
try {
wakeLock = await navigator.wakeLock.request('screen');
console.log('====== [WakeLock] 屏幕常亮已激活 ======');
wakeLock.addEventListener('release', () => {
console.log('[WakeLock] 锁已释放');
wakeLock = null;
});
} catch (err) {
console.error(`[WakeLock] 激活失败: ${err.name}, ${err.message}`);
}
}
// 主动释放常亮锁
async function releaseWakeLock() {
if (wakeLock !== null) {
await wakeLock.release();
wakeLock = null;
console.log('====== [WakeLock] 已主动释放锁,允许系统息屏 ======');
}
}
// 1. 初始化执行
requestWakeLock();
// 2. 核心修复:监听前后台切换状态
document.addEventListener('visibilitychange', async () => {
if (document.visibilityState === 'visible') {
// 回到前台,重新申请常亮
await requestWakeLock();
} else {
// 切到后台/切到桌面,立刻释放锁,允许手机正常息屏
await releaseWakeLock();
}
});
// 3. 移动端手势兜底(防止部分浏览器阻止无交互的自动请求)
const triggerEvents = ['click', 'touchstart'];
const handleGesture = async () => {
await requestWakeLock();
if (wakeLock !== null) {
triggerEvents.forEach(event => document.removeEventListener(event, handleGesture));
}
};
triggerEvents.forEach(event => document.addEventListener(event, handleGesture));
})();
评论