首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 图书频道 > 计算机与网络 > 操作系统 >

Symbian OS C++编程诀窍

2010-04-06 
基本信息·出版社:清华大学出版社 ·页码:297 页 ·出版日期:2010年01月 ·ISBN:9787302216131 ·条形码:9787302216131 ·版本:第1版 ·装帧:平装 ...
商家名称 信用等级 购买信息 订购本书
Symbian OS C++编程诀窍 去商家看看
Symbian OS C++编程诀窍 去商家看看

 Symbian OS C++编程诀窍


基本信息·出版社:清华大学出版社
·页码:297 页
·出版日期:2010年01月
·ISBN:9787302216131
·条形码:9787302216131
·版本:第1版
·装帧:平装
·开本:16
·正文语种:中文
·丛书名:移动与嵌入式开发技术
·外文书名:Quick Recipes on Symbian OS: Mastering C++ Smartphone Development

内容简介 《Symbian OS C++编程诀窍》内容简介:对于初次接触Symbian OS的C++程序员来说,《Symbian OS C++编程诀窍》是必读的,它从最基础的知识入手,向读者展示了基于Symbian开发手机应用程序的知识和技巧。
在移动开发领域,不管您是需要移植一个桌面应用程序,快速创建一个程序原型,还是仅仅希望学习一些程序开发的知识,《Symbian OS C++编程诀窍》都将是您了解和学习Symbian OS的首选。同时,《Symbian OS C++编程诀窍》还是帮助读者解决移动开发难题的实用手册,尤其是第4章,以任务驱动的方式介绍了Symbian OS手机开发的难点,并列举了作者多年积累的一些开发诀窍。每个任务都事先指明了难度等级、完成需要的时间等,之后是如何完成该任务的细节以及编程窍门。
《Symbian OS C++编程诀窍》特色:
从Symbian OS移动开发基础知识入手,涵盖Symbian OS所有技术:图形和绘图、多媒体、网络、基于位置的服务、通话、短信息等。
以任务驱动的方式来介绍Symbian OS开发技术,在介绍技术的同时,指出其实际应用。
作者多年开发经验的总结,多达112个编程诀窍,将使读者少走许多弯路。
作者简介 奥布里,(Michael Aubert),Michael在Symbian的Java组和iAnywhere的研发组总共工作了7个年头。期间,他对包括手机通话、短信息、3D图像、网络、多媒体、PIM、密码、系统安全及软件部署在内的许多技术都有很深入的研究。
他拥有E.S.L.A.L软件工程学院的理学硕士学位,并且还很有可能是唯一一个为法国读者讲解Crazy Java Team Event Server Framework的人。
Alexey Gusev,Alexey在20世纪80年代末致力于研究大型机,开始时使用Pascal和REXX语言,但很快转为在多种平台上使用C/C++和Java语言,随后又置身于移动技术领域。作为小组负责人在Windows Mobile组工作了近10年后,他最终决定加盟Symbian的Core Development组,先后从事于安全和USB模块。
他在莫斯科物理技术学院获得应用数学和物理学硕士学位,是Symbian认证工程师,并且还是www.developer.com的签约作者。
Tanzim Husain,Tanzim于2004年加入Symbian的网络技术组并工作至今,期间经历了两次架构改变以及三次小组重组。在加入Symbian之前,他主要工作于Windows Mobile平台,并致力于研发先进的地图绘制和地理信息系统(GIS)。
Tanzim拥有NSU的计算机科学学士学位。工作之余,他喜欢摆弄摄影并且乐于到城外乡间以逃避喧嚣。他还在www.tanzim.co.uk网站上维护着属于自己的网页和博客,虽然更新并不频繁。
Jenny Mulholland,Jenny于2006年毕业于剑桥大学物理系,获得硕士学位以后,就成为Symbian的Licensee Product Development小组(该小组隶属于Comms Porting组)的一员。她最近己成为Symbian的认证工程师。
工作之余,如果她没有和同事在酒馆的话,必然是投入到Chandos Chamber Choir音乐会的演出中了,而且最近她还学会了吹长笛。
编辑推荐 《Symbian OS C++编程诀窍》:移动与嵌入式开发技术
目录
第1章 入门和设置 1
1.1 工具:您需要什么以及从哪里获得 1
1.1.1 系统需求 1
1.1.2 IDE 2
1.1.3 SDK 2
1.1.4 编译器 2
1.2 当等待安装时 2
1.2.1 Carbide.c++ 2
1.2.2 开发社区 3
1.2.3 移动开发的概念 3
1.2.4 ARM硬件 3
1.2.5 模拟器 4
1.3 安装结束后 5
1.3.1 命令行工具 5
1.3.2 SDK的目录结构 5
1.3.3 模拟器 5

