關於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上測試可用

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