如何检测手机当前为“桌面”(desktop)状态
2009-12-30 11:25
260 查看
#ifdef __SERIES60_3X__
const TUid KUidStandBy = { 0x101fd64c }; // For 3rd Edition
const TUid KUidStandBy_FP2 = { 0x102750F0 }; // For 3rd edition Emulator and FP2 devices
#else // #ifdef __SERIES60_3X__
const TUid KUidStandBy = { 0x100058b3 }; // For 2nd Edition
#endif // #ifdef __SERIES60_3X__
一些桌面软件会在用户把手机切换到桌面(desktop)时显示一些特定的信息,如图片,滚动文字等,达到一种个性桌面的效果,这里就介绍一种检测“桌面”的方法。
S60 2nd的“桌面”是电话应用,S60 3rd的“桌面”是Idle.exe,由此我们可以通过当前焦点程序的UID来判断手机是否处在“桌面”状态。
用户在操作手机时候会产生一些事件,其中有一个就是Focus Changed Event,所以我们只需获取这个事件通知,并在这个事件到来时获取焦点程序的UID进行比较就可以了。
平台
S60 2nd,3rd
1、使自己的程序接收Focus Changed Event:
2、处理事件:
const TUid KUidStandBy = { 0x101fd64c }; // For 3rd Edition
const TUid KUidStandBy_FP2 = { 0x102750F0 }; // For 3rd edition Emulator and FP2 devices
#else // #ifdef __SERIES60_3X__
const TUid KUidStandBy = { 0x100058b3 }; // For 2nd Edition
#endif // #ifdef __SERIES60_3X__
From Forum Nokia Wiki
介绍一些桌面软件会在用户把手机切换到桌面(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 CDrawWindowTestAppUi::HandleWsEventL(const TWsEvent& aEvent,CCoeControl* aDestination) { // const TUid KUidPhoneApp = { 0x100058b3 }; // for S60 2nd const TUid KUidIdleApp = { 0x101FD64C }; // for S60 3rd if ( aEvent.Type() == 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 ) { // 当前为桌面 } else { } } // 不要忘了这里^_^ CAknAppUi::HandleWsEventL(aEvent, aDestination);
}
from : Cxt_programmer
相关文章推荐
- 如何检测手机当前为“桌面”(desktop)状态
- Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
- Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
- Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
- Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
- Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
- Android如何获取当前手机的网络状态
- iOS如何获取手机当前的网络状态
- iOS如何获取手机当前的网络状态
- iOS中如何利用AFNetworking检测当前的网络状态
- [Android开发常见问题-6] 如何检测手机当前网络是否可用?
- linux下如何关闭防火墙?如何查看防火墙当前的状态
- BLE固件开发--如何获取当前连接状态
- 如何修改手机在PC桌面右下角弹出的“MT65xx Android Phone”提示框
- AFNetworking 3.0检测App当前的网络状态
- IOS开发获得当前手机的网络状态
- 关于DataGridView中如何接收处于编辑状态下的当前信息-打击我做程序员的信心呀!
- ios如何获取手机的网络状态和运营商名称
- 如何查看当前手机的UserAngent