第2章 快速上手 7
2.1 Hello World项目模板 7
2.2 运行Carbide.c++ IDE 7
2.3 生成Hello World项目 8
2.4 构建Hello World项目 10
2.5 在模拟器上运行Hello World程序 11
2.6 在设备上运行Hello World程序 13
2.7 修改Hello World项目 14
2.7.1 添加一个新的菜单项 14
2.7.2 处理菜单事件 16
2.8 Carbide.c++高级议题 18
2.8.1 修改项目文件 18
2.8.2 导入项目文件 20
2.8.3 改变认证/密钥对 21
2.9 链接 23

第3章 Symbian OS开发基础 25
3.1 Symbian OS的基本数据类型 25
3.2 Symbian OS的类习俗 26
3.2.1 T类 26
3.2.2 C类 27
3.2.3 R类 27
3.2.4 M类 27
3.2.5 静态类 28
3.3 异常退出和异常处理 28
3.3.1 严重错误Panic和异常退出的区别 29
3.3.2 TRAP和TRAPD宏 29
3.3.3 是什么造成了异常退出 30
3.3.4 new(ELeave) 30
3.4 清除栈 31
3.5 清除栈常见问题:更多信息 32
3.5.1 为什么PushL()会异常退出 32
3.5.2 在使用清除栈的时候为什么会出现严重错误 33
3.5.3 当代码运行出TRAP以后为什么会出现严重错误 33
3.5.4 当调用CleanupStack::Pop()时为什么会产生严重错误 33
3.5.5 应该如何综合使用异常退出、标准异常处理以及清除栈 34
3.6 两阶段构造 34
3.7 瘦模板 36
3.8 描述符——Symbian OS字符串 37
3.8.1 字符大小 38
3.8.2 TDesC 38
3.8.3 TDes 38
3.8.4 描述符的继承类 38
3.8.5 指针型描述符:TPtrC和TPtr 39
3.8.6 基于栈缓存的描述符TBufC和TBuf 39
3.8.7 动态描述符:HBufC和RBuf 40
3.8.8 使用RBuf 41
3.8.9 字面描述符 41
3.8.10 描述符类型:总结 42
3.8.11 使用描述符API 43
3.8.12 用作函数参数和返回值的描述符 44
3.9 Symbian OS中的数组 45
3.9.1 静态数组 45
3.9.2 动态数组 45
3.9.3 RArray类的清除 46
3.9.4 什么时候应该使用CArrayX数组 47
3.9.5 排序和查找 47
3.10 可执行文件 48
3.11 平台安全:能力 49
3.12 平台安全:数据隔离 51
3.13 栈大小和堆大小 52
3.14 流 52
3.15 活动对象 54
3.15.1 抢占 55
3.15.2 CActive类 55
3.15.3 TRequestStatus类 57
3.15.4 活动调度器 57
3.15.5 使用活动对象时的常见问题 59
3.16 线程 60
3.17 时钟和回调函数 60
3.18 小结 61

