第1篇 SymbianOS手机应用开发概述 2
第1章 Symbian开发简介 2
1.1 Symbian历史 2
1.2 SymbianOS的特点 3
1.3 SymbianOS体系结构 4
1.4 移动开发方向 7
1.5 其他手机开发平台 10
1.5.1 BREW简介 10
1.5.2 J2ME简介 10
1.5.3 PalmOS简介 10
1.5.4 WindowsMobile简介 11
1.5.5 嵌入式Linux简介 11
第2章 搭建Symbian开发环境 12
2.1 SymbianSDK介绍 12
2.1.1 SymbianCusKit 12
2.1.2 基于Symbian的S60SDK 12
2.1.3 基于Symbian的UIQSDK 14
2.2 搭建开发环境 14
2.2.1 准备工作 14
2.2.2 搭建基于Carbide.c++++的Symbian开发环境 15
2.2.3 搭建基于Microsoft.NET2005的Symbian开发环境 17
2.2.4 开发环境介绍 18
2.2.5 测试开发环境 20
2.3 Hello World例程 20
第3章 Symbian手机应用开发过程 22
3.1 SymbianOS上的程序类型 22
3.1.1 控制台应用程序 22
3.1.2 GUI程序 23
3.1.3 DLL程序 25
3.2 建立新工程 25
3.3 工程结构 27
3.3.1 工程目录组织 27
3.3.2 程序文件的组织 27
3.4 程序编译 28
3.4.1 命令行编译 28
3.4.2 IDE环境编译 30
3.5 编辑代码 30
3.6 打包发布 32
3.6.1 打包文件.pkg 32
3.6.2 制作Symbian安装程序sis文件 32
3.6.3 S603rd版安装程序签名 34
3.6.4 在设备上运行程序 35
第4章 程序结构分析 37
4.1 程序结构 37
4.1.1 应用框架 37
4.1.2 GUI应用运行分析 40
4.2 工程组织 45
4.2.1 bld.inf 45
4.2.2 Symbian工程组织文件*.mmp 46
4.3 应用图标及启动 48
4.4 资源文件 51
4.4.1 资源☆文件格式 51
4.4.2 定义菜单 53
4.4.3 定义CBA栏 55
4.4.4 定义字符串资源 57
4.5 打包图片 58
4.5.1 BMP图片打包 58
4.5.2 SVG图片打包 59
4.6 打包文件格式 59
4.7 多视图程序 60
4.7.1 创建多视图程序 60
4.7.2 多视图程序分析 61
4.7.3 文档/视图结构的视图 61
第2篇 Symbian开发基础 66
第5章 SymbianOSC++基础 66
5.1 SymbianOSC+++语言概述 66
5.2 基本数据类型 67
5.2.1 整型 67
5.2.2 浮点型 68
5.2.3 布尔型 69
5.2.4 字符串型 69
5.2.5 枚举型 69
5.2.6 4种基本的类 70
5.3 编码规范 75
5.4 描述符 77
5.4.1 缓冲区描述符 78
5.4.2 指针描述符 81
5.4.3 堆缓冲描述符 84
5.4.4 ASCII和UNICODE字符串 85
5.5 动态数组 87
5.6 操作描述符的实例 90
第6章 异常处理与资源管理 93
6.1 Symbian中的资源管理概述 93
6.2 清除栈 94
6.2.1 清除栈机制 94
6.2.2 使用清除栈 96
6.2.3 清除栈的特殊用法 97
6.3 异常退出 99
6.3.1 异常退出函数 99
6.3.2 在程序中抛出异常 100
6.3.3 使用TRAP或TRAPD捕获异常退出 101
6.4 类的二阶段构造 103
6.4.1 普通C++++类的创建 103
6.4.2 二阶段构造的意义 104
6.4.3 静态方法:NewL()和NewLC() 105
6.4.4 二阶段构造函数ConstuctL() 106
6.4.5 SymbianOSC++++类的用法 106
第7章 活动对象 108
7.1 活动对象机制 108
7.1.1 循环等待处理及其缺陷 108
7.1.2 活动对象框架 109
7.1.3 活动对象的生命周期及操作顺序 111
7.2 活动对象的使用 115
7.2.1 实现活动对象的必要步骤 116
7.2.2 实现活动对象类—时钟定时器 117
7.3 用活动对象处理复杂费时的任务 121
7.4 定时器实例 124
第3篇 Symbian编程 126
第8章 文本显示和字体使用 126
8.1 Symbian中提供的文本操作API 126
8.1.1 Symbian中的文本属性 126
8.1.2 核心字体类和函数 127
8.2 显示文本 128
8.2.1 使用字体 129
8.2.2 使用DrawText()显示文本 129
8.2.3 在程序中如何换行自画文本 130
8.3 字体的效果应用 132
8.3.1 给字体设置颜色 132
8.3.2 给字体设置修饰线:下划线或删除线 133
8.3.3 竖向显示文本 134
8.4 改变字体大小 135
8.5 特殊效果文本显示实例 135
第9章 绘制图形和显示图片 138
9.1 屏幕绘图函数介绍 138
9.1.1 绘制形状API 138
9.1.2 绘制图片API 139
9.2 直接在屏幕上绘图 140
9.3 显示位图或SVG图 142
9.3.1 打包图片 142
9.3.2 图片加载 144
9.3.3 直接显示图片 147
9.3.4 透明显示图片 148
9.4 特殊效果绘图 149
9.4.1 无闪烁重绘 149
9.4.2 放大缩小图片 151
9.4.3 旋转图像 156
第10章 基于S60的UI组件编程 157
10.1 UI组件概述 157
10.2 标签的使用 158
10.3 编辑器的使用 160
10.3.1 文本编辑器 161
10.3.2 数值编辑器 170
10.3.3 密码编辑器 172
10.3.4 多字段数值编辑器 173
10.4 列表的使用 173
10.4.1 列表架构 174
10.4.2 列表类型 174
10.4.3 列表格式及布局 175
10.4.4 列表资源 176
10.4.5 创建和使用列表 177
10.4.6 操作列表项 181
10.5 设置列表的使用 183
10.6 自定义控件的开发 186
10.7 对话框 191
10.7.1 标准对话框 191
10.7.2 窗体的使用 195
10.7.3 通知的使用 198
10.7.4 查询的使用 201
第11章 Symbian手机上的文件操作 205
11.1 Symbian的文件系统 205
11.2 文件服务器 206
11.2.1 文件服务器会话 207
11.2.2 当前目录 208
11.2.3 文件 210
11.2.4 目录 212
11.2.5 文件名解析 215
11.3 文件类RFile 216
11.3.1 创建、打开、关闭文件 216
11.3.2 写入数据 218
11.3.3 读取数据 219
11.3.4 搜索 220
11.4 流 221
11.4.1 流类型 221
11.4.2 流操作 223
11.4.3 可流化的数据类型 226
第12章 多媒体应用开发 228
12.1 多媒体组件架构 228
12.2 多媒体框架(MMF)客户端API 229
12.3 音频程序开发 230
12.3.1 播放音调 231
12.3.2 播放音频剪辑 234
12.3.3 录制音频剪辑 237
12.3.4 音频流处理 240
12.4 视频程序开发 245
12.4.1 视频回放 246
12.4.2 视频录制 249
12.5 摄像头使用 253
12.5.1 使用摄像头 254
12.5.2 预览摄像头图像 255
12.5.3 拍摄照片 256
12.5.4 捕捉视频 256
第13章 Symbian上的网络应用开发 257
13.1 Symbiant通信体系结构 257
13.2 Socket应用开发 258
13.2.1 客户端/服务器程序 259
13.2.2 套接字服务器会话 260
13.2.3 套接字 263
13.2.4 域名解析 266
13.2.5 安全套接字 267
13.3 Socket通信实例 267
13.4 HTTP协议应用开发 268
13.4.1 会话 268
13.4.2 事务 269
13.4.3 消息头部和消息体 270
13.5 使用HTTP协议获取网页内容的实例 271
第14章 Symbian上的ECOM开发 277
14.1 ECOM架构 277
14.2 ECOM接口类的定义及实现 278
14.2.1 ECOM接口的定义 278
14.2.2 工厂方法 279
14.2.3 析构函数 280
14.2.4 实现解析器 281
14.3 实现ECOM接口 283
14.4 使用ECOM插件 285
第15章 消息传送及通话 287
15.1 消息 287
15.1.1 消息架构 287
15.1.2 消息类及数据类型 289
15.1.3 消息传送API 290
15.1.4 使用客户端MTMAPI 291
15.1.5 使用CSendAppUi 297
15.1.6 监视到达的信息 297
15.2 通话 301
15.2.1 电话API 301
15.2.2 呼叫电话 301
15.2.3 获取设备信息 302
第4篇 项目实践 306
第16章 即时聊天项目设计 306
16.1 即时聊天需求分析 306
16.1.1 客户端需求 307
16.1.2 技术准备 311
16.2 IM客户端架构设计 311
16.3 实现Symbian手机上的IM客户端 312
16.3.1 实现目标 312
16.3.2 IM客户端实现 312
16.4 项目发布 317
16.4.1 运行即时聊天服务器程序 317
16.4.2 S60模拟器上运行 318
16.4.3 Symbian手机上运行 318