第0章 移动Web开发学习指南 1
0.1 Web标准开发技术 2
0.1.1 结构化标准语言 2
0.1.2 表现性标准语言 2
0.1.3 行为标准 2
0.2 移动Web开发概览 3
0.2.1 主流移动平台介绍 3
0.2.2 移动Web的特点 5
0.2.3 设计移动网站时需要考虑的问题 6
0.2.4 主流移动设备屏幕的分辨率 6
0.2.5 使用标准的HTML、CSS和JavaScript技术 7
0.3 移动Web开发必备技术 7
0.4 移动Web学习路线图 8
0.5 PhoneGap学习路线图 9
第1篇 基础知识 12
第1章 PhoneGap基础 12
1.1 PhoneGap简介 13
1.1.1 什么是PhoneGap 13
1.1.2 背景介绍 13
1.1.3 PhoneGap的发展历程 14
1.1.4 PhoneGap的主要功能 14
1.1.5 PhoneGap的发展现状 15
1.1.6 PhoneGap优点和缺点分析 15
1.2 PhoneGap API基础 18
1.3 PhoneGap的工作 19
1.4 PhoneGap开发必备技术 19
1.4.1 Titanium框架 19
1.4.2 Adobe AIR技术 20
1.4.3 Corona库 21
1.4.4 常用的JavaScript移动UI框架 21
1.5 高手点拨 22
1.6 实战练习 22
第2章 使用PhoneGap开发移动Web应用 23
2.1 使用PhoneGap进行移动Web开发的步骤 24
2.2 搭建PhoneGap开发环境 24
2.2.1 准备工作 24
2.2.2 获得PhoneGap开发包 25
2.3 搭建Android开发环境 31
2.3.1 安装Android SDK的系统要求 31
2.3.2 安装JDK 31
2.3.3 获取并安装Eclipse和Android SDK 36
2.3.4 安装ADT 38
2.3.5 设定Android SDK Home 40
2.3.6 验证开发环境 41
2.3.7 实战演练——创建Android虚拟设备 42
2.3.8 实战演练——启动AVD模拟器 44
2.3.9 实战演练——在Android平台创建基于PhoneGap的程序 45
2.4 搭建iOS开发环境 52
2.4.1 搭建前的准备——加入iOS开发团队 52
2.4.2 安装Xcode 54
2.4.3 创建一个Xcode项目并启动模拟器 58
2.5 综合应用——在iOS平台创建基于PhoneGap的程序 62
2.6 高手点拨 65
2.7 实战练习 66
第2篇 必备技术 68
第3章 HTML5技术初步 68
3.1 HTML5简介 69
3.1.1 发展历程 69
3.1.2 HTML5的吸引力 69
3.2 视频处理 70
3.2.1 video标记概述 70
3.2.2 autoplay属性实战——自动播放一个视频 71
3.2.3 controls属性实战——控制播放的视频 73
3.2.4 height属性实战——设置播放视频的高度 74
3.2.5 其他属性 75
3.3 音频处理 76
3.3.1 audio标记概述 76
3.3.2 autoplay属性实战——自动播放一个音频 77
3.3.3 controls属性实战——控制播放的音频 78
3.3.4 loop属性实战——循环播放音频 79
3.3.5 其他属性 80
3.4 Canvas画布处理 81
3.4.1 Canvas标记介绍 81
3.4.2 HTML DOM Canvas对象 81
3.4.3 实战演练——实现坐标定位 82
3.4.4 实战演练——在指定位置画线 84
3.4.5 实战演练——绘制一个圆 84
3.4.6 实战演练——用渐变色填充一个矩形 85
3.4.7 实战演练——显示一幅指定的图片 86
3.5 Web数据存储 88
3.5.1 Web存储简介 88
3.5.2 HTML5中Web存储的意义 88
3.5.3 localStorage存储实战——显示访问页面的统计次数 88
3.5.4 sessionStorage存储实战——显示访问页面的统计次数 90
3.6 表单的新特性 91
3.6.1 全新的Input类型 91
3.6.2 全新的表单元素 95
3.6.3 全新的表单属性 97
3.7 综合应用——制作一个颜色滑动控制器 103
3.8 高手点拨 105
3.9 实战练习 105
第4章 CSS基础 107
4.1 体验CSS的功能 108
4.2 基本语法 109
4.3 使用选择符 110
4.3.1 选择符的种类 110
4.3.2 实战演练——使用ID选择符设置文字颜色 112
4.4 CSS属性 113
4.5 几个常用值 115
4.5.1 颜色单位 115
4.5.2 长度单位 117
4.5.3 百分比值 118
4.5.4 URL统一资源定位符 118
4.5.5 URL默认值 119
4.6 在网页中使用CSS 119
4.6.1 页面调用CSS方式 119
4.6.2 通用优先级实战 122
4.6.3 类型选择符和类选择符实战 123
4.6.4 ID选择符实战 124
4.6.5 最近优先原则实战 125
4.7 CSS的编码规范 127
4.7.1 书写规范 127
4.7.2 命名规范 128
4.8 CSS调试 128
4.8.1 设计软件调试 129
4.8.2 继承性和默认值带来的问题 129
4.9 综合应用——实现精致、符合标准的表单页面 131
4.10 高手点拨 133
4.11 实战练习 134
第5章 jQuery Mobile基础 135
5.1 jQuery Mobile简介 136
5.1.1 jQuery简介 136
5.1.2 jQuery Mobile的特点 136
5.1.3 对浏览器的支持 137
5.1.4 对平台的支持 138
5.2 jQuery Mobile的特性 139
5.2.1 跨所有移动平台的统一UI 139
5.2.2 简化的标记驱动的开发 139
5.2.3 渐进式增强 139
5.2.4 响应式设计 140
5.3 获取jQuery Mobile 140
5.3.1 下载插件 141
5.3.2 使用URL方式加载插件文件 142
5.4 页面结构 143
5.4.1 实战演练——使用基本框架 143
5.4.2 实战演练——使用多页面模板 146
5.4.3 实战演练——设置内部页面的标题 148
5.5 导航链接处理 150
5.5.1 实战演练——设置外部页面链接 151
5.5.2 实战演练——设置页面后退链接 153
5.6 使用Ajax修饰导航 154
5.6.1 实战演练——使用Ajax驱动导航 154
5.6.2 使用函数changePage() 157
5.7 综合应用——开发一个移动版Ajax网页 159
5.8 高手点拨 165
5.9 实战练习 166
第6章 PhoneGap事件详解 167
6.1 PhoneGap的事件列表 168
6.2 deviceready事件详解 169
6.2.1 deviceready事件基础 169
6.2.2 实战演练——使用deviceready事件 170
6.3 pause事件和resume事件 172
6.3.1 实战演练——使用pause事件 172
6.3.2 实战演练—使用resume事件 173
6.4 online事件和offline事件 176
6.4.1 实战演练——使用online事件 176
6.4.2 实战演练——使用offline事件 178
6.5 batterycritical、batterylow和batterystatus事件 179
6.5.1 使用batterycritical事件 179
6.5.2 使用batterylow事件 180
6.5.3 实战演练——使用batterystatus事件 181
6.6 backbutton事件 185
6.7 使用searchbutton事件 186
6.8 使用其他事件 187
6.8.1 使用menubutton事件 187
6.8.2 使用startcallbutton事件 188
6.8.3 使用endcallbutton事件 189
6.8.4 使用volumedownbutton事件 190
6.8.5 使用volumeupbutton事件 191
6.9 综合应用——监听各类PhoneGap事件 192
6.10 高手点拨 194
6.11 实战练习 194
第3篇 核心内容 196
第7章 应用和通知API详解 196
7.1 应用API 197
7.1.1 白名单安全机制 197
7.1.2 访问对象的方法 197
7.2 Notification通知 198
7.2.1 主要对象 199
7.2.2 实战演练——使用notification.alert()方法 199
7.2.3 实战演练——使用notification.confirm()方法 201
7.2.4 实战演练——使用notification.beep()方法 203
7.2.5 实战演练——使用notification.vibrate()方法 205
7.2.6 实战演练——使用活动指示器和进度对话框通知 207
7.3 综合应用——演示各种API的基本用法 210
7.4 高手点拨 217
7.5 实战练习 218
第8章 设备、网络连接和加速计API详解 219
8.1 设备API 220
8.1.1 主要对象 220
8.1.2 使用device.name()方法 220
8.1.3 使用device.phonegap()方法 221
8.1.4 使用device.platform()方法 221
8.1.5 使用device.uuid()方法 222
8.1.6 使用device.version()方法 223
8.1.7 实战演练——使用设备API 223
8.2 网络连接API 224
8.2.1 属性和常量 224
8.2.2 实战演练——检测当前网络状况 225
8.3 加速计API 227
8.3.1 使用acceleration对象 227
8.3.2 实战演练——使用getCurrentAcceleration获取加速度 228
8.3.3 实战演练——使用watchAcceleration获取加速度 230
8.3.4 实战演练——使用clearWatch清除加速度 232
8.4 综合应用——实现一个蓝牙控制器 234
8.5 高手点拨 253
8.6 实战练习 254
第9章 地理位置API详解 255
9.1 地理位置基础 256
9.1.1 应用背景 256
9.1.2 Geolocation接口介绍 256
9.2 Geolocation对象详解 257
9.2.1 实战演练——使用Position对象 257
9.2.2 PositionError对象 259
9.2.3 实战演练——使用Coordinates对象 260
9.3 地理位置API的参数 262
9.3.1 geolocationSuccess 262
9.3.2 geolocationOptions 262
9.4 操作方法 263
9.4.1 实战演练——获取设备当前的地理位置信息 263
9.4.2 实战演练——定期获取设备的地理位置信息 266
9.4.3 实战演练——取消定期获取设备的地理位置信息 268
9.4.4 实战演练——使用Geolocation 270
9.5 综合应用——联合使用Geolocation和百度地图实现定位功能 272
9.6 高手点拨 275
9.7 实战练习 276
第10章 指南针API详解 277
10.1 指南针API的对象 278
10.1.1 CompassHeading对象 278
10.1.2 CompassError对象 278
10.1.3 onSuccess函数 278
10.1.4 CompassOptions对象 279
10.2 指南针API中的函数 279
10.2.1 实战演练——获取设备当前的指南针信息 279
10.2.2 实战演练——定期获取设备的指南针信息 281
10.2.3 实战演练——取消定期获取设备的指南针信息 283
10.2.4 实战演练——获取罗盘的朝向度数 286
10.2.5 实战演练——停止对罗盘的监听 288
10.3 综合应用——实现一个移动版指南针 290
10.4 高手点拨 296
10.5 实战练习 296
第11章 照相机API详解 297
11.1 照相机API的函数 298
11.1.1 函数camera.getPicture() 298
11.1.2 cameraSuccess 300
11.1.3 cameraError 301
11.1.4 实战演练——在网页中触发照相机 301
11.2 业务操作 303
11.2.1 业务操作基础 304
11.2.2 实战演练——使用照相机API 305
11.3 综合应用——实现拍照并设置为头像功能 308
11.4 综合应用——实现拍照并查看相册功能 313
11.5 高手点拨 316
11.6 实战练习 316
第12章 采集API详解 317
12.1 主要对象 318
12.1.1 Capture对象 318
12.1.2 CaptureAudioOptions对象 318
12.1.3 CaptureImageOptions对象 319
12.1.4 CaptureVideoOptions对象 319
12.1.5 CaptureCB函数 320
12.1.6 CaptureErrorCB函数 320
12.1.7 ConfigurationData对象 321
12.1.8 MediaFile对象 321
12.1.9 MediaFileData对象 321
12.2 主要方法 322
12.2.1 实战演练——使用capture.captureAudio()方法 322
12.2.2 实战演练——使用capture.captureImage()方法 324
12.2.3 MediaFile.getFormatData()方法 327
12.3 综合应用——Video视频采集器 327
12.4 高手点拨 330
12.5 实战练习 330
第13章 媒体API详解 331
13.1 主要参数 332
13.2 主要方法 332
13.2.1 实战演练——使用media.getCurrentPosition()方法 333
13.2.2 实战演练——使用media.getDuration()方法 336
13.2.3 实战演练——使用play()方法 339
13.2.4 media.pause()方法 342
13.2.5 media.release()方法 343
13.2.6 实战演练——使用media.startRecord()方法 346
13.2.7 media.stop()方法 348
13.2.8 media.stopRecord()方法 351
13.3 综合应用——播放本地视频 354
13.4 高手点拨 358
13.5 实战练习 358
第14章 通讯录API详解 359
14.1 主要对象 360
14.1.1 实战演练——使用Contact对象 360
14.1.2 实战演练——使用ContactName对象 364
14.1.3 实战演练——使用ContactField对象 367
14.1.4 实战演练——使用ContactAddress对象 370
14.1.5 ContactOrganization对象 372
14.1.6 ContactFindOptions对象 374
14.2 包含的方法 376
14.2.1 实战演练——查找联系人方法 376
14.2.2 创建联系人 378
14.2.3 保存联系人 379
14.2.4 删除联系人 379
14.3 综合应用——创建一个简易的Web版通讯录 380
14.4 高手点拨 387
14.5 实战练习 388
第15章 数据存储API详解 389
15.1 主要对象 390
15.1.1 Database对象 390
15.1.2 SQLTransaction对象 392
15.1.3 SQLResultSet对象 394
15.1.4 SQLResultSetList对象 396
15.1.5 SQLError对象 397
15.1.6 localStorage对象 397
15.2 主要方法 399
15.3 综合应用——实现数据操作处理 400
15.4 高手点拨 405
15.5 实战练习 406
第16章 文件操作API详解 407
16.1 主要对象 408
16.1.1 DirectoryEntry对象 408
16.1.2 DirectoryReader对象和File对象 408
16.1.3 FileEntry对象 409
16.1.4 FileReader对象 409
16.1.5 实战演练——使用FileSystem对象 410
16.1.6 FileTransfer对象 412
16.1.7 FileUploadOptions对象和FileUploadResult对象 414
16.1.8 实战演练——使用FileWriter对象 414
16.1.9 Flags对象 418
16.1.10 LocalFileSystem对象 418
16.1.11 Metadata对象 420
16.2 主要方法 420
16.2.1 方法entry.getMetadata() 420
16.2.2 方法entry.moveTo() 421
16.2.3 方法entry.copyTo() 422
16.2.4 方法entry.toURI() 423
16.2.5 方法entry.remove() 423
16.2.6 方法entry.getParent() 423
16.2.7 方法entry.createReader()和方法entry.getDirectory() 424
16.2.8 方法entry.getFile() 424
16.2.9 方法entry.removeRecursively() 425
16.2.10 方法readEntries() 426
16.2.11 方法entry.createWriter() 426
16.2.12 实战演练——使用方法ReadAsDataURL()和方法ReadAsText() 427
16.2.13 方法upload() 429
16.2.14 实战演练——使用方法download() 431
16.3 综合应用——实现拍照并上传功能 434
16.4 高手点拨 439
16.5 实战练习 440
第17章 PhoneGap的插件 441
17.1 PhoneGap插件基础 442
17.2 使用PhoneGap插件 443
17.2.1 ChildBrowser插件介绍 443
17.2.2 实战演练——使用ChildBrowser插件 443
17.3 实现PhoneGap插件 448
17.3.1 编写前的准备 448
17.3.2 实战演练——编写PhoneGap插件 448
17.3.3 将PhoneGap嵌入到iOS程序中 454
17.4 常用的PhoneGap插件 455
17.4.1 NativeControls插件 455
17.4.2 WebGL插件 457
17.5 综合应用——使用插件实现弹出软键盘效果 457
17.6 综合应用——调用二维码扫描插件 464
17.7 实战练习 474
第4篇 综合实战 476
第18章 电话本管理系统 476
18.1 需求分析 477
18.1.1 产生背景 477
18.1.2 功能分析 477
18.2 创建Android工程 478
18.3 实现系统主界面 479
18.4 实现信息查询模块 481
18.5 实现系统管理模块 483
18.6 实现信息添加模块 487
18.7 实现信息修改模块 489
18.8 实现信息删除模块和更新模块 492
第19章 RSS订阅系统 493
19.1 RSS基础 494
19.1.1 RSS的用途 494
19.1.2 RSS的基本语法 494
19.2 SAX技术简介 496
19.2.1 SAX的原理 496
19.2.2 基于对象和基于事件的接口 496
19.2.3 常用的接口和类 497
19.3 功能介绍 500
19.4 创建Android工程 501
19.5 系统主界面 502
19.5.1 文件头信息 502
19.5.2 显示顶部导航 503
19.5.3 显示城市天气信息 503
19.5.4 显示订阅栏目信息 505
19.6 订阅管理 510
19.6.1 管理订阅 510
19.6.2 添加或取消订阅 520
19.7 设置功能 521
19.7.1 展示系统设置功能 521
19.7.2 换肤设置 523
19.7.3 数目设置 524
19.7.4 设置连接方式 524
19.7.5 清空订阅 525
19.8 RSS信息展示 526
19.9 系统调试 532