第1章 MTK的横空出世 1
1.1 引子 1
1.2 MTK简介 1
1.3 MTK平台的生命力 2
1.4 山寨来了 3
1.5 走出山寨的强者 5
1.6 来自3G的机遇和挑战 6
第2章 MTK软件方案 9
2.1 MTK软件方案组成 9
2.2 MTK总体软件方案架构 10
2.2.1 Nucleus实时操作系统 11
2.2.2 L1协议栈 11
2.2.3 设备驱动 12
2.2.4 L2/L3/L4层协议栈 13
2.2.5 MMI 14
2.3 MMI架构 14
2.3.1 Task 15
2.3.2 MMI与L4通信 15
2.3.3 框架层(Framework Layer) 16
2.3.4 应用层(Application Layer) 18
2.3.5 UI层 18
2.3.6 MMI开发常用目录 19
2.4 启动流程 20
第3章 MTK工程的编译 22
3.1 编译环境的搭建 23
3.1.1 工具安装与配置 23
3.1.2 进行开发环境检查 25
3.2 如何进行编译 26
3.2.1 包含Modis仿真环境的工程 27
3.2.2 不包含Modis仿真环境的工程 27
3.2.3 生成文件及Log日志文件 28
3.3 软件系统的目录结构 28
3.4 构建原理 29
3.5 配置编译选项 35
3.5.1 包含源代码的第三方库 36
3.5.2 无源代码的第三方库 36
3.6 烧写版本 37
第4章 MMI开发起步 40
4.1 MMI初探 40
4.1.1 MMI概念 40
4.1.2 MTK-MMI模块概览 42
4.2 如何浏览代码 44
4.3 Hello MTK 47
4.4 屏幕起步 49
4.4.1 什么是屏幕 49
4.4.2 如何创建新的屏幕 50
4.4.3 History机制 51
4.5 规范化 55
4.5.1 确定目录结构及模块相关文件 55
4.5.2 将相关文件路径加入Plutommi的编译配置文件 56
4.5.3 为新增模块增加编译开关 56
4.6 资源 58
4.6.1 字符串 61
4.6.2 菜单 64
4.6.3 图片 69
4.7 SDK的制作和使用 70
4.7.1 生成真机版本的SDK 71
4.7.2 生成模拟器版本的SDK 72
4.7.3 使用真机版本SDK 72
4.7.4 使用模拟器版本SDK 73
第5章 MTK的图形系统 75
5.1 概述 75
5.2 图形系统结构 75
5.2.1 模板子系统 76
5.2.2 绘画子系统 76
5.2.3 设备子系统 77
第6章 基本绘图 81
6.1 文本绘制 81
6.1.1 基本函数 81
6.1.2 字体 83
6.1.3 颜色 84
6.1.4 排版 85
6.2 图形绘制 86
6.3 图像 90
6.3.1 静态图像 90
6.3.2 动画 91
6.3.3 图像排版 93
6.4 区域裁剪 93
6.5 背景绘制 95
6.5.1 填充结构体 95
6.5.2 纯色背景 97
6.5.3 渐进色背景 98
6.5.4 纹理背景 100
6.5.5 图片背景 101
6.5.6 动画背景 101
6.5.7 系统默认背景 103
第7章 图层 104
7.1 主要作用 105
7.2 创建新层 105
7.3 激活新层 106
7.4 基础层 107
7.5 合并 108
7.6 通透 110
7.7 图层剪切 111
7.8 透明效果 112
7.9 释放图层 113
7.10 分配更多的内存 114
7.11 锁层 117
7.12 GDI锁 119
第8章 Task 121
8.1 创建Task 121
8.1.1 增加索引和ID 122
8.1.2 增加映射 122
8.1.3 配置Task 123
8.1.4 实现 124
8.2 Task的消息循环过程 125
8.3 使用Task 126
8.3.1 消息结构 126
8.3.2 填充消息结构体 126
8.3.3 投递到消息队列 127
第9章 文件操作 129
9.1 常用函数 130
9.1.1 FS_Open 130
9.1.2 FS_Close 131
9.1.3 FS_Read 132
9.1.4 FS_Write 132
9.1.5 FS_Seek 133
9.1.6 FS_Commit 133
9.1.7 FS_GetFileInfo 134
9.1.8 FS_GetAttributes 135
9.1.9 FS_FindFirst 135
9.1.10 FS_FindNext 136
9.1.11 FS_FindClose 136
9.1.12 FS_CreateDir 137
9.1.13 FS_GetDrive 137
9.2 文件读写 139
第10章 控件 146
10.1 GUI基本控件 146
10.1.1 按钮(Button) 147
10.1.2 文本按钮(TextButton) 148
10.1.3 图标按钮(IconButton) 149
10.1.4 单行输入框 150
10.1.5 提示框 151
10.1.6 文本图标列表控件 151
10.2 WGUI高级控件 162
10.2.1 文本图标列表 163
10.2.2 动态列表控件 164
10.2.3 左右按键 165
第11章 屏幕模板 166
11.1 系统提供的屏幕模板 166
11.2 自定义屏幕模板 167
11.2.1 定义新的屏幕模板函数 167
11.2.2 提取变化的元素 168
11.2.3 提取重绘函数 171
11.2.4 模板历史管理 172
11.2.5 退出模板 174
第12章 高级屏幕模板 176
12.1 高级模板的绘制流程 178
12.2 模板ID 180
12.2.1 模板ID的传递 180
12.2.2 模板ID和窗体组件、组件的属性的关联和交互 181
12.3 模板组件 182
12.3.1 构成模板的组件定义 182
12.3.2 各组件的属性定义 183
12.4 模板组件类型 184
12.4.1 控制类型控件 184
12.4.2 标准显示类控件 184
12.4.3 扩展显示类控件 185
12.5 自定义模板 186
12.5.1 模板数据库 186
12.5.2 普通模板加入DM 187
12.5.3 自绘制控件 189
12.5.4 更加漂亮的界面 189
第13章 多国语言 196
13.1 添加新的语言 196
13.1.1 前期准备 196
13.1.2 MTK支持该语言 196
13.1.3 MTK不支持该语言 197
13.1.4 自己实现输入法的总结 198
13.2 移植多国语言 198
13.2.1 语言宏控的修改 199
13.2.2 字库文件的添加 199
13.2.3 修改默认显示语言 199
13.2.4 移植Zi输入法 199
13.2.5 移植手写汉王(hanwang)输入法 201
13.2.6 打开MTK自带输入法支持 202
13.3 虚拟键盘 202
13.4 输入法提示符的显示 202
第14章 SOCKET 203
14.1 SOC定义浅析 203
14.1.1 SOCKET宏常量 204
14.1.2 套接字类型 204
14.1.3 套接字事件 205
14.1.4 封装的套接字函数 205
14.2 SOC实例分析 206
14.2.1 进入工程模式 206
14.2.2 输入URL地址 206
14.2.3 Socket初始化 210
14.2.4 请求准备工作 211
14.2.5 发送请求 212
14.2.6 连接 214
14.2.7 等待服务器响应 215
14.2.8 处理消息事件 216
14.2.9 回调函数执行 216
14.2.10 输出结果 216
14.3 HTTP连接方式编程总结 217
14.3.1 创建Socket连接 217
14.3.2 设置Socket非阻塞/异步模式 217
14.3.3 链接准备 217
14.3.4 连接 218
14.3.5 发送HTTP请求 218
14.3.6 接收数据 218
14.3.7 关闭Socket连接 218
14.3.8 启动/关闭定时器 218
14.3.9 注册事件回调函数 218
14.4 精简的代码 219
14.5 WAP浏览器 221
第15章 高仿NOKIA N73 223
15.1 认识N73界面 223
15.2 待机界面分析 224
15.3 基本布局 225
15.3.1 定义宏开关 225
15.3.2 打开左右按键 226
15.3.3 上移快捷菜单 226
15.4 状态栏修改 227
15.4.1 电量和信号状态图标 227
15.4.2 修改状态栏重绘区域 228
15.4.3 移动小图标绘制坐标 229
15.4.4 时间显示修改 230
15.4.5 状态栏刷新 235
15.4.6 运营商名称 237
15.4.7 修改快捷菜单 238
15.4.8 注册快捷菜单事件 240
15.4.9 添加快捷菜单安全区 241
15.5 动态列表 242
15.5.1 添加动态列表控件 242
15.5.2 今天无日历项 243
15.5.3 列表初始化 244
15.5.4 音乐标题显示 248
15.5.5 按键切换 249
15.5.6 动态列表触摸事件 255
15.6 主菜单初步 258
第16章 MTK驱动开发 262
16.1 基本架构 262
16.2 MTK手机启动过程 268
16.3 EMI配置 272
16.3.1 EMI概述 272
16.3.2 EMI时间设置 272
16.3.3 EMI自动配置过程 275
16.3.4 EMI存储区域划分 277
16.4 驱动定制工具的使用 280
16.4.1 驱动定制工具简介 280
16.4.2 工具使用说明 281
16.4.3 GPIO/GPO设置 283
16.4.4 EINT设置 286
16.4.5 ADC设置 289
16.4.6 Keypad设置 292
16.5 设备默认值的设置 294
16.5.1 PWM设置 294
16.5.2 LCD对比度设置 296
16.5.3 电池电量等级设置 297
16.5.4 声音模块设置 298
16.6 可插入设备的配置 302
16.6.1 充电参数设置 302
16.6.2 辅助设备检测设置 304
16.6.3 USB设置 305
16.7 其他设备的配置 307
16.7.1 MSDC设置 307
16.7.2 触摸屏设置 308
16.7.3 LCD屏幕移植 310
16.7.4 摄像头移植 320