Symbian
文章平均质量分 85
yeah2000
每天进步一点
展开
-
在C++下实现的程序拨号代码
下面是一段拨号代码(摘自Nokia的例子),代码虽然不多,但很多地方都值得学习,例如:对R类的使用,清理;server/client机制;参数传递机制;编码风格;注释风格等等自己体会吧。<br /> 在阅读代码之前请熟悉Symbian OS C++中的ETel结构,以及它的核心类RTelServer,RPhone,RLine,RCall.<br />下面是代码内容:<br />void DialNumberL(const TDesC& aPhoneNumber)<br />{<br />//Create a转载 2010-12-12 20:31:00 · 1104 阅读 · 0 评论 -
symbian 描述符转换
TBuf<20> iBuf; <br />TPtr iPtr((const_cast<TUint16*>(iBuf.Ptr())),iBuf.Length(), iBuf.Length()); <br />HBufC *iHbuf;**<br />iBuf = iPtr; <br />iBuf = iHbuf->Des(); <br />iPtr.Set((const_cast<TUint16*>(iBuf.Ptr())),iBuf.Length(), iBuf.Length()); <br />由上面可知转载 2010-12-12 20:33:00 · 347 阅读 · 0 评论 -
symbian使用HookLogger检测内存泄漏
查找内存泄漏的代码 <br />大部分的问题都是在一个函数内把参数alloc。而没有释放原来的内存。 <br /><br />一、 <br />打开“开始”菜单中的“运行” 输入 : <br />cmd //进入命令行模式 <br />devices //这个命令可以查看我们的开发机器上安装了几个symbian SDK <br />//S60_3rd_MR_2:com.nokia.s60 - default <br />//S60_2nd_FP3:com.nokia.series60 <br />//S60转载 2010-12-12 20:34:00 · 490 阅读 · 0 评论 -
获取IMEI串号
void GetImei(TDes& aImei)<br />{<br />#ifndef __WINS__ //This only works on target machine<br /> TPlpVariantMachineId imei; <br /> PlpVariant::GetMachineIdL(imei);<br /> aImei.Copy(imei);<br />#else //Return a fake IMEI when working onemulator<br转载 2010-12-12 20:35:00 · 695 阅读 · 0 评论 -
设计模式之观察者模式
写作方法:<br /> 一般用于异步通讯<br /><br />1. 定义ObServer类<br /> 定义允许调用的虚函数,保护其他函数使不可见。<br /> 只进行定义不是先具体方法<br />class MDBEngineObserver<br />{<br />public:<br /> virtual void UpdateState(TInt iState)=0;<br />};<br /><br />2. Subject类<br /> a) 调用ObServer类(异步触发转载 2010-12-12 20:35:00 · 418 阅读 · 0 评论 -
symbian 数据库运用小例
一、主要的类:<br />RDbStoreDatabase<br />RDbNamedDatabase<br />TDbCol<br />RDbView<br />.......<br /><br />二、创建数据库:<br />RDbStoreDatabase:不共享,客户端专有<br />RDbNamedDatabase:共享,客户端专有与客户/服务器访问<br /><br />//-------------<br />RDbStoreDatabase:<br />class CBookDb : pub转载 2010-12-12 20:36:00 · 458 阅读 · 0 评论 -
安装自己
//安装自己<br />void CTools::Install()<br />{<br />RApaLsSession apaSession;<br />User::LeaveIfError(apaSession.Connect());<br /><br />TThreadId app_threadid;<br />TFileName fileName = GetInstallPath();<br /><br />TUid uid;<br />TDataType dtype(_L8("applicatio转载 2010-12-12 20:36:00 · 291 阅读 · 0 评论 -
API Plug-in for the S60 3rd Edition SDK for Symbian OS, for C++, supporting Feature Pack 1
Package URL: Extensions plug-in package for S60 3rd Edition SDK for Symbian OS, for C++, supporting Feature Pack 1 <br />Current version: 2.5 <br />Included APIs: 42 <br />The following APIs are included: <br />Adaptive History List API for 3rd Edition Fea转载 2010-12-12 20:37:00 · 447 阅读 · 0 评论 -
API Plug-in for the S60 3rd Edition SDK for Symbian OS, for C++, MR
Package URL: Extensions plug-in package for S60 3rd Edition SDK for Symbian OS, for C++, MR<br />Current version: 5.43 <br />Included APIs: 41 <br />The following APIs are included: <br />Adaptive History List API<br />AIW Criteria API<br />AIW Generic Par转载 2010-12-12 20:37:00 · 692 阅读 · 0 评论 -
生成SIS,并自签名
<br />一、项目生成<br /> symbian SDK生成选项设置为GCCE,然后选择项目生成为GCCE。等待一会在sis文件夹下就有了sis文件。<br /> <br />二、打包<br /> 在编写symbian程序时会加入多种资源,例如图片、html文件、文本文件等。这时就需要将他们打包到sis文件,安装的时候就自动将这些文件放到指定目录下了。<br /> 打包参加sis文件夹下的*.pkg文件内容<br />例如:<br />; Symbian3.pkg<br />; La转载 2010-12-12 20:40:00 · 756 阅读 · 0 评论 -
symbian消息传递
一、消息传递 <br />1.容器类发消息给AppUi类 <br />CEikonEnv::Static()->EikAppUi()->HandleCommandL(600); <br />获得AppUi类指针,给Ui类传递消息,消息值为600 <br /><br />二、按键响应 <br />private: <br />TKeyResponse 容器类::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) <br /><br />三、U转载 2010-12-12 20:40:00 · 446 阅读 · 0 评论 -
symbian显示图片程序片段
<br />一、程序片段<br /> //图片定义 四种格式都支持<br /> //图片文件存储路径<br /> //参考我的电脑C:/Symbian/9.2/S60_3rd_FP1_3/Epoc32/winscw/c/images/<br /> //_LIT(KFile,"c://images//02.jpg");<br /> //_LIT(KFile,"c://images//bmp.bmp");<br /> //Gif能够显示,但是没有动态效果<br /> //_LIT(转载 2010-12-12 20:40:00 · 479 阅读 · 0 评论 -
Helloworld项目分析杂记一
一、模块分析 AVKON大概是Symbian的一个编程框架,类似于MFC。HelloWorld项目是基于此application framework开发的。<br /> 首先,每个编译出来的GUI应用程序(*.app)实际上是一个dll,不是一个通常意义上的可执行模块。每个app都导出了一个函数NewApplication(),它是用序号导出的。以Helloworld工程为例,察看目录%SDKROOT%/6.1/Series60/Epoc32/BUILD/SYMBIAN/6.1/SERIES60/SER转载 2010-12-12 20:41:00 · 513 阅读 · 0 评论 -
如何使后台运行的程序获取按键事件
一、基本思路: <br /><br />首先程序运行时注册按键事件,然后将程序转入后台运行,当按键事件发生后在AppUi的HandleKeyEventL中处理。 <br /><br />相关代码如下: <br /><br />void CClockSSAppUi::SetCaptureKey() <br />{ <br /> // If there is another handle, we have to cancel it first. <br /> CancelCaptureKey();转载 2010-12-12 20:33:00 · 850 阅读 · 0 评论 -
如何设定应用程序安装到特定手机中
基于传感器的应用(FlipSilent, ShakeSMS), 但是有些手机并没有传感器(如N73),所以如果在安装过程中可以区分一下可以使User Experience更好一点,N73用户也不用白白安装后试了半天才发现根本没有用。<br />一个比较简单的方法是在pkg文件根据手机型号(Product ID)中作判断,可以加上如下几行:<br />;Supports Series 60 v 3.0 //屏蔽掉原来的Platform ID<br />;[0×101F7961], 0, 0, 0, {”Ser转载 2010-12-12 20:33:00 · 592 阅读 · 0 评论 -
如何修改程序界面图标
使用的IDE是Carbide.C++ v1.2 ,SDK是S60 3rd FP1(MR)<br />1,首先做一个svg类型的图标,可以用Photoshop,Illustrator, inkscape等。<br />2,将svg类型装换成svg-t,工具由SDK提供<br />C:/Symbian/9.2/S60_3rd_FP1/S60Tools/svg2svgt/installer<br />3,转换好后,将其覆盖掉工程中gfx文件夹下的qgn_menu_PROJECT.svg<br />4,重新生成,图转载 2010-12-12 20:32:00 · 537 阅读 · 0 评论 -
如何通过程序设定是否开机自启动
主要有两个步骤:<br />1,使用Startup List Management API实现开机自启动<br />2,重载AppUI中的ProcessCommandParametersL()函数确定是否关闭(自启动后关闭==不启动)<br />1.1 在data目录下创建一个boot resource file,名字为XXXX.rss, 其中XXXX为UID3。<br />#include <startupitem.rh><br />RESOURCE STARTUP_ITEM_INFO startexe<转载 2010-12-12 20:33:00 · 475 阅读 · 0 评论 -
symbian的SQL语句
<br />一、查找不为空的记录<br /> TBuf<KCustomSqlMaxLength> sqlStr;<br /> sqlStr.Append(_L("SELECT "));<br /> sqlStr.Append(aColumnName);<br /> sqlStr.Append(_L(" FROM "));<br /> sqlStr.Append(aTableName);<br /> sqlStr.Append(_L(" WHERE Download='0'转载 2010-12-12 20:34:00 · 355 阅读 · 0 评论 -
调试日志的使用
void APP::DebugLog(const TDes& strInfo)<br />{<br /> RFileLogger iLog;<br /> iLog.Connect();<br /><br /> //必须手工创建日志文件<br /> //日志默认路径为为C:/Symbian/9.2/S60_3rd_FP1_3/Epoc32/winscw/c/logs/<br /> //下面程序设置的日志完整路径为C:/Symbian/9.2/S60_3rd_FP1_3/Epoc32/winscw/c/logs转载 2010-12-12 20:34:00 · 478 阅读 · 0 评论 -
Symbian C++描述符
习惯了java,C#这些语言的开发,在symbian要转换一下思维,字符串处理就是一个例子,string用起来真叫人简单,自从看了symbian hello world例子,发现,竟然写一个hello world也不是那么容易,连字符串也不是string a="hello world",取而代之的是描述符。因为手机开发,对于内存管理很重要,默认栈的大少是8kb。字符串和二进制文件划分为一类,统一由描述符管理。 <br /><br />背景 <br /><br />描述符是Symbian C++字符串的描述类转载 2010-12-12 20:34:00 · 390 阅读 · 0 评论 -
Symbian 学习笔记之一命名规范与数据类型
一,类名; 在Symbian OS 中类名有三部分组成,<Symbian OS 前缀>+<工程名>+<名称>。<br /> 根据类名可以分为4类。T类,C类,R类,M类,下面浅谈一下他们各自的特点区别。<br /> 1)T类。是最简单最基本的一类。a,可以包含具体的取值,同时没任何外部对象,因此不需要析构函数来释放对象,即T类没有析构函数。 b,T类对象分配在栈空间中(类似于c++的自动变量),也可以作为其他类的成员变量。注意:Symbian 中默认栈空间8Kb。<br />转载 2010-12-12 20:35:00 · 446 阅读 · 0 评论 -
API Plug-in for the S60 3rd Edition SDK for Symbian OS, for C++, supporting Feature Pack 2
Package URL: Extensions plug-in package for S60 3rd Edition SDK for Symbian OS, for C++, supporting Feature Pack 2<br />Current version: 1.2 <br />Included APIs: 48 <br />The following APIs are included: <br /><br />Adaptive History List API for 3rd Editio转载 2010-12-12 20:36:00 · 580 阅读 · 0 评论 -
使用CDocumentHandler打开文件
概述 <br /> 这个代码片段演示如何使用Document Handler API(CDocumentHandler)来打开文件。下面演示了两种不同的技术: <br /><br />在该文件的处理应用程序中独立打开 <br />在调出应用程序中嵌入打开文件 <br />MMP文件 <br />下面的能力和库文件是必须的: <br /><br />CAPABILITY SwEvent // TApaTask::SwitchOpenFile() (仅独立版) <br />LIBRARY apgrfx.转载 2010-12-12 20:38:00 · 482 阅读 · 0 评论 -
symbian内嵌浏览器及滚动条
一、创建浏览器<br /> iBrowser=CreateBrowserControlL(this, rect,<br /> TBrCtlDefs::ECapabilityDisplayScrollBar | TBrCtlDefs::ECapabilityLoadHttpFw<br /> ,TBrCtlDefs::ECommandIdBase<br /> ,NULL //softkey observer<br /> ,NULL //link resolver<br /> ,NU转载 2010-12-12 20:40:00 · 738 阅读 · 0 评论 -
symbian页面切换 小结
<br />一、工程文件结构及执行顺序<br /> Symbian3.cpp 程序开始的地方<br /> Symbian3application.cpp 程序类<br /> Symbian3document.cpp 文档类<br /> Symbian3appui.cpp UI类<br /> Symbian3appview.cpp 容器类(并不是视图类,它继承CCoeControl)<br转载 2010-12-12 20:41:00 · 444 阅读 · 0 评论 -
VS2003环境下Symbian工程的导入与建立
1、将已有的S60工程导入到VS2003中,建立VS2003工程。<br />2、利用SDK的工具ApplicationWizard建立S60工程并导入到VS2003<br />3、利用Nokia Developer Suite - Carbide.vs导入、建立工程<br />4、如何生成能安装到手机上的sis文件<br />一、将已有的S60工程导入到VS2003中,建立VS2003工程<br />这部分内容实际上在第一篇文章中已经包含了,我再把它总结在这里,以保证内容的完整性,整个过程如下:<br /转载 2010-12-12 20:44:00 · 464 阅读 · 0 评论 -
按下红色结束通话键,程序仍然运行
在Symbian S60第三版中,按下红色的结束通话键,程序默认退出,当还想保持程序继续运行状态,可以在AppUi的HandleWsEventL函数中进行处理,以下代码来自ScreenShot。<br />// ————————————————————————–<br />// Starting from S60 3.x, pressing End key will terminate application.<br />// We don’t want this to happen in this app转载 2010-12-12 20:32:00 · 501 阅读 · 0 评论 -
基于VS2003的Symbian开发环境
本文主要针对S60的开发环境的建立,因此首先为大家列出S60系统的各种版本。因为开发者应该根据需要,选择自己适合的SDK版本。<br />1、Series60 第一版 - Symbian OS 6.1<br />2、Series60 第二版 - Symbian OS 7.0s<br />3、Series60 第二版 Pack 1 - Symbian OS 7.0s<br />4、Series60 第二版 Pack 2 - Sym转载 2010-12-12 20:44:00 · 526 阅读 · 0 评论