第4章 Symbian C++诀窍 63
4.1 文件处理 64
4.1.1 初级诀窍 64
【诀窍4-1】获取文件服务器会话 65
【诀窍4-2】向文件写二进制数据 65
【诀窍4-3】从文件读取二进制数据 67
【诀窍4-4】从文件读文本 69
4.1.2 中级诀窍 71
【诀窍4-5】获取私有文件夹路径 71
【诀窍4-6】从文件流读写 74
【诀窍4-7】从文件流读写类成员 79
4.1.3 高级诀窍 81
【诀窍4-8】从文件存储读写 81
【诀窍4-9】进程间共享文件 86
4.1.4 资源 88
4.2 联系人和日历 89
4.2.1 在您开始使用联系人前 89
4.2.2 在您开始使用日历前 90
4.2.3 初级诀窍 90
【诀窍4-10】写联系人数据 90
【诀窍4-11】读联系人数据 92
【诀窍4-12】增加新联系人 94
【诀窍4-13】删除联系人 95
【诀窍4-14】修改日历中的事件 96
【诀窍4-15】添加新的日历事件 98
【诀窍4-16】删除日历事件 101
4.2.4 中级诀窍 102
【诀窍4-17】联系人排序 102
【诀窍4-18】使用vCard格式 103
【诀窍4-19】使用vCal格式 105
【诀窍4-20】创建重复的日历事件 107
4.2.5 高级诀窍 109
【诀窍4-21】查找联系人 109
【诀窍4-22】把联系人移动到另一个组中 112
【诀窍4-23】探询日历是否为空 114
【诀窍4-24】获取出席者名单 115
4.3 网络 117
4.3.1 上手 118
4.3.2 配置环境 119
4.3.3 HTTP 121
4.3.4 InetProtUtils 121
4.3.5 初级诀窍 122
【诀窍4-25】用TCP套接字收发数据 122
【诀窍4-26】强制连接使用某载体 124
【诀窍4-27】强制连接使用某因特网接入供应商 125
【诀窍4-28】解析域名 127
【诀窍4-29】使用HTTP的GET请求 129
【诀窍4-30】解析URI 132
【诀窍4-31】创建URI 134
4.3.6 中级诀窍 136
【诀窍4-32】用TCP侦听到达的连接 136
【诀窍4-33】监视连接状态 138
【诀窍4-34】获取激活的连接信息 140
【诀窍4-35】使用安全套接字 141
【诀窍4-36】使用HTTP的POST请求 143
【诀窍4-37】设置HTTP的高级属性 146
【诀窍4-38】 从URI提取本地文件名 147
4.3.7 高级诀窍——获取HTTP代理信息 148
【诀窍4-39】获取HTTP代理信息 148
4.3.8 资源 150
4.4 短信息 151
4.4.1 支持的载体 151
4.4.2 SendAs 151
4.4.3 服务 152
4.4.4 短信息存储 152
4.4.5 写短信息应用程序的小提示 153
4.4.6 关于本章的诀窍 154
4.4.7 诀窍 155
【诀窍4-40】初始化应用程序以使用短信息 155
【诀窍4-41】创建文件夹 157
【诀窍4-42】创建短信息 159
【诀窍4-43】读取短信息的细节 160
【诀窍4-44】编辑短信息 162
【诀窍4-45】获取并编辑短信息的设置 163
【诀窍4-46】拷贝短信息 164
【诀窍4-47】移动短信息 166
【诀窍4-48】发送短信息 167
【诀窍4-49】删除短信息 168
【诀窍4-50】处理收到的短信息 169
4.4.8 资源 170
4.5 图形和绘图 171
4.5.1 初级诀窍 172
【诀窍4-51】画线和画几何形状 172
【诀窍4-52】绘制背景色或填充几何形状 173
【诀窍4-53】载入并绘制MBM或MIF图像 174
【诀窍4-54】绘制一个有透明区域的图像 175
4.5.2 中级诀窍 176
【诀窍4-55】载入JPG或PNG图像 176
【诀窍4-56】在屏幕上绘制文本 177
【诀窍4-57】载入字体 179
【诀窍4-58】在一个控件中绘制另一个控件 180
4.5.3 高级诀窍 181
【诀窍4-59】绘制超出屏幕的图像(Off-Screen) 181
【诀窍4-60】载入GIF格式的动画图像 182
【诀窍4-61】以皮肤为背景绘制(仅S60支持) 185
【诀窍4-62】在Symbian OS应用程序框架之外绘图 186
【诀窍4-63】直接往屏幕上绘图 188
4.6 用OpenGL ES绘制3D图形 189
4.6.1 OpenGL ES基础 190
4.6.2 从OpenGL到OpenGL ES 191
4.6.3 初级诀窍 191
【诀窍4-64】全屏设置 191
【诀窍4-65】显示3D图形对象 194
【诀窍4-66】平移3D图形对象 198
【诀窍4-67】翻转3D图形对象 199
4.6.4 中级诀窍 200
【诀窍4-68】对3D图形对象应用纹理 200
【诀窍4-69】部分屏幕设置 201
4.6.5 高级诀窍 203
【诀窍4-70】动态动画(Animate a Scene) 203
【诀窍4-71】适配器性能 206
4.6.6 资源 207
4.7 多媒体 208
4.7.1 初级诀窍 209
【诀窍4-72】播放音频剪辑(Audio Clip) 209
【诀窍4-73】使用基本的音频操作 211
【诀窍4-74】播放提示音(Audio Tone) 212
【诀窍4-75】播放MIDI文件 213
4.7.2 中级诀窍 214
【诀窍4-76】取得默认的多媒体文件存放路径 214
【诀窍4-77】播放视频剪辑 217
【诀窍4-78】音频流 218
4.7.3 高级诀窍 220
【诀窍4-79】录制音频 220
【诀窍4-80】录制通话内容 222
【诀窍4-81】显示照相机的取景 222
【诀窍4-82】用照相机拍摄静物 225
【诀窍4-83】录制视频 226
4.7.4 资源 228
4.8 通话 229
4.8.1 初级诀窍 233
【诀窍4-84】处理手机通话 233
【诀窍4-85】发送DTMF信息(DTMF Tones)至通话线路 234
【诀窍4-86】监测通话线路状态 234
【诀窍4-87】获取网络信号强度 235
【诀窍4-88】获取电池状态 236
【诀窍4-89】获取设备的IMEI号 236
【诀窍4-90】获取当前网络名称 237
【诀窍4-91】获取当前运营商名称 237
【诀窍4-92】获取飞行模式状态 238
【诀窍4-93】获取网络注册状态 238
4.8.2 中级诀窍 239
【诀窍4-94】获取来电/去电的电话号码 239
【诀窍4-95】匹配人名和相应的电话号码 240
【诀窍4-96】从SIM卡中获取IMSI号 241
【诀窍4-97】获取手机的锁定(Phone Lock)状态 241
4.8.3 高级诀窍 242
【诀窍4-98】获取信元编号和网络信息 242
【诀窍4-99】获取呼叫转接(Call Forwarding)状态 243
【诀窍4-100】获取呼叫限制(Call Barring)状态 244
4.9 互联 244
4.9.1 初级诀窍 245
【诀窍4-101】通过红外(IrDA)打印 245
【诀窍4-102】查找红外设备 246
【诀窍4-103】查找蓝牙设备 247
【诀窍4-104】查找为特定设备提供的蓝牙服务 249
4.9.2 中级诀窍 251
【诀窍4-105】使用套接字API 251
【诀窍4-106】创建简单的OBEX客户端 254
【诀窍4-107】创建简单的基于蓝牙的OBEX服务器 256
4.9.3 高级诀窍——广播蓝牙服务 257
【诀窍4-108】广播蓝牙服务 257
4.10 基于位置的服务 259
4.10.1 初级诀窍 261
【诀窍4-109】取得可用位置技术模块的列表 261
【诀窍4-110】取得当前模块的状态信息 263
【诀窍4-111】获取模块状态改变的通知 264
【诀窍4-112】设置模块选择标准 266
4.10.2 中级诀窍 267
【诀窍4-113】请求位置信息 267
【诀窍4-114】请求扩展的位置信息 273

