用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));

})();

评论

请输入您的评论. 可以使用维基语法:
 
android/使用技巧/浏览器/使用opencode或者openchamber的时候如何让浏览器常亮.txt · 最后更改: 2026/06/26 16:58