第1章 J2ME开发简介 1
1.1 J2ME基本概念 2
1.1.1 J2ME简单介绍 3
1.1.2 JVM、CVM和KVM的介绍 5
1.1.3 CDC与CLDC介绍 6
1.1.4 J2ME简表 7
1.1.5 J2ME的Java企业系统体系结构 7
1.2 J2ME开发环境介绍 8
1.2.1 无线应用程序开发的介绍 8
1.2.2 J2ME Wireless Toolkit的介绍 9
1.3 支持J2ME的手机设备 9
1.3.1 Motorola手机 9
1.3.2 Nokia手机 10
1.3.3 索尼爱立信手机 11
1.3.4 三星手机 12
1.5 总结 13
1.4 J2ME的未来 13
第2章 MIDP开发环境配置 15
2.1 MIDP开发所需要的资源和工具 16
2.2 开发包的安装与配置 16
2.2.1 安装和配置J2SE SDK开发包 16
2.2.2 安装和配置J2ME Wireless Toolkit开发包 18
2.2.3 模拟器(emulator)的介绍和如何定制模拟器 18
2.3 开发工具的安装与配置 21
2.3.1 开发工具的选择 21
2.3.2 Eclipse的安装与汉化 22
2.3.3 EclipseMe插件的安装 24
2.3.4 EclipseMe插件的配置 26
2.4 第一个简单手机程序Hello World 30
2.4.1 Eclipse开发步骤 30
2.4.2 WTK开发步骤 35
2.6 总结 37
2.5 认识手机键盘 37
第3章 开发MIDP程序 39
3.1 MIDlet程序基本框架 40
3.2 MIDlet的生命周期 40
3.3 MIDP Profile的介绍 41
3.4 OTA发布程序 44
3.4.1 MIDlet程序属性设置 44
3.4.2 服务器安装 45
3.4.3 在服务器上发布程序 46
3.4.4 通过OTA安装MIDlet程序 46
3.5 MIDP 2.0增加的新特性 48
3.6 总结 48
第4章 MIDP高级界面开发 49
4.1 MIDP高级界面开发简介 50
4.1.1 Display类的开发 50
4.2.1 什么是事件 51
4.2 事件处理 51
4.1.2 基本控件开发简介 51
6.3 记事本 1 52
4.2.2 按钮、菜单编程基础 52
4.2.3 处理高级别事件 55
4.2.4 处理低级别事件 56
4.3 基本屏幕控件实例 56
4.3.1 TextBox 56
4.3.2 List 57
4.3.3 Alert 67
4.3.4 Form 70
4.3.5 Ticker 71
4.4 使用Item控件实例 72
4.4.1 TextField 73
4.4.2 ImageItem 75
4.4.3 StringItem 77
4.4.4 ChoiceGroup 79
4.4.5 DateField 82
4.4.6 Gauge与线程应用 83
4.4.7 Spacer 88
4.5 对话框实例 89
4.5.1 对话框类的分析和实现 89
4.5.2 对话框类的应用 91
4.6 总结 93
第5章 MIDP低级界面开发 95
5.1 Canvas类的开发简介 96
5.1.1 Canvas简介 96
5.1.2 按键事件 96
5.1.3 触摸事件 97
5.2 Graphics类的开发简介 99
5.2.1 Graphics坐标 99
5.2.2 绘画基本图型 100
5.2.3 画字符串和定位点Anchor 102
5.2.4 调整原点坐标 106
5.2.5 颜色 108
5.2.6 字体 110
5.2.7 图像 114
5.2.8 裁减区 119
5.2.9 重绘机制 120
5.3 清屏和全屏 120
5.3.1 清屏 120
5.3.2 全屏 123
5.4 双缓存技术 125
5.5 CustomItem 127
5.6 综合实例1:编写欢迎画面 131
5.7 综合实例2:绘制心状图形 135
5.8 总结 137
第6章 常用手机功能设计与开发 139
6.1 倒计时 140
6.1.1 倒计时实例的技术特点 140
6.1.2 倒计时实例具体实现 140
6.2.1 时钟实例的技术特点 146
6.2 时钟 146
6.2.2 时钟实例的实现 147
6.3.1 记事本实例的技术特点 153
6.3.2 记事本实例的实现 154
6.4 日历 157
6.4.1 日历实例的技术特点 157
6.4.2 日历实例具体实现 158
6.5 总结 167
第7章 手机游戏开发基础 169
7.1 手机游戏简介 170
7.2 动画的制作 170
7.2.1 动画类型 171
7.2.2 设置合理的FPS 171
7.2.3 消除动画闪烁现象 171
7.2.4 绘制动画以及动画循环 171
7.3 使用计时器 176
7.4 设置游戏难度 180
7.5 游戏与玩家的交互 180
7.6 自定义游戏字体 181
7.7 俄罗斯方块游戏 191
7.7.1 俄罗斯方块游戏的技术特点 191
7.7.2 俄罗斯方块游戏的整体设计 192
7.7.3 俄罗斯方块形状设计 192
7.7.4 俄罗斯方块游戏面板 194
7.7.5 俄罗斯方块游戏算法 195
7.8 总结 201
第8章 手机游戏2D动画开发 203
8.1 MIDP2.0 2D游戏开发 204
8.2 GameCanvas类开发 205
8.2.1 GameCanvas类基本开发流程 205
8.2.2 GameCanvas类键盘输入 207
8.3.1 Sprite类开发基础 212
8.3 Sprite类开发 212
8.3.2 Sprite类碰撞检查 217
8.3.3 prite类旋转处理 218
8.3.4 精灵图片的参照点 219
8.4 TiledLayer类开发 220
8.5 LayerManager类开发 226
8.6 综合实例:精灵的碰撞 234
8.7 总结 241
第9章 手机3D游戏开发入门 243
9.1 MIDP2.0 3D游戏开发 244
9.2 手机3D图像开发基础 245
9.2.1 Scene Graph 245
9.2.2 World 245
9.2.3 Loader 245
9.2.5 播放简单3D画面 246
9.2.4 Graphics3D 246
9.3 播放手机3D动画 247
9.4 绘制一个旋转的立方体 253
9.5 总结 259
第10章 手机音效开发 261
10.1 MIDP2.0手机音效开发简介 262
10.1.1 MMAPI体系结构 262
10.1.2 Player接口 263
10.1.3 播放简单音调 265
10.2 播放MIDI音符 271
10.2.1 播放单个MIDI音符 272
10.2.2 连续播放MIDI音符 275
10.3 播放歌曲 275
10.4 控制歌曲音量 282
10.5 录制歌曲 290
10.6.1 击鼓程序介绍 291
10.6.2 击鼓程序的实现 291
10.6 综合实例:模拟击鼓效果 291
10.7 游戏音效 299
10.8 总结 301
第11章 手机视频程序开发 303
11.1 手机视频开发简介 304
11.1.1 视频开发基础 304
11.1.2 改进视频播放 308
11.2 捕捉视频图片 313
11.3 视频播放控制程序 318
11.3.1 播放类型的判断 318
11.3.2 视频播放屏幕类 321
11.3.3 视频播放主程序 334
11.4 总结 335
第12章 MIDP的数据持久存储开发 337
12.1 数据持久存储开发简介 338
12.2.1 记录文件的创建 339
12.2 记录文件的创建与删除 339
12.2.2 记录文件的关闭和删除 340
12.3 记录的添加和读取 341
12.4 记录的更新、删除和监听 347
12.4.1 记录的更新和删除 348
12.4.2 记录的监听 348
12.5 记录的过滤 348
12.6 记录的排序 350
12.7 记录格式的转换 351
12.8 电话本实例 352
12.8.1 电话本实例的介绍 352
12.8.2 电话本界面设计 352
12.8.3 记录格式的设计和实现 353
12.8.4 添加新记录的设计和实现 357
12.8.5 列举电话记录的设计和实现 361
12.8.6 记录查看与更新设计和实现 364
12.8.7 删除屏幕的设计和实现 367
12.8.8 查找屏幕的设计和实现 369
12.8.9 程序主屏幕的设计和实现 372
12.9 总结 375
第13章 无线网络开发 377
13.1 无线网络技术 378
13.1.1 窄带广域无线网 378
13.1.2 宽带广域无线网 379
13.1.3 局域无线网 380
13.2 MIDP通用网络开发接口 382
13.3 MIDP开发HTTP程序 383
13.3.1 使用StreamConnection接口 383
13.3.2 使用HttpConnection接口 386
13.3.3 显示服务器信息 388
13.3.4 Http方式与服务器交互信息 390
13.4 MIDP开发Socket程序 400
13.4.1 什么是Socket 400
13.4.2 开发MIDP的Socket点到点程序 401
13.5 MIDP开发Datagram程序 409
13.5.1 什么是Datagram 409
13.5.2 开发MIDP的Datagram点到点程序 410
13.6 总结 415
第14章 网络应用技巧 417
14.1 使用后台线程控制HTTP连接 418
14.1.1 主程序中直接使用后台线程 418
14.1.2 主程序中调用后台线程子类 422
14.2 创建线程等待图形画面 426
14.3 通过Http协议下载和观看图片 430
14.4 通过Http协议浏览网络文本 435
14.5 总结 439
第15章 应用实例:联网心理测试 441
15.1 程序整体设计 442
15.2 编写数据序列化接口 442
15.3.1 创建数据库表格 445
15.3 服务器端程序 445
15.3.2 编写测试程序 449
15.3.3 编写服务器端程序 452
15.4 客户端程序 458
15.5 总结 464
第16章 应用实例:移动银行 465
16.1 移动银行介绍 466
16.2 缴费系统的整体设计 467
16.3 缴费系统的数据序列化 468
16.4 缴费系统的功能模块设计 472
16.5 进度屏幕设计 473
16.6 网络处理模块设计 476
16.7 客户端屏幕类设计 483
16.7.1 登录屏幕设计 483
16.7.2 查询屏幕设计 486
16.7.3 设置账户信息屏幕设计 487
16.7.4 编写主屏幕 491
16.8 服务器 493
16.8.1 创建数据库表格 493
16.8.2 编写服务器端Servlet 494
16.8.3 发布Servlet 498
16.8.4 测试程序 499
16.9 总结 499
第17章 高效开发 501
17.1 运行速度 502
17.1.1 测量程序速度 502
17.1.2 图形显示速度 504
17.1.3 使用线程 504
17.2 合理利用内存 504
17.2.1 释放资源 504
17.2.2 共用对象资源 507
17.3 JAR文件大小 509
17.4 总结 510