WEB开发网
开发学院手机开发Symbian 开发 Symbian 自定义桌面图像的响应 阅读

Symbian 自定义桌面图像的响应

 2010-03-11 16:11:00 来源:WEB开发网   
核心提示:最近研究了一下在待机界面上点击自己的图标和文字去响应对应的APP.总结一下,为自己走过的路留个脚印吧,也许可以供有需要的人参考.也算是我为Open source一小点贡献吧.直接进入主题了.本想找一个类似于时间控件的Plugin,画到桌面上.没有找到解决方案.希望NOKIA能尽快推出解决方法.这样只能在桌面上画自己的图

最近研究了一下在待机界面上点击自己的图标和文字去响应对应的APP.

总结一下,为自己走过的路留个脚印吧,也许可以供有需要的人参考.也算是我为Open source一小点贡献吧.

直接进入主题了.

本想找一个类似于时间控件的Plugin,画到桌面上.没有找到解决方案.希望NOKIA能尽快推出解决方法.

这样只能在桌面上画自己的图标或者文字,整个需求的难点在于,如何捕获到图标文字的焦点.

没有找到对应的解决方案,只能用替代方法解决,响应特定的按键来调起APP.

所需要用的技术如下:

1.监控桌面

2.图像文字的绘制

3.按键监控//注在应用程序在后台的情况下监控

4.响应指定的APP

图像文字绘制比较简单,在这里就不谈了.

1.监控桌面

需要用到捕获焦点变化事件EEventFocusGroupChanged. EEventFocusGroupChanged.事件产生的必要条件:

a.焦点事件是打开的

b.有焦点发生变化

代码如下:

void *****AppUi::ConstructL()

{

BaseConstructL();

iEikonEnv->RootWin().EnableFocusChangeEvents();//注这句是必须的(必要条件a)

...................

}

void *****AppUi::HandleWsEventL()

{

const TUid KUidMenu = { 0x101f4cd2 }; // The UID of the Menu applciation//用于模拟器待机桌面

const TUid KUidPhoneApp = { 0x100058b3 }; // for S60 2nd

const TUid KUidIdleApp = { 0x101FD64C }; // for S60 3rd

if ( aEvent.Type() == EEventFocusGroupChanged )

{

RWsSession& ws = iEikonEnv->WsSession();

TInt wgid = ws.GetFocusWindowGroup();

CApaWindowGroupName* gn = CApaWindowGroupName::NewLC(ws, wgid);

TUid aCurAppUid = gn->AppUid();

CleanupStack::PopAndDestroy(gn);

if ( aCurAppUid == KUidPhoneApp )

{

//此时为桌面,绘制指定的图像,文字

}

}

}

2.按键监控

主要用到RWindowGroup的CaptureKey方法

1 2  下一页

Tags:Symbian 定义 桌面

编辑录入:coldstar [复制链接] [打 印]
赞助商链接