1.三版中,背景灯开/关、闪烁可以通过CHWRMLight类控制:
Void LightOnL(Tint aTarget, Tint aDuration, Tint aIntensity, TBool aFadeIn)
aTarget: 目标设备,一般为EPrimaryDisplay
aDruation: 持续时间,为0时表示一直亮,毫秒为单位
aIntensity: 背景灯强度,一般为默认值
aFadeIn: 是否慢慢变化
void LightOffL(Tint aTarget, Tint aDuration, TBool aFadeIn)
控制背景灯关闭,参数同上
Void LightBlinkL(TInt aTarget, TInt aDuration, TInt aOnDuration, TInt aOffDuration, TInt aIntensity)
控制背景灯闪烁,参数同上
aOnDuration: 开持续时间
aOffDuration: 关持续时间
void ReserveLightL(Tint aTarget, TBool aRestoreState, TBool aForceNoCCoeEnv)
aTarget: 目标设备
aRestoreState: 是否保存
aForceNoCCoeEnv: 前后台切换时背景灯设置是否改变
该函数用于挂起低优先级的背景灯设置,当调用打开或关闭背景灯之前必须调用该函数,否则操作无效
Void ReleaseLight(TInt aTarget)
释放当前背景灯设置,如果没有保存的设置,恢复系统默认设置,退出程序时需要调用
3.关于设置背景灯间隔时间,可以开启定时器,通过User::InactivityTime()定时获取用户闲置时间,然后判断该值是否大于用户设置的间隔时间来打开或者关闭背景灯,可以考虑使用已有的定时器
User::ResetInactivityTime()
以下代码仅供参考:
TTimeIntervalSeconds seconds = User::InactivityTime();
TInt target = CHWRMLight::EPrimaryDisplay;
if (seconds.Int() > 10)
{
if (CHWRMLight::ELightOn == iLight->LightStatus(target))
{
iLight->ReserveLightL(target);
iLight->LightOffL(target, 0);
}
}
else
{
if (CHWRMLight::ELightOff == iLight->LightStatus(target))
{
iLight->ReserveLightL(target);
iLight->LightOnL(target, 0);
}
}