全局背光自动调整

使用autolight控件可以完成背光在一定时间后自动减暗,但是这样每个页面都需要放置一个autolight控件,而且不好统一设定变暗的时间;而在整个产品的设计中,全局背光调整是一个重要的设计,要实现这个功能,可以考虑对page控件进行修改,毕竟每个页面都需要加载page控件;

实现方法:

第一步:修改page控件(20220425之后的page控件已经修改)
//添加如下属性:
int sec=30;#defattr(sec,int,"sec 秒屏幕无操作,则开始降低亮度");
int btime=10;#defattr(btime,int,"降低亮度的定时值,单位10ms,设置为10,表示每100ms亮度减5");
int hblight=100;#defattr(hblight,int,"正常工作亮度,或者说恢复亮度");
int lblight=1;#defattr(lblight,int,"最低亮度");
int secjs=30;    //正常工作秒计数
int bl=10;    //当前亮度

//在create方法中添加以下语句,用于初始化时间
void create()
{    hblight=getsysval(0x10);    //获取背光
    sec=bind_get("休眠");    //休眠时间
    if (sec==0) settimer(0);
    secjs=sec;
    bl=hblight;
    //dr=bind_get("页面方向");
}

//在ontimer事件中添加对背光的定时控制
void ontimer()
{   //在此书写有关定期器对数据的修改代码
    int n;
    if (secjs>0){
        //正常检测计数
        n=getsysval(5);    //获取触摸计数
        if (n==0){
            //表示没有触摸
            secjs--;
        }
        else{
            //有触摸,恢复计数
            secjs=sec;
        }
    }
    else{
        //需要降低背光
        n=getsysval(5);    //获取触摸计数
        if (n>0) {
            //恢复背光;
            secjs=sec;
            bl=hblight;
            settimer(100);
            blight(bl,0);
        }
        else{
            //降低背光亮度
            if (bl>lblight){
                settimer(btime);
                bl=bl-5;
                blight(bl,0);
            }
            else{
                if (bl<lblight){
                    bl=lblight;
                    blight(bl,0);
                }
            }
        }
    }
}

也可以修改page的属性参数调整默认时间等参数;

第二步:ini参数设置初始化变量

增加"休眠:0"

第三步:添加设置界面

void s4.onclick()
{
    bind_set("休眠",s1.val);
    blight(s3.val,1);
    memsave();
    gopage(10);

}

s3.val=getsysval(0x10);    //获取背光
s1.val=bind_get("休眠");    //休眠时间

页面进入的时候,从数据固化区中读取“休眠”对应的时间,并且赋值给s1控件;

当点击“保存并生效”,将设置的数值存储到数据固化区中;