第1章 走进J2ME移动开发世界 3
1.1 3G时代的呼唤 3
基础篇 3
1.2 移动开发基础 4
1.2.1 移动设备操作系统 4
1.2.2 移动开发技术 6
1.3.1 J2ME的发展 7
1.3.2 J2ME在Java体系中的地位 7
1.3 什么是J2ME 7
1.4 J2ME技术框架 8
1.4.1 配置 9
1.4.2 简表 10
1.4.3 厂商可选包 11
1.5 JTWI标准 12
1.6 J2ME与WAP 13
1.6.1 什么是WAP 13
1.6.2 J2ME与WAP的关系 14
1.7 J2ME优势 14
小结 15
2.1 CLDC概述 16
2.1.1 CLDC的目标 16
第2章 面向移动信息设备的配置——CLDC 16
2.2 CLDC的功能范围 17
2.2.1 CLDC包含的功能 17
2.2.2 CLDC不包含的功能 17
2.1.4 CLDC的软件需求 17
2.1.3 CLDC的硬件需求 17
2.1.2 CLDC的整体需求 17
2.3 CLDC虚拟机——KVM 18
2.4 CLDC的安全机制 19
2.4.1 CLDC安全模型 19
2.4.2 CLDC中类的预审核机制 21
2.5 CLDC的类库 22
2.5.1 java.lang包 22
2.5.2 java.util包 23
2.5.3 java.io包 24
小结 25
2.5.4 javax.microedition.io包 25
2.6 CLDC 1.1的新特性 25
第3章 移动信息设备简表——MIDP 26
3.1 MIDP概述 26
3.2 MIDP的软硬件需求 26
3.2.1 硬件需求 26
3.2.2 软件需求 27
3.3 MIDP的范围 27
3.4 MIDP 2.0的新特性 28
小结 29
3.5 移动信息设备软件体系结构 29
第4章 搭建移动应用开发环境 30
4.1 引言 30
4.2 安装JDK 31
4.3 安装Eclipse 33
4.4 安装EclipseME插件 34
4.4.1 安装EclipseME插件 35
4.4.2 配置EclipseME组件 38
4.5 整合厂商开发包 40
4.5.1 整合WTK 2.2 41
4.5.2 整合诺基亚开发包 44
4.5.3 整合索尼爱立信开发包 48
4.6 开发环境测试 52
小结 57
第5章 Midlet编程基础 58
5.1 什么是Midlet 58
5.2 第一个Midlet 58
5.3.1 Midlet生命周期概述 62
5.3 Midlet的生命周期 62
5.3.2 通过示例程序来演示Midlet生命周期 63
5.3.3 Midlet对自身生命周期的影响 65
5.4 Midlet完整开发流程 66
5.4.1 概述 66
5.4.2 编码 66
5.4.3 编译 67
5.4.4 预审核 67
5.4.5 打包 68
5.4.7 在仿真器测试运行 73
5.4.6 混淆(可选) 73
5.4.8 发布 74
5.4.9 OTA下载 75
5.4.10 运行 78
5.5 Midlet执行环境 78
5.5.1 获取应用属性信息 79
5.5.2 获取系统平台信息 81
小结 83
5.5.3 获取内存容量 83
第6章 MIDP高级界面编程 85
6.1 LCDUI体系结构概述 85
6.1.1 不采用AWT/SWING 85
6.1.2 LCDUI工作模型 86
6.1.3 LCDUI的体系结构 86
6.2 高级用户界面编程基础 87
6.2.1 Display对象 87
6.2.2 Displayable对象 90
6.2.3 Ticker对象 91
6.3 Command处理机制 92
6.4 Screen对象 97
6.5 List组件 98
6.5.1 Choice接口 98
6.5.2 创建List对象 99
6.5.3 单选List 100
6.5.4 简易List 104
6.5.5 多选List 107
6.6 TextBox组件 109
6.7 Alert组件 112
6.8 Form类 119
6.8.1 StringItem组件 120
6.8.2 Item组件的命令处理机制 124
6.8.3 ImageItem组件 127
6.8.4 TextField组件 129
6.8.5 ChoiceGroup组件 131
6.8.6 Spacer组件 133
6.8.7 DateField组件 134
6.8.8 Gauge组件 136
6.8.9 获取Item组件的状态变化 140
小结 142
第7章 低级用户界面编程 143
7.1 低级用户界面编程概述 143
7.2 Graphics绘图 145
7.2.1 Graphics绘图坐标 145
7.2.2 颜色操作 145
7.2.3 绘图操作 147
7.2.4 绘制几何图形 148
7.2.5 线型 149
7.2.6 绘制文本 150
7.2.7 使用字体 152
7.2.8 绘制图像 154
7.3 底层事件处理 157
7.3.1 检测底层事件支持特性 157
7.3.2 按键事件的处理 159
7.3.3 游戏动作处理 162
7.3.4 触控事件的处理 165
7.4 高级Command命令处理 166
7.5 高级事件与低级事件的并发 168
7.6 高级屏幕与低级屏幕的协同 169
7.7 屏幕事件处理 171
7.8 深入研究屏幕绘制 177
7.9 开发自定义组件 180
小结 185
进阶篇 189
第8章 多线程和动画制作 189
8.1 Java多线程技术基础 189
8.1.1 利用扩展Thread类实现多线程 189
8.1.2 利用Runnable接口实现多线程 190
8.1.3 多线程间的同步 191
8.1.4 Java语言中的高级多线程特性支持 192
8.2 J2ME中的多线程 193
8.3 利用多线程实现动画 193
8.4 动画过程对于外部事件的处理 197
8.5 利用计时器和任务调度实现动画 201
小结 204
第9章 记录管理系统 205
9.1 RMS基本概念 205
9.2.1 打开RecordStore 206
9.2 管理RecordStore对象 206
9.2.2 关闭RecordStore 207
9.2.3 删除RecordStore 208
9.2.4 管理RecordStore的完整示例 208
9.2.5 获取RecordStore的属性信息 214
9.3 管理Record对象 215
9.3.1 增加Record 215
9.3.4 修改Record 216
9.3.5 自定义数据类型与字节数组的转换技巧 216
9.3.3 删除Record 216
9.3.2 获取Record 216
9.3.6 利用RMS实现记事本 217
9.4 RecordStore对象的高级操作 225
9.4.1 RecordEnumeration遍历接口 225
9.4.2 RecordFilter过滤接口 226
9.4.3 RecordCompartor比较接口 226
9.4.4 RecordListener监听器接口 226
9.4.5 利用高级接口实现移动日程表 227
小结 238
10.1 通用连接框架概述 239
10.1.1 J2ME联网特点 239
10.1.2 通用连接框架的概念 239
第10章 无线联网技术 239
10.1.3 GCF的层次结构 240
10.1.4 GCF的使用 241
10.2 使用HTTP连接Internet 241
10.2.1 建立HTTP连接 241
10.2.2 设置HTTP请求头标 242
10.2.4 HTTP连接示例 243
10.2.3 使用HTTP连接 243
10.3 开发Socket网络连接应用 248
10.3.1 Socket连接简介 248
10.3.2 Socket示例 248
10.4 开发Datagram网络连接应用 256
10.4.1 Datagram连接简介 256
10.4.2 Datagram示例 257
小结 262
11.1 Java语言的安全特性 263
第11章 MIDP安全体系模型 263
11.3 MIDP 2.0安全模型 264
11.3.1 许可 264
11.3.2 保护域 264
11.2 J2ME的安全机制 264
11.3.3 对许可的申请 265
11.3.4 工作组 265
11.3.5 两种Midlet 266
11.4 示例程序 267
11.5 MIDP应用的数字签名 270
11.7 什么时候需要数字签名 273
11.6 获得真实数字证书 273
小结 274
第12章 Push技术 275
12.1 Push技术概述 275
12.1.1 Push Registry组件 275
12.1.2 Push Registry应用编程接口 276
12.1.3 Push注册 277
12.1.4 Push事件的处理 277
12.2.1 静态注册的接入网络连接Push示例 278
12.2 基于接入网络连接的Push应用 278
12.2.2 动态注册的接入网络连接Push示例 282
12.3 动态注册与基于计时器的Push 289
12.4 Push应用开发注意事项 292
12.4.1 安全性问题 292
12.4.2 Push程序需注意的问题 292
小结 292
13.2 MMAPI体系架构 295
13.1 概述 295
第13章 移动多媒体开发 295
游戏和多媒体篇 295
13.3 Player状态模型 297
13.4 与其他规范的关联 298
13.4.1 与MIDP 2.0 Media API的区别 298
13.4.2 与高级多媒体补充规范JSR-234的比较 298
13.5 设备多媒体支持特性的测试 299
13.6 播放单音和序列音乐 300
13.7 播放声音媒体文件 303
13.8 利用PlayListener接口实现复杂播放控制 306
13.9 播放视频 309
13.10 利用MMAPI实现视频捕捉功能 313
小结 318
第14章 J2ME游戏开发基础 319
14.1 J2ME Game API概述 319
14.2 游戏编程基础 320
14.3 GameCanvas类的使用 321
14.3.1 键盘状态存储机制 321
14.3.2 双缓存机制 322
14.3.3 基于GameCanvas类的游戏结构设计 323
14.4 基于GameCanvas类开发游戏的示例 324
14.5 使用Sprite类 327
14.5.1 创建Sprite帧 327
14.5.2 帧序列 327
14.5.3 绘制Sprite 328
14.5.4 创建和绘制Sprite的示例程序 328
14.5.5 参考像素点 331
14.5.6 Sprite的变换 331
14.5.7 Sprite变换的示例程序——跳舞的小天使 332
14.6.1 Layer类 335
14.6.2 LayerManager类 335
14.6 在游戏开发中使用图层 335
14.6.3 利用多图层实现魔幻坦克 336
14.7 使用TiledLayer类制作游戏背景 340
14.7.1 贴图 340
14.7.2 TiledLayer类 341
14.8 游戏中的碰撞检测 344
小结 348
15.1 移动3D技术发展现状 349
第15章 利用移动3D API进行高级游戏开发 349
15.2 移动3D图形标准——M3G 350
15.3 M3G规范的总要求 350
15.4 与其他相关API的对比 351
15.5 M3G类库 351
15.6 M3G属性 352
15.7 使用立即模式绘制3D图形 353
15.7.1 M3G坐标系统 354
15.7.2 定义3D对象 354
15.7.3 设置观察对象 356
15.7.4 绘制第一个3D对象 357
15.7.5 为3D实体添加色彩 358
15.7.6 背面拣选 362
15.7.7 基本变换 366
15.7.8 投影变换 369
15.7.9 深度缓存 371
15.7.10 光照 374
15.7.11 材质 375
15.7.12 纹理 381
15.8 使用保留模式绘制3D图形 385
小结 390
高级篇 393
第16章 WMA编程 393
16.1 WMA概述 393
16.2 WMA消息类型 394
16.3 WMA连接 395
16.4 发送和接收文本消息 397
16.5 发送和接收多媒体消息 403
16.6 接收手机广播消息 413
小结 418
第17章 访问移动设备上的文件 419
17.1 FileConnection概述 419
17.2 FileConnection API安全特性 420
17.3 测试设备的文件访问支持特性 421
17.4 列出移动设备文件系统的所有的根目录 422
17.5 实现移动设备上的文件浏览器 424
17.6 监视移动存储卡的操作 433
17.7 为照相机添加图片保存功能 436
小结 442
第18章 管理移动设备上的个人信息 443
18.1 PIM API概述 443
18.2 PIM API安全特性 445
18.3 设备支持特性检测 446
18.4 管理电话本信息 447
18.5 管理日程表信息 467
18.6 管理任务表信息 480
小结 492
参考文献 493