第5章 更上一层楼 275
5.1 高级技术 275
5.1.1 发布和订阅:系统范围的属性 275
5.1.2 创建一个服务器进程:文件共享 276
5.1.3 高级系统中所特定的用户接口 277
5.1.4 高级短信息:一种新协议 278
5.2 仅适合Symbian合作伙伴 279
5.2.1 文件服务器插件:独立的文件系统 279
5.2.2 高级多媒体:额外的格式流 280
5.3 高级应用程序部署 280
5.3.1 自动安装 280
5.3.2 定制安装 281
5.3.3 嵌入的二进制集 281

第6章 发布程序 283
6.1 在发布程序前要做什么 283
6.1.1 对其观察 283
6.1.2 对其测试 285
6.1.3 对其优化 286
6.1.4 对其保护 287
6.1.5 对其签名 288
6.1.6 对其国际化 290
6.2 如何分发应用程序 292
6.2.1 网络运营商 292
6.2.2 独立的软件渠道 293
6.2.3 Content Aggregator 294
6.2.4 预安装应用程序 294
6.2.5 开源 294
6.3 下一步怎么做 295
6.3.1 Symbian Press图书 295
6.3.2 同Symbian合作 296
6.3.3 在Symbian生态系统范围内的合作 297
……
序言 本书是为那些时间紧迫的开发者而设计的。
作为开发者的您有可能被告知:需要把一些最初为其他操作系统开的程序(比如,运行在台式机上的程序)移植到Symbian OS。也有可能您不得不调研,以确定Symbian OS是否适合实现一个出自您设计师朋友的想法。但问题在于,您没有足够多的时间,而且您也听说过Symbian OS是一个成熟稳定而又复杂丰富的系统,学习起来并不轻松。
如果您的想法和大多数软件工程师的一样,您很可能希望能花些时间去调研这些任务。您可能更倾向于去参加一个培训,或者从Symbian OS已存在的广泛文档资料中找出解决方案。然而,我猜想您并没有充裕的时间那么做——因为您要面对的是紧迫的进度表所带来的压力。您也难以挤出足够的空闲时间来进行宽泛的研究。您的上司需要您周末就做出报告,所以您不得不尽快找出答案。
这就是Symbian Press出版本书的原因。这里我们假设您是聪明、机智的软件工程师,并且已经掌握了C++语言和一些现代软件编程方面的方法和模式。您愿意努力学习,并且能快速掌握要点。您已经做好了暂时对一些问题不加深究的准备,这样带来的好处是您可以快速找出在Symbian OS中完成各种不同任务的方法。随着学习的深入,您很可能希望去了解更多的背景知识以及Symbian OS的深层原理,但是沉住气——当务之急是:您需要找到一些速成的诀窍。
恭喜您,本书就为您提供了这些诀窍!
文摘 插图:


