第1篇 基础入门篇 2
第1章 Java ME基础知识 2
1.1 Java ME开发中的Java语法 3
1.1.1 数据类型和运算符 3
1.1.2 语句 5
1.1.3 面向对象开发 9
1.2 Java ME应用程序概述 15
1.2.1 Java ME系统典型结构 15
1.2.2 MIDlet的生命周期 16
1.3 移动开发中的常用规范 17
1.4 小结 17
第2章 Eclipse的安装和开发环境配置 19
2.1 安装并配置JDK 20
2.2 安装Eclipse 23
2.2.1 Eclipse 3.1.2新功能及改进 23
2.2.2 下载和安装Eclipse 3.1.2 25
2.2.3 安装Eclipse中文语言包 26
2.3 安装EclipseME 29
2.4 安装Java ME开发SDK 31
2.4.1 安装Sun WTK开发包 32
2.4.2 安装摩托罗拉Java ME开发包 35
2.4.3 安装诺基亚Java ME开发包 37
2.4.4 安装索尼爱立信Java ME开发包 38
2.5.1 快速创建Java ME应用程序 40
2.5 在Eclipse中快速创建Java ME应用程序 40
2.5.2 Java ME工程结构分析 41
2.5.3 工程文件配置 42
2.5.4 Java应用程序描述文件(JAD)分析 43
2.5.5 运行程序和打包 44
2.6 小结 46
第3章 Eclipse中的Java ME开发环境 47
3.1 Eclipse平台技术概述 48
3.2 工作空间 48
3.3 Eclipse菜单 49
3.3.1 “文件”子菜单 50
3.3.2 “编辑”子菜单 51
3.3.4 “帮助”子菜单 53
3.3.3 “项目”子菜单 53
3.4 视图 54
3.4.1 “包资源管理器”视图 55
3.4.2 “问题”视图 55
3.4.3 “层次结构”视图 56
3.4.4 “书签”视图 57
3.4.5 “任务”视图 58
3.4.6 “搜索”视图 59
3.5 源代码编辑器 60
3.5.1 快速编写代码 60
3.5.3 快速修正功能(引用添加) 61
3.5.4 管理导入语句 61
3.5.2 格式化Java代码 61
3.6 定制Eclipse开发环境 62
3.6.1 工作空间选项配置 62
3.6.2 启动和关闭配置 63
3.7 小结 63
第2篇 图形用户界面设计篇 66
第4章 简单用户界面开发 66
4.1 Java ME用户界面概述 67
4.1.1 Display类 67
4.1.2 Displayable类和Screen类 70
4.2.1 长标签和短标签 71
4.2 使用命令按钮 71
4.2.2 命令按钮的类型及对出现顺序的影响 75
4.2.3 命令按钮的优先级及对出现顺序的影响 81
4.2.4 命令按钮的事件处理 84
4.3 使用TextBox 88
4.3.1 创建TextBox对象 88
4.3.2 设置输入法 90
4.3.3 文本处理 92
4.3.4 光标位置在不同模拟器中的差异 95
4.4 使用滚动条 99
4.5 使用列表窗口 102
4.5.1 列表窗口的类型 102
4.5.2 获得被选中的内容 104
4.5.3 维护列表 112
4.5.4 设置列表图标 117
4.5.5 设置字体以及实现级联菜单 120
4.6 小结 128
第5章 表单窗口Form开发 129
5.1 简单表单应用 130
5.1.1 表单中的条目Item 130
5.1.2 表单项目维护 131
5.2 在表单中使用TextField 133
5.3 在表单中使用DateField 134
5.3.1 Date 134
5.3.2 DateField的使用方法 135
5.4.1 Gauge的重要函数 138
5.4 在表单中使用Gauge 138
5.4.2 Gauge的工作模式 139
5.5 在表单中使用图像 143
5.5.1 重要属性和方法 144
5.5.2 图像和文本的显示模式 145
5.6 在表单中使用ChoiceGroup 149
5.6.1 ChoiceGroup的界面风格 149
5.6.2 ChoiceGroup中的选项管理 152
5.7 监听表单条目状态 153
5.8 使用提示窗口 153
5.9 小结 155
第6章 Java ME开发基础——异常处理和多线程 156
6.1.1 CLDC中的异常类 157
6.1 异常概述 157
6.1.3 运行时异常 158
6.1.2 Throwable和Exception 158
6.2 捕获和抛出异常 159
6.2.1 捕获异常 159
6.2.2 异常抛出 160
6.3 多线程概述 161
6.4 通过Runnable接口实现多线程 162
6.5 通过Thread类实现多线程 163
6.5.1 通过继承Thread类实现线程 163
6.5.2 通过匿名类实现线程 164
6.6 线程同步 164
6.7.1 线程的状态 168
6.7 线程的状态控制 168
6.7.2 线程状态的转换控制 169
6.8 小结 170
第7章 画布开发 171
7.1 显示画布屏幕 172
7.1.1 画布概述 172
7.1.2 画布应用程序的基本构架 172
7.2 全屏显示模式 174
7.3 处理按键事件 174
7.3.1 处理标准键盘输入 174
7.3.2 处理游戏动作 175
7.3.3 特殊按键的处理 177
7.3.4 按键处理实例 178
7.4 处理指针事件 181
7.5 绘制文本和字体 183
7.5.1 文本绘制函数 184
7.5.2 文本绘制的定位点 185
7.5.3 文本绘制实例 186
7.6 在画布上绘制简单图形 189
7.6.1 设置绘图颜色 189
7.6.2 二维几何图形绘制函数 190
7.6.3 简单图形绘制实例 193
7.7 在画布上显示图像 198
7.8 简单动画技术 203
7.9 小结 207
第8章 Java ME开发中的各种常用技术 208
8.1 MIDlet各个状态的处理策略 209
8.2 数学运算 212
8.2.1 CLDC 1.0中提供的数学运算库 212
8.2.2 CLDC 1.1中提供的数学运算库 212
8.2.3 在CLDC 1.0中进行开方运算 213
8.2.4 在CLDC 1.0中进行正弦运算 219
8.3 随机数 223
8.3.1 CLDC 1.0中的Random类 223
8.3.2 CLDC 1.1中的Random类 224
8.3.3 随机数使用实例 224
8.4 字符串处理 226
8.4.1 String类 227
8.4.2 StringBuffer类 229
8.5 时间和时区管理 231
8.5.1 时区管理 231
8.5.2 日历管理 239
8.6 定时器和定时器任务 245
8.6.1 Timer与TimerTask的使用 245
8.6.2 通过定时器实现动画——简单时钟制作 246
8.6.3 固定延迟定时和固定频率定时 248
8.7 振动和背光灯控制 249
8.8 小结 250
第9章 记录管理系统 252
第3篇 数据存储与个人信息访问篇 252
9.1 记录管理系统概述 253
9.1.1 记录管理系统的基本概念 253
9.1.2 打开和关闭记录集 253
9.2 添加和删除记录 255
9.3 读取和修改记录 256
9.4 在记录中保存二进制数据 257
9.4.1 将图像数据转换为二进制数据 257
9.4.2 二进制数据还原为图像数据 258
9.4.3 在RMS中存储图像数据实例 258
9.5 记录管理系统的使用技巧 263
9.5.4 如何删除摩托罗拉SDK中的记录集数据文件 264
9.5.3 摩托罗拉E680手机的RMS大小限制 264
9.5.1 RecordStoreFullException异常处理 264
9.5.2 MIDlet-Data-Size属性 264
9.6 小结 265
第10章 记录管理高级应用 266
10.1 遍历记录 267
10.1.1 通过getNextRecordID函数进行遍历 267
10.1.2 通过enumerateRecords函数进行遍历 268
10.2 记录监听 268
10.2.1 RecordListener接口概述 268
10.2.2 记录监听实例 269
10.3 查询记录和数据过滤 278
10.4 数据排序 281
10.5 小结 283
第11章 文件系统开发 285
11.1 通用连接框架 286
11.1.1 javax.microedition.io开发包概述 286
11.1.2 通用连接框架 287
11.2 访问文件系统 288
11.2.1 访问根文件系统注册信息 288
11.2.2 打开和关闭文件系统 288
11.3 文件和文件夹的访问 289
11.4 创建和删除文件/文件夹 294
11.5 读写文件数据 296
11.6 文件的复制和移动 297
11.7 访问文件属性 298
11.8 小结 300
第12章 访问个人信息 301
12.1 PIM包概述 302
12.2 访问被支持的字段信息 302
12.2.1 打开和关闭PIM列表 303
12.2.2 获取支持的字段 304
12.3 添加/删除联系人 308
12.3.1 联系人标准字段的数据类型 308
12.3.2 添加联系人 309
12.3.3 删除联系人 312
12.3.5 添加/删除联系人实例 313
12.3.4 修改联系人信息 313
12.4 获取全部联系人 318
12.5 精确或模糊查找联系人 322
12.6 访问分类信息 328
12.7 访问日程安排 331
12.8 处理待办事项 333
12.9 vCard 335
12.10 小结 337
第4篇 多媒体技术及游戏开发篇 340
第13章 多媒体技术开发 340
13.1.2 支持的声音格式 341
13.1.1 多媒体编程接口版本 341
13.1 声音和音乐播放 341
13.1.3 声调播放实例 342
13.1.4 MIDI、WAV和MP3播放实例 343
13.1.5 游戏中的背景音乐和声效 348
13.2 视频播放 349
13.2.1 Java ME支持的视频格式 349
13.2.2 播放视频的方法及实例 349
13.3 控制照相机 354
13.4 捕获声音 356
13.5 小结 358
第14章 动画及游戏开发 359
14.1.1 处理游戏循环 360
14.1 游戏画布GameCanvas 360
14.1.2 处理外部事件 361
14.2 游戏精灵Sprite 365
14.2.1 图层抽象类Layer 365
14.2.2 实现精灵动画 365
14.2.3 精灵的移动和转动 367
14.2.4 游戏精灵碰撞检测 371
14.3 定义游戏图层TiledLayer 372
14.4 图层管理器LayerManager 373
14.4.1 层的安排 373
14.4.2 地图滚动控制 373
14.5 简单的游戏开发实例 374
14.6 小结 382
第15章 JSR 184 3D编程接口 383
15.1 JSR 184 3D应用程序的结构 384
15.1.1 移动3D应用程序的组成结构 384
15.1.2 JSR 184开发包中的类 384
15.1.3 典型的3D应用程序结构 385
15.2 导入3D图形文件 387
15.3 播放M3G中定义的动画 389
15.4 复制3D物体 392
15.4.1 在3D空间中查找物体 393
15.4.2 复制3D物体 394
15.5 移动物体 398
15.6 简单多边形物体的生成 402
15.7 灯光效果 410
15.8 使用材质 419
15.9 使用纹理 423
15.10 烟雾效果 426
15.11 小结 431
第16章 Micro3D V3编程接口 432
16.1 创建简单的3D模型 433
16.1.1 Mascot Capsule v3 API概述 433
16.1.2 应用程序基本框架 433
16.1.3 创建简单的3D物体 435
16.1.4 创建简单的3D物体实例 436
16.2.1 移动、旋转和缩放3D物体原理 441
16.2 移动、旋转和缩放3D物体 441
16.2.2 移动、旋转和缩放3D物体实例 442
16.3 灯光效果 445
16.3.1 灯光效果实现原理 446
16.3.2 灯光效果实现实例 446
16.4 使用纹理 449
16.4.1 纹理实现原理 449
16.4.2 纹理实现实例 450
16.5 装载外部3D模型 453
16.5.1 创建3D模型的方法 453
16.5.2 装载外部3D模型的方法 453
16.5.3 装载外部3D模型实例 454
16.6 小结 456
第5篇 网络与数据传输篇 458
第17章 HTTP应用程序开发 458
17.1 HTTP应用概述 459
17.1.1 HTTP协议的工作原理 459
17.1.2 IP地址及URL组成 460
17.1.3 HTTP协议请求信息 460
17.1.4 HTTP协议响应信息 461
17.2 下载并安装Tomcat服务器 462
17.3 使用GET方法交换数据 464
17.4 使用POST方法交换数据 467
17.5 访问HTTP头部信息 471
17.6 小结 476
第18章 Socket和UDP编程 477
18.1 Socket的基本概念 478
18.1.1 Socket通信原理 478
18.1.2 基于Socket的服务器和客户端开发流程 478
18.2 开发Socket服务器程序 479
18.2.1 ServerSocketConnection接口概述 480
18.2.2 Socket服务器程序实例 481
18.3 开发Socket客户端程序 486
18.3.1 SocketConnection接口概述 486
18.3.2 Socket客户端程序实例 487
18.4 UDP概述 491
18.4.1 UDP的应用 491
18.4.2 基于UDP的服务器和客户端开发流程 492
18.5 开发UDP服务器程序 493
18.5.1 UDPDatagramConnection接口概述 493
18.5.2 DatagramConnection接口和Datagram接口 493
18.5.3 UDP服务器程序实例 495
18.6 开发UDP客户端程序 499
18.7 小结 501
第19章 蓝牙通信技术 502
19.1 蓝牙概述 503
19.1.1 蓝牙协议栈 503
19.1.2 蓝牙剖面 504
19.2 蓝牙开发接口(JSR 82) 505
19.3 发现蓝牙设备 505
19.3.1 获得本地蓝牙设备信息 506
19.3.2 获得远端蓝牙设备 509
19.4 基于L2CAP的数据传输控制 514
19.4.1 L2CAP服务器设计及实例 514
19.4.2 查找L2CAP服务器 519
19.4.3 L2CAP客户端设计及实例 521
19.5 基于RFCOMM的数据传输控制 529
19.5.1 基于RFCOMM蓝牙服务器开发 529
19.5.2 基于RFCOMM蓝牙客户端开发 533
19.6 小结 538
第20章 消息系统开发 539
20.2 发送和接收简单文本信息 540
20.1 JSR 120和JSR 205 540
20.2.1 发送文本消息 541
20.2.2 接收文本消息 546
20.3 发送和接收二进制消息 551
20.3.1 发送二进制消息 551
20.3.2 接收二进制消息 552
20.4 发送和接收多媒体消息 555
20.4.1 多媒体消息的组成 555
20.4.2 MultipartMessage接口 555
20.4.3 多媒体消息的收发 556
20.5 接收小区广播 563
20.6 小结 565
第21章 Eclipse在移动开发中的高级应用 568
第6篇 高级专题篇 568
21.1 进行代码重构 569
21.1.1 重构子菜单 569
21.1.2 重命名(Rename) 569
21.1.3 移动(Move) 571
21.1.4 更改方法特征符 571
21.1.5 将匿名类转换为嵌套类 572
21.1.6 将成员类型移至新文件 573
21.1.7 下推(Push Down)和上拉(Pull Up) 575
21.1.8 抽取接口(Extract Interface) 575
21.2 程序调试 575
21.2.1 设置调试参数 575
21.2.2 设置程序断点 576
21.2.3 查看变量值 579
21.3 小结 580
第22章 对Java ME程序进行单元测试 581
22.1 单元测试概述 582
22.1.1 单元测试的必要性 582
22.1.2 单元测试的方法 583
22.2 JUnit概述 584
22.3 通过JUnit进行单元测试 585
22.3.1 设置JUnit 586
22.3.2 单项测试 586
22.3.3 多项测试 591
22.4.1 通过J2MEUnit进行单元测试 593
22.4 通过J2MEUnit进行单元测试 593
22.4.2 基于手机界面的单元测试 599
22.5 小结 602
第23章 Java ME程序与其他系统的综合开发——迷宫对战游戏 603
23.1 Java ME程序与其他系统的整合方法 604
23.1.1 单机程序的系统整合方法 604
23.1.2 联机程序的系统整合方法 605
23.2 迷宫对战游戏的整体设计 606
23.2.1 游戏创意 606
23.2.2 服务器端的设计 607
23.2.3 数据库设计 608
23.2.4 通信协议设计 609
23.3.1 客户端结构 614
23.3 手机客户端游戏开发 614
23.3.2 登录模块的实现 615
23.3.3 游戏大厅的实现 619
23.3.4 游戏画布的实现 622
23.3.5 与服务器进行通信 625
23.4 服务器端开发 635
23.4.1 客户端管理 635
23.4.2 游戏迷宫的随机生成方法 636
23.4.3 数据库维护 638
23.4.4 游戏通信协议定义 640
23.5 小结 640