标题：OPhone应用开发权威指南 （第2版)
图书信息
中国移动创新系列丛书  OPhone应用开发权威指南 （第2版)
黄晓庆 主编
詹健飞 吴博 柳阳 孟昭 作者
ISBN 978-7-121-13366-4 
2011年6月出版 
定价：69.00元（含光盘1张）
16开
468页
宣传语
本书参展“十一五”国家重大科技成就展，并被新闻联播报道
OPhone可视化开发工具可以帮助开发者提高开发效率，降低开发门槛
内容简介
本书系统地介绍了OPhone OS 2.0的体系结构、应用程序开发流程和调试技巧，以及OPhone应用程序开发中所涉及的主要模块。全书结合30多个经典案例，阐述了OPhone平台的运行环境、应用程序模型、用户界面与图形引擎、数据持久化存储方案、移动多媒体框架、Service、联网接口、高级通信技术以及访问硬件层能力等内容。在介绍OPhone这一崭新的移动开发平台的同时，作者融入了大量的对于经典设计模式、工程项目开发技巧的介绍，使得本书在实际项目开发中具有重要的参考价值。 
本书适合有一定Java编程基础，希望从Symbian、Java ME或者Windows Mobile等平台过渡到OPhone平台的软件开发人员阅读，也可以作为高校师生的参考教材。
序
OPhone平台基于Linux和开放手机联盟（OHA）的Android系统，经过中国移动的创新研发，设计出拥有新颖独特的用户操作界面，增强了浏览器能力和WAP兼容性，优化了多媒体领域的OpenCORE、浏览器领域的WebKit等业内众多知名引擎，增加了包括游戏、Widget、Java ME等在内的先进平台中间件。
OPhone通过提供完备的API集合、统一的屏幕尺寸和用户界面接口等机制，大大缩短了应用程序向多种设备上移植的周期，提高了产品的可维护性。目前，OPhone平台主要支持两种应用程序模型，一种是使用Java语言编写的OPhone应用程序，另一种是使用HTML和JavaScript等脚本语言编写的Mobile Widget应用程序。
OPhone构建了开放、易用、界面友好的面向移动互联网的智能终端软件平台，为开发者提供了一个开源、开放的平台，把内容供应商、开发者和消费者紧密地联系在一起。在OPhone项目启动之初，中国移动就规划了OPhone开发者社区，提供专业的技术文档，鼓励开发者之间分享开发经验，加强开发者之间的交流。同时，中国移动已经发布了网上应用商店Mobile Market，开发者可以方便地将开发的OPhone应用程序提交到Mobile Market。我们相信，开发者的聪明才智终将极大地丰富OPhone平台的应用。
《OPhone应用开发权威指南》系统地介绍了OPhone平台的体系结构和应用程序模型，覆盖了图形用户界面、OpenGL ES、数据持久化存储、移动多媒体框架、后台运行程序、网络连接、Telephony和访问硬件层等知识。难能可贵的是，作者将设计模式和开发技巧融入到章节之中，并将已经提交到Mobile Market的商业应用源码作为案例在书中介绍，大大提高了本书的指导性和实用性。本书不但可以帮助读者掌握OPhone平台的系统知识，还可以提高读者在用户界面设计、多媒体和网络应用程序开发方面的能力，开发出架构合理、用户体验出色的OPhone应用程序。本书是OPhone系列丛书的第一本，中国移动还将出版OPhone游戏开发以及OPhone系统架构和原理方面的图书，帮助读者从多角度掌握OPhone平台的知识。
希望读者怀着一种轻松的心情阅读本书，享受在OPhone平台编写代码的乐趣，并为OPhone平台的发展献计献策。
中国移动通信研究院  院长
前  言
OPhone平台基于开放手机联盟（Open Handset Alliance，OHA）的Android系统，同时OPhone平台完全兼容Android系统。中国移动相信一个开放、先进的移动终端平台是向用户提供最好的应用程序和互联网体验的关键所在，中国移动致力于与OHA及开源社区一起推动智能终端在中国的普及和发展。为此，中国移动特编写本书以帮助开发者快速掌握OPhone平台的知识，推广OPhone平台的发展。
本书主要为在OPhone平台上开发应用程序的开发者提供指导，帮助读者快速熟悉OPhone平台的体系结构、应用程序模型，掌握OPhone应用程序开发所需的主要知识。尽管设计模式、多媒体和网络通信协议等内容不是本书的介绍重点，但是考虑到这些知识对实际项目开发有重要的参考意义，笔者将其作为OPhone应用开发的外延和补充，融入到各个章节中，目的是呈献给读者一本内外兼修的“权威指南”。相比上一版，本书增加了OPhone OS 2.0的特性介绍，包括数据连接管理等重点内容。
伴随各种智能终端平台发展的关键词是“设备分裂”和“功能受限”。设备分裂导致一款应用程序可能需要多次移植才可能覆盖尽可能多的终端设备，为了适配软件环境和硬件参数的差异，源代码中可能包含了大量的if/else语句，甚至是宏标记，使得代码难以维护；功能受限使得开发者巧妇难为无米之炊，如果平台没有提供所需要的API，那么再好的想法也只能是空想。在设计之初，OPhone平台就考虑到了上述问题。OPhone包含了丰富的本地库，并将这些底层接口通过JNI提供给应用程序开发者，在OPhone平台上编写应用程序会有一种如鱼得水、游刃有余的感觉。丰富的API、强大的功能在一定程度上避免了在API层面造成设备分裂；在资源管理方面，OPhone也是尽善尽美，良好的设计节省了大量代码维护和设备适配的工作。关于OPhone平台的优点，这里不再一一列举，读完本书您会喜欢上在OPhone上开发应用程序。
本书主要内容
结合丰富的案例，系统全面地介绍OPhone应用程序开发的知识是本书追求的目标。全书包括的30多个案例，其中不乏俄罗斯方块、铃声DIY等完整的案例，是学习OPhone应用程序开发的重要参考。在内容安排上，不但详细地介绍了OPhone应用程序开发的主要内容，包括Activity、Service、Content Provider和BroadcastReceiver，还在多媒体、联网应用程序开发中适当深入，帮助读者提高工程项目的开发能力。本书共有11章，主要内容如下：
 第1章“OPhone平台概述”，介绍了OPhone平台的体系结构、OPhone SDK、OPhone开发者社区和Android应用程序移植到OPhone平台指南。除此之外，还介绍了Mobile Market的商务合作流程。
 第2章“OPhone开发环境和流程”，主要介绍了如何搭建OPhone应用程序开发环境和开发流程。其中，调试技巧和OPhone SDK提供的工具是应用程序开发过程中的有益补充。除此之外，还介绍了OPhone可视化软件开发工具（ODT）等内容。
 第3章“OPhone应用程序模型”，深入介绍了OPhone应用程序的运行环境、OPhone应用程序的组成部分，包括Activity、Service、Content Provider和BroadcastReceiver，以及OPhone的安全体系和数字签名。
 第4章“图形用户界面”，深入介绍了OPhone的用户界面接口和2D图形引擎，包括XML布局文件、事件处理、常用UI组件、自定义View、动画和资源文件管理等。
 第5章“OpenGL ES编程”，深入介绍了OPhone平台的OpenGL ES编程，包括OpenGL ES设计准则、3D空间观察与变换、颜色和光照、纹理贴图、帧缓存操作、反走样及EGL使用等。
 第6章“数据持久化存储”，介绍了OPhone平台提供的文件、Preference、关系型数据库SQLite和Content Provider四种数据持久化存储方案。
 第7章“移动多媒体编程”，介绍了OPhone平台的多媒体框架，如何使用OPhone提供的音频和视频的播放、音频的录制等功能开发丰富多彩的移动多媒体应用程序。最后还深入分析了MP3文件格式，提供了MP3文件切割的解决方案。
 第8章“让程序在后台运行”，深入介绍了OPhone平台的Service组件，包括如何创建和启动Service，如何在单独线程处理耗时的任务，如何使用AIDL语言等。
 第9章“访问网络数据和服务”，主要介绍了OPhone平台连接互联网的能力，重点介绍了OPhone平台的数据连接管理和基于HTTP的联网应用程序开发。除了介绍开发联网应用程序常见的API之外，还介绍了设计通信数据格式和内容编码检测等高级话题。
 第10章“高级通信技术”，主要介绍了OPhone平台提供的通信层API，借助这些API可以方便地访问电话和短信等功能。
 第11章“访问硬件层”，介绍了如何使用OPhone提供的API访问设备的硬件层，包括Camera、位置服务和传感器。