在单个的应用程序线程中,活动对象之间是独立运行的,这有点类似于线程在同一个进程内是相互独立的。简单介绍之后可以发现,在单个线程中切换活动对象比线程内容切换负担要小,这对于Symbian OS上的轻量级多任务事件驱动来说是非常理想的。
3.15.1抢占
在一个单独的线程内,活动对象构架采用的是非抢占多任务机制。一旦被唤起,其事件处理就必须被运行直到完成,之后才可以运行其他活动对象的事件处理——不可以被抢占。
一些事件对请求的响应时间有严格的限定,而不管系统中其他的活动如何(比如低级别的通话模块)。这被称作“实时”事件处理。活动对象不适合用在实时任务中,Symbian OS中的实时任务应该用高优先级的线程来实现。Symbian OS的线程被内核以可抢占的方式调度,总是去运行那些符合条件的最高优先级的线程。内核控制线程的调度,允许线程以划分的时间片来共享系统资源,如果一个更高优先级的线程达到运行条件,则可以抢占当前运行的线程。
在当前线程被挂起时(比如它被阻塞、用完了自己的时间片或一个更高优先级的线程变为等待运行状态时),会产生一个内容切换,在内核调度下另一个线程成为当前线程并开始运行。如果最初的线程和要替换的线程运行在不同的进程、内存控制单元或硬件缓存中,则内容切换从内核调度的角度会产生一个运行时的开销。
热点排行