Symbian 自定义桌面图像的响应
来源:互联网 发布:入侵五角大楼的网络 编辑:程序博客网 时间:2024/04/19 20:17
最近研究了一下在待机界面上点击自己的图标和文字去响应对应的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方法
在NOKIA论坛里可以找到源码.搜索CKeyCapturer
4.响应指定的APP
RApaLsSession appArcSession;
ret = KErrNone;
CleanupClosePushL(appArcSession);
ret = appArcSession.Connect();
CApaCommandLine* cmdline = CApaCommandLine::NewLC();
TRAP(ret, cmdline->SetCommandL(EApaCommandRun));
TRAP(ret, cmdline->SetExecutableNameL(****Name);//加载指定应用程序的名字
ret = appArcSession.StartApp(*cmdline);//启动指定的APP
CleanupStack::PopAndDestroy(2, &appArcSession);
到此,整个需求处理完成!!
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方法
在NOKIA论坛里可以找到源码.搜索CKeyCapturer
4.响应指定的APP
RApaLsSession appArcSession;
ret = KErrNone;
CleanupClosePushL(appArcSession);
ret = appArcSession.Connect();
CApaCommandLine* cmdline = CApaCommandLine::NewLC();
TRAP(ret, cmdline->SetCommandL(EApaCommandRun));
TRAP(ret, cmdline->SetExecutableNameL(****Name);//加载指定应用程序的名字
ret = appArcSession.StartApp(*cmdline);//启动指定的APP
CleanupStack::PopAndDestroy(2, &appArcSession);
到此,整个需求处理完成!!
- Symbian 自定义桌面图像的响应
- Symbian 自定义桌面图像的响应
- symbian 中如何自定义CBA 和 响应
- 显示桌面的困惑,不响应“显示桌面”(ToggleDesktop)
- 谷歌的自定义桌面
- 将Bing每日桌面图像变成你的Windows7桌面
- symbian上自定义的贴图函数
- symbian上自定义的贴图函数
- symbian资源的自定义和解析
- 02 ffmpeg获取桌面图像的编程
- symbian图像显示
- symbian图像显示
- Symbian学习笔记(5):加载JPEG图像的方法
- symbian自定义动态菜单
- symbian中自定义控件
- symbian自定义动态菜单
- Symbian 自定义控件
- symbian 自定义TabGroup
- tcsh编程学习3
- Symbian主题处理
- 开始CUDA的研究
- 【代码示例】判断字符串是否可转换为数字并格式化0.00为0
- c# 疑难(一)之打开“OpenFileDialog”文本对话框后默认路径改变问题和解决方法
- Symbian 自定义桌面图像的响应
- 国外电子工程师们和国内电子工程师
- NAT-PT 协议转换网关的设计与实现
- 一些流行且免费的Maven仓库工具
- HTTP Range
- ASP.NET 缓存:方法和最佳实践
- 【代码示例】动态给HtmlTable添加行数据
- httpclient
- Symbian OS 打包文件(.pkg)详解及问题总结