分类: 嵌入式
2012-03-20 16:50:09
我们现在正步入新的世界,移动设备逐渐成为人们与Internet互联的主要方式,开发移动设备应用正成为人们新的追求。供应商之间的竞争也日趋白热化,这导致市场中充满了各种各样的设备。
我们看到各个供应商都在为自己的设备提供开发工具与市场,并希望围绕着自己的产品创建软件生态圈。在很大程度上,一些供应商的战略也是这样的。开发者使用这些工具并为特定的设备创建“原生”应用,然后需要重新构建应用的大部分内容以面向各种不同的设备。
对于构建移动应用的公司来说,这是可接受的方式。然而,从长远来看,这种方式是行不通的。考虑到拥有Web产品的每个公司在未来几年间都需要为多种设备提供桌面版的Web应用与适合的移动客户端。再考虑软件开发者的数量——就像你我,还有其他开发者。我们拥有必要的资源满足这种需求吗?我没有。一定会有更好的方式。确实是有的。
构建移动Web应用是更好的方式。这是一种移动应用开发的方式,你只需要重写很少的代码就可以满足市场上存在的众多设备的需求。本书关注于为Android编写移动Web应用,但实际上,很多概念也可以轻松移植到其他移动设备上(这是重点)。
何谓移动Web应用
移动Web应用就是使用核心客户端Web技术HTML、CSS与JavaScript构建,并且专门针对移动设备的应用。吸引人们关注移动Web应用是HTML5与CSS3的趋势——这两个技术的“最新版”。本书会详细介绍HTML5、CSS3和JavaScript。
JavaScript是令很多开发者又爱又恨的语言。有些人甚至都不把它看做是一门编程语言。然而,JavaScript很可能会成为未来5年内最需要的技能之一。
本书使用了哪些技术
本书将会使用大量JavaScript代码。显然还会使用很多HTML与CSS,但JavaScript确实是适合于移动Web应用开发的语言。
如果不熟悉JavaScript,那么我们并不会将你置于纷繁复杂的JavaScript代码中,我们会推荐一些学习资料,因为这并非一本JavaScript基础书。我们还大量使用了优秀的jQuery JavaScript库以简化开发。如果不熟悉jQuery,那么我们建议你看看jQuery教程。如果熟悉Prototype、MooTools或是其他的jQuery“竞争者”,那么你可以很轻松地修改书中的示例代码。
对于移动Web应用来说(以及其他的富JavaScript Web应用),掌握如何组织应用以保证可读性与可维护性是很重要的。这正是本书中使用了很多小应用项目而非代码片段来展示特定功能的原因所在。这样你就可以熟悉移动Web应用开发的方方面面,还能理解如何高效地整合真实世界中的移动Web应用。
如果熟悉Web应用开发,那么通过本书的学习,你就可以轻松转换到移动Web应用开发上来。但如果你熟悉移动应用开发,想要学习Web应用开发方式,那么学习额外的资料将是非常重要的。
本书内容
本书围绕着两个应用示例展开,你会从中学习到移动Web应用开发的方方面面。第2章~第6章介绍了首个迷你应用,它是一个简单的“任务清单列表”应用,第8章~第12章则从头开始介绍如何构建一个简单的位置感知游戏。
在这两顿大餐之间还有3章作为“点心”。第1章主要介绍了编写Android Web应用的基本概念。第7章简要介绍了交互性与HTML5 canvas。第13章介绍了移动应用世界的未来。
目 录
第1章 入门 1
1.1 了解Android平台功能 1
1.1.1 设备连接 2
1.1.2 触摸 2
1.1.3 地理位置 3
1.1.4 硬件传感器 3
1.1.5 本地数据库与存储 4
1.1.6 相机支持 4
1.1.7 消息与推送通知 4
1.1.8 WebKit Web浏览器 5
1.1.9 进程管理 5
1.1.10 Android OS特性小结 6
1.2 准备开发环境 6
1.2.1 文本编辑器与工作目录 7
1.2.2 Web服务器 7
1.2.3 模拟器 9
1.3 Hello World 13
1.4 小结 15
第2章 构建移动HTML输入表单 17
2.1 面向移动Web的HTML 17
2.1.1 面向移动的网页 17
2.1.2 添加表单元素 21
2.2 添加样式 22
2.2.1 使用CSS3的表单样式 24
2.2.2 改进页面标题的外观 26
2.2.3 针对不同的屏幕尺寸编写代码 27
2.2.4 处理设备方向的变化 28
2.3 添加表单验证 32
2.4 小结 38
第3章 HTML5 Storage API 39
3.1 Web Storage API 39
3.1.1 使用JSON将对象保存到
Web Storage中 41
3.1.2 Local Storage与Session
Storage 45
3.2 Web SQL Database 45
3.2.1 使用客户端数据库保存任务清
单条目 46
3.2.2 数据库的版本化与升级 51
3.3 小结 53
第4章 构建多页面应用 55
4.1 单个HTML文件、多个应用
页面 55
4.1.1 创建视图管理器 58
4.1.2 实现视图动作 60
4.2 构建应用的主界面 62
4.2.1 修改ViewManager功能 65
4.2.2 主界面的存储需求 66
4.2.3 装配主界面 70
4.3 构建所有任务界面 72
4.4 实现视图栈 78
4.5 小结 81
第5章 与云进行同步 83
5.1 探索在线存储的选择 83
5.1.1 在线同步存储的需求 83
5.1.2 避免3层架构 84
5.1.3 用户认证 84
5.1.4 JavaScript同步库 84
5.1.5 可能的同步解决方案 85
5.2 Google App Engine入门 85
5.2.1 在本地部署jsonengine 86
5.2.2 选择合适的同步模式 87
5.2.3 向jsonengine发送离线数据 87
5.3 针对在线同步更新用户界面 89
5.4 开发桌面界面 92
5.4.1 查询jsonengine实例 92
5.4.2 将应用部署到云中 95
5.5 小结 95
第6章 与原生应用竞争 97
6.1 添加轻量级动画与类似于原生
应用的布局 97
6.1.1 添加简单的旋转加载器 97
6.1.2 添加可滚动的内容 100
6.1.3 修改动作栏 102
6.2 为应用添加位置感知特性 103
6.3 离线运行应用 108
6.3.1 离线缓存清单文件 108
6.3.2 探索隐蔽的离线缓存特性 109
6.3.3 检测连接状态 111
6.4 小结 112
第7章 探索交互性 113
7.1 HTML5 Canvas简介 113
7.2 为Canvas绘制增加交互性 115
7.2.1 交互:使用鼠标 115
7.2.2 交互:使用触摸 117
7.3 实现Canvas动画 119
7.3.1 创建动画循环 120
7.3.2 绘制一帧动画 121
7.3.3 绘制图像:考虑设备DPI 124
7.4 高级动画技术 128
7.4.1 在动画中实现逼真的移动 128
7.4.2 Canvas变换与动画 132
7.4.3 小汽车动画的变换 134
7.5 小结 137
第8章 基于位置的服务与移动地图 139
8.1 基于位置的服务 139
8.2 地理社交网络 140
8.3 移动地图 141
8.3.1 使用Google Maps显示地图 141
8.3.2 Tile5:另一个HTML5
Mapping API 143
8.3.3 向Google Map添加标记 146
8.3.4 显示标记的详细信息 147
8.4 针对移动优化的地图UI 149
8.4.1 地图UI模型 149
8.4.2 编写移动地图UI样板 150
8.4.3 在样板代码中实现UI导航 154
8.4.4 使用导航栏选择标记 159
8.5 小结 166
第9章 使用PhoneGap桥接原生应用 167
9.1 桥接框架简介 167
9.1.1 何时使用PhoneGap 168
9.1.2 下载PhoneGap 168
9.2 示例PhoneGap应用 168
9.2.1 构建示例应用 170
9.2.2 探索示例应用 175
9.3 一个简单的PhoneGap地图
应用 179
9.3.1 修改示例PhoneGap项目 179
9.3.2 将现有代码转换为
PhoneGap应用 184
9.4 小结 187
第10章 集成Social API 189
10.1 连接到Web API 189
10.1.1 何谓JSONP 189
10.1.2 处理缺少JSONP
支持的API 194
10.1.3 Geominer API简介 196
10.2 在Moundz中定位资源 198
10.2.1 使用Geominer API找到
附近资源 200
10.2.2 使用Geolocation追踪位置 203
10.3 实现用户登录 206
10.3.1 构建欢迎与登录界面 206
10.3.2 Twitter Anywhere与登录
过程 208
10.3.3 另一种通过Geominer
实现的Twitter认证 212
10.4 小结 215
第11章 移动UI框架比较 217
11.1 移动UI框架概览 217
11.1.1 框架之间的异同点 217
11.1.2 为框架比较做好准备 219
11.2 Jo 222
11.2.1 Jo入门 222
11.2.2 当Moundz遇到Jo 224
11.3 jQTouch 229
11.3.1 jQTouch入门 229
11.3.2 将jQTouch应用到
Moundz上 231
11.4 jQuery Mobile 235
11.4.1 jQuery Mobile入门 236
11.4.2 Moundz与jQuery Mobile 238
11.5 Sencha Touch 243
11.5.1 Sencha Touch入门 243
11.5.2 Moundz与Sencha Touch 245
11.6 小结 252
第12章 完善与打包应用以进行发布 255
12.1 继续使用jQuery Mobile 255
12.1.1 恢复登录界面 255
12.1.2 改进导航布局 259
12.2 搜集资源 261
12.2.1 构建资源详细信息界面 261
12.2.2 使用Geominer实现资源
追踪 267
12.3 将Moundz打包为原生应用 269
12.3.1 针对PhoneGap打包 269
12.3.2 处理应用权限 272
12.4 PhoneGap、认证与Intent 273
12.4.1 之前的Web认证流程 273
12.4.2 Android Intent概览 274
12.4.3 使用PhoneGap插件处理
Intent 276
12.5 打包应用以进行发布 281
12.6 小结 284
第13章 移动计算的未来 285
13.1 移动计算时代 285
13.1.1 全球范围的现象 285
13.1.2 桌面已死 286
13.1.3 拥抱渐进增强 287
13.2 移动技术预测 288
13.2.1 工具与库的改进 289
13.2.2 设备架构的变化 290
13.2.3 面向未来架构的编码 291
13.3 物联网 291
13.3.1 硬件传感器网络 292
13.3.2 人体传感器 293
13.4 小结 294
附录A 调试Android Web应用 295