关于Inactivity()函数配合活动对象,获取手机不活动时间,实现特定功能

 Inactivity()函数官方SDK的解释为

 

Requests an event if no activity occurs within the specified interval.

 

所以可以使用Inactivity()配合AO获取手机不活动的时间,实现某些特定功能

 

先看Start()函数的实现

void CActiveBall::Start(TTimeIntervalSeconds aTimeout)
{
 Cancel();
 iTimeout = aTimeout;
 iInactivity = ETrue;
 Inactivity(iTimeout);
}

void CActiveBall::Stop()
{
 Cancel();
}

 

当然数据的初始化是必不可少的,下面一并贴出
// constructor
CActiveBall::CActiveBall(MObserver& aObserver)
:CTimer(EPriorityStandard), iObserver(aObserver)
{
 // No implementation required
}

// EPOC default constructor can leave.
void CActiveBall::ConstructL()
{
 //this is explicitly decareded in the CTimer document
 CTimer::ConstructL();

 // The following line is also essential!
 CActiveScheduler::Add(this);
}


void CActiveBall::RunL()
{
 if(iStatus!=KErrNone)
 {
  return;
 }

 if (iInactivity)
 {
  TTimeIntervalSeconds inactivity = User::InactivityTime().Int();
  if (inactivity >= iTimeout)
  {
   iObserver.StartDisPlay();    //设置的获取到的手机不活动时间已到,调用某设置

   if(!IsActive())
   {
    Inactivity(0);
    iInactivity = EFalse;
   }
  }
  else
  {
   Inactivity(iTimeout);
  }
 }
 else
 {
  iObserver.CloseDisPlay();     //手机处于活动状态,调用某设置 
  if (!IsActive())
  {
   Inactivity(iTimeout);
   iInactivity = ETrue;
  }
 }

 if (!IsActive())
 {
  SetActive();
 }
}

 

好了呵呵。

以上代码在3rd MR ,3rd fp1上测试可用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章