Symbian判断是否是待机界面

一些桌面软件会在用户把手机切换到桌面(desktop)时显示一些特定的信息,如图片,滚动文字等,达到一种个性桌面的效果,这里就介绍一种检测“桌面”的方法。

S60 2nd的“桌面”是电话应用,S60 3rd的“桌面”是Idle.exe,由此我们可以通过当前焦点程序的UID来判断手机是否处在“桌面”状态。

用户在操作手机时候会产生一些事件,其中有一个就是Focus Changed Event,所以我们只需获取这个事件通知,并在这个事件到来时获取焦点程序的UID进行比较就可以了。

平台
S60 2nd,3rd

1、使自己的程序接收Focus Changed Event:

void YourAppUi::ConstructL(void)
{

 // some code

   iEikonEnv->RootWin().EnableFocusChangeEvents();

   // some code
}
2、处理事件:

void HandleWsEventL(const TWsEvent& aEvent,CCoeControl* aDestination)
{
   // const TUid KUidPhoneApp = { 0x100058b3 }; // for S60 2nd
   const TUid KUidIdleApp = { 0x101FD64C }; // for S60 3rd

   if ( aEvent.Type() == 21)//EEventFocusGroupChanged
   {
       // 获取当前焦点程序的UID
       RWsSession& ws = iEikonEnv->WsSession();
       TInt wgid = ws.GetFocusWindowGroup();
       CApaWindowGroupName* gn = CApaWindowGroupName::NewLC(ws, wgid);
       TUid aCurAppUid = gn->AppUid();
       CleanupStack::PopAndDestroy(gn);


       if ( aCurAppUid == KUidPhoneApp )
       {
           // 当前为桌面
 
         //程序1

       }
       else
       {
         //程序2

       }
   }
   
   CAknAppUi::HandleWsEventL(aEvent, aDestination);
}


注意:此功能只是在进入桌面的时候,会执行程序1,也就是确认是待机桌面,当在待机桌面上按下任意一键值的时候,就会执行 //程序2了。也就是切换到别的桌面了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值