第1章OPhone平台概述 1
1.1 OPhone的架构 1
1.1.1 Linux内核 2
1.1.2本地库 2
1.1.3 OPhone运行环境 3
1.1.4 Widget运行环境 3
1.1.5应用程序框架 4
1.1.6应用程序 5
1.2开发OPhone应用程序 5
1.2.1开发语言 5
1.2.2 OPhone SDK 5
1.2.3 OPhone开发者社区 6
1.2.4 OPhone与Android应用开发的差异 6
1.3将OPhone应用上传到Mobile Market 7
1.3.1 Mobile Market的商业模式 7
1.3.2 Mobile Market发布流程 8
1.4小结 12
第2章OPhone开发环境和流程 13
2.1安装OPhone SDK和Eclipse 13
2.1.1安装Java SDK 14
2.1.2安装Eclipse 15
2.1.3安装Android SDK 15
2.1.4添加必要的Android SDK组件 16
2.1.5安装OPhone SDK 16
2.1.6安装ODT插件 17
2.1.7设置Java编译器的兼容级别 19
2.1.8安装WDT插件(可选) 20
2.2第一个OPhone应用程序 20
2.2.1新建OPhone项目 21
2.2.2运行OPhone项目 22
2.2.3更新资源文件 25
2.3调试OPhone应用程序 31
2.3.1设置断点 32
2.3.2启动调试 33
2.3.3单步跟踪 33
2.3.4真机调试 34
2.4在命令行下开发OPhone程序 35
2.4.1创建项目 35
2.4.2用Ant编译项目 36
2.4.3运行应用程序 37
2.5 OPhone SDK介绍 38
2.5.1 OPhone可视化软件开发工具(ODT) 39
2.5.2 Widget开发工具(WDT) 39
2.5.3 OPhone模拟器 39
2.5.4模拟SD卡 40
2.5.5 ADB 41
2.5.6 DDMS 41
2.6 OPhone可视化软件开发工具 43
2.6. 1 ODT界面介绍 43
2.6.2界面编辑功能 46
2.6.3代码生成功能 49
2.7小结 50
第3章OPhone应用程序模型 51
3.1 OPhone应用程序基础 51
3.1.1 OPhone应用程序运行环境 51
3.1.2 OPhone应用程序的组成 52
3.2 Activity 59
3.2.1 Activity创建与声明 59
3.2.2 Activity的生命周期 64
3.2.3启动Activity 70
3.2.4 Activity和Task 73
3.3 Content Provider 77
3.4 BroadcastReceiver 80
3.5 Service 82
3.6安全与许可 82
3.6.1安全架构 82
3.6.2许可 83
3.7数字签名 86
3.7.1签名策略 86
3.7.2签名步骤 86
3.8小结 88
第4章 图形用户界面 89
4.1用户界面概述 89
4.1.1手机软硬件特性的发展 89
4.1.2如何影响应用程序开发 90
4.1.3 OPhone图形引擎 90
4.2用户界面设计 91
4.2.1声明布局文件 91
4.2.2编写XML文件 91
4.2.3加载XML文件 92
4.2.4将数据绑定到AdapterView 93
4.2.5创建菜单 94
4.2.6创建Dialog 97
4.2.7通知用户 98
4.2.8处理用户输入 99
4.2.9样式与主题 100
4.3常用Widget 101
4.3.1 TextView 101
4.3.2 Button 104
4.3.3 ImageView 105
4.3.4 ProgressBar 106
4.3.5 DatePicker/TimePicker 109
4.3.6 GridView 110
4.3.7 Spinner 113
4.3.8 Gallery 114
4.3.9 TabHost 115
4.4高级图形用户界面技术 118
4.4.1图形系统类结构 118
4.4.2常用布局类 120
4.4.3绘制图形 126
4.4.4构建自己的组件 135
4.5图形动画 142
4.5.1 Animation 142
4.5.2 Interpolator 147
4.5.3 AnimationSet 148
4.5.4自定义动画 149
4.6 Resource介绍 153
4.6.1资源类型 154
4.6.2使用资源 155
4.6.3资源适配 156
4.7俄罗斯方块实例 158
4.7.1方块的数据结构 158
4.7.2方块渲染 161
4.7.3游戏区域设计 163
4.7.4碰撞检测 166
4.7.5输入处理 168
4.7.6积分排行榜 170
4.8 AppWidget 171
4.8.1 AppWidgetProvider 172
4.8.2 AppWidgetProviderInfo 173
4.8.3 RemoteViews 174
4.8.4 AppWidgetManager 175
4.8.5用自定义的类来实现RemoteViews 175
4.8.6 AppWidget开发调试技巧 177
4.9小结 178
第5章OpenGL ES编程 179
5.1 OpenGL ES概述 179
5.1.1 OpenGL ES设计准则 179
5.1.2 OpenGL ES与OpenGL的不同 180
5.1.3一个简单的OpenGL ES程序 183
5.2 3D观察与变换 185
5.2.1一个简单的例子:绘制立方体 186
5.2.2理解变换 191
5.2.3投影变换 193
5.2.4视口变换 195
5.2.5矩阵堆栈 196
5.3绘制图元 196
5.3.1图元种类 196
5.3.2指定顶点数据 198
5.3.3绘制图元 201
5.4颜色和光照 202
5.4.1设置颜色和材质 203
5.4.2光照 204
5.5光栅化和片元处理 208
5.5.1背面剪裁 208
5.5.2纹理映射 209
5.5.3雾 220
5.5.4反走样 222
5.5.5像素测试 224
5.5.6将片元合并到颜色缓存 227
5.6帧缓存操作 230
5.6.1清空缓存 230
5.6.2读取颜色缓存 231
5.6.3强制完成绘图指令 231
5.7其他 232
5.7.1行为控制函数 232
5.7.2状态查询 232
5.8 EGL简介 233
5.9小结 236
第6章 数据持久化存储 237
6.1文件存储 237
6.1.1存储至默认文件夹 238
6.1.2存储至指定文件夹 239
6.1.3存储至SD卡 241
6.1.4读取资源文件 242
6.2 SharePreference 243
6.3 SQLite 247
6.3.1创建数据库 247
6.3.2 SQLiteOpenHelper 250
6.3.3创建触发器 253
6.3.4创建索引 254
6.3.5创建视图 254
6.3.6操作数据 256
6.3.7将Cursor绑定到AdapterView 263
6.4 Content Provider 267
6.4.1概述 267
6.4.2创建自定义的Content Provider 270
6.4.3 Content Provider更新的通知机制 280
6.4.4 DAO接口及实现 281
6.5小结 283
第7章 移动多媒体编程 284
7.1多媒体文件格式与编码 284
7.1.1多媒体文件格式 284
7.1.2编码 285
7.1.3 OPhone平台支持的媒体格式 286
7.1.4选择合适的媒体文件 287
7.2音频和视频播放 287
7.2.1三种不同的数据源 287
7.2.2 MediaPlayer的状态 290
7.2.3音乐播放器实例 294
7.2.4播放视频 305
7.3录制音频 308
7.3.1 MediaRecorder的状态图 308
7.3.2录音器实例 310
7.4 MP3文件格式分析 315
7.4.1 MP3文件介绍 315
7.4.2 ID3 V 1标签 315
7.4.3 ID3V2标签 318
7.4.4 MP3帧结构 323
7.4.5分割MP3文件 330
7.5案例分析——铃声DIY 333
7.6小结 335
第8章 让程序在后台运行 336
8.1 Service概述 336
8.2 Service编程实践 337
8.2.1创建Service 337
8.2.2启动和停止Service 339
8.2.3通知用户 341
8.2.4不阻塞用户操作 343
8.2.5 Service与Activity通信 349
8.3后台播放音乐 350
8.3.1跨进程调用 350
8.3.2创建AIDL接口文件 351
8.3.3实现AIDL接口 352
8.3.4绑定Service 355
8.3.5调用IPC方法 356
8.4小结 358
第9章 访问网络数据和服务 359
9.1 HTTP协议简介 359
9.1.1 HTTP协议的主要特点 359
9.1.2 HTTP连接过程 360
9.1.3 HTTP消息格式 360
9.2线程管理 363
9.2.1匿名Thread 363
9.2.2 java.util.concurrent框架 364
9.2.3 AsyncTask 372
9.3网络编程接口 377
9.3.1 HttpClient API介绍 377
9.3.2 GET方法的使用和限制 381
9.3.3使用POST方法上传附件 385
9.3.4从服务器端下载图片 392
9.4设计C/S通信数据格式 394
9.4.1对象序列化 397
9.4.2使用XML传输对象 402
9.5数据连接管理 409
9.6小结 413
第10章 高级通信技术 414
10.1电话 414
10.1.1电话呼叫 414
10.1.2监听电话状态 416
10.1.3查询电话属性 420
10.1.4读取通话记录 420
10.2短消息 424
10.2.1发送短信 424
10.2.2接收短消息 426
10.3小结 428
第11章 访问硬件层 429
11.1访问相机 429
11.1.1创建Camera对象 429
11.1.2设置Camera参数 430
11.1.3预览 431
11.1.4拍摄照片 431
11.2访问位置服务 433
11.2.1创建LocationManager 433
11.2.2 LocationProvider类 434
11.2.3监听位置更新 435
11.2.4接近警报 436
11.3访问传感器 437
11.3.1 SensorManager类 437
11.3.2监听传感器事件 438
11.3.3方向传感器应用——指南针 439
11.3.4模拟传感器 442
11.4小结 445
附录A如何导入源代码 446
附录BResin安装与Servlet部署 448
参考文献 452