如何使用光盘中的代码
本书的案例代码全部基于Eclipse和OPhone SDK 2.0开发完成，读者可以参考附录A“如何导入源代码”将案例导入到Eclipse中。由于OPhone SDK 2.0与Android SDK 2.1兼容，本书的程序也可以在Android 2.1平台上正常运行。
OPhone开发者的财富之路
中国移动推出的Mobile Market 为开发者提供了广阔的发展空间，而OPhone作为Mobile Market支持的旗舰平台有着非凡的“钱”景。开发者可以免费注册成为中国移动的开发者用户，编写OPhone应用程序并上传到Mobile Market，你的应用将可以被中国移动的5亿用户下载使用，销售收入的70%归开发者所有。本书将是OPhone开发者通往财富之路的一把钥匙。
OPhone开发者社区
读者在阅读本书过程中，如果有任何疑问，都可以登录OPhone开发者社区寻求帮助。OPhone开发者社区提供最新的SDK下载、在线技术文档、论坛和博客等多项服务，目的是加强开发者之间的交流，提高开发者的能力。相信您在阅读过程中遇到的问题可以在OPhone开发者社区及时地得到解决。
关注OPhone系列丛书
本书是《中国移动创新系列丛书》中的一本，中国移动还将出版专注于OPhone游戏开发以及OPhone系统架构和原理方面的图书。全方位的OPhone系列丛书将帮助读者从底层操作系统到上层应用程序开发全面了解OPhone平台。
OPhone游戏开发指南将带领读者跨越游戏开发的全过程，从游戏的分类和策划谈起，介绍游戏的结构设计和编程，讲解游戏的性能优化和移植，直到最后游戏的发布。书中通过完整的案例介绍休闲、动作、RPG等游戏类型的开发技巧，介绍事件处理、状态机、图形绘制、算法的知识。作为高级话题，还将探讨3D游戏开发和联网游戏开发，以及游戏引擎和游戏辅助工具的内容。
OPhone系统架构和原理借助OPhone平台的开源特性，将完整的手机操作系统架构和原理展现给读者。深入分析Linux内核、Dalvik虚拟机、系统库和应用程序框架的核心部件及技术细节，包括内存和缓存管理、进程和线程、I/O系统、文件系统、安全机制、启动、硬件驱动编程、JNI机制等内容。
目  录
第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  ID3V1标签 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
附录B  Resin安装与Servlet部署 448
参考文献 452