本书由浅入深地介绍可视化编程工具App Inventor的基本内容,然后一步步指导读者搭建13个有趣的项目,包括一个短信回复应用、一个测验题应用和一个可以定位停车位置的应用。本书的后半部分可以看作开发者指南,帮助读者了解应用程序开发和计算机科学的基本知识。
没错,你有能力创建自己的安卓应用,而且一点都不难。App Inventor 2,让你分分钟成为应用开发者!
本书既适合作为App Inventor 2课程的辅导教材,也适合作为希望快速掌握安卓开发的零基础新手及编程爱好者的参考资料。
David Wolber
旧金山大学教授
Hal Abelson
麻省理工学院电子工程与计算机科学系教授
Ellen Spertus
米尔斯大学计算机科学副教授,谷歌公司博学科学家
Liz Looney
谷歌公司高级软件工程师,机器人工作小组成员
金从军 (译者)
大学主修物理学,做过大学教师、IT创业者、渠道总监、程序员、开发项目经理、培训教师等,是Adobe公司的认证工程师及培训师;曾编写教材并翻译过计算机语言相关的书籍及技术资料,主要译著包括《自然计算:DNA、量子比特和智能机器的未来》《项目管理新思维:交互产业启示录》等;爱好游戏与编程;于2014年春创办17coding.net网站,开展与App Inventor相关的教学及技术咨询工作,在新浪博客等社交媒体上以“老巫婆”的名义发表了多篇关与App Inventor有关的技术文章。
序 xv
前言 xvii
及时部分 App Inventor 2 教程
第1章 你好猫咪 2
1.1 学习要点 2
1.2 App Inventor的开发环境 3
1.3 设计组件 4
1.3.1 创建一个标签 6
1.3.2 添加按钮组件 7
1.3.3 添加猫叫声 8
1.4 实时测试 8
1.5 为组件添加行为 9
1.5.1 让猫发出叫声 10
1.5.2 添加振动效果 12
1.5.3 摇晃设备 14
1.6 将应用下载到安卓设备中 14
1.7 应用的分享 15
1.8 改进建议 16
1.9 小结 16
第2章 油漆桶 17
2.1 学习要点 18
2.2 准备开始 18
2.3 设计组件 18
2.3.1 创建颜色按钮 19
2.3.2 使用布局组件改善布局 19
2.3.3 添加画布 20
2.3.4 添加底部按钮及照相机组件 21
2.4 为组件添加行为 22
2.4.1 在触摸事件中画圆 23
2.4.2 在拖动事件中画线 25
2.4.3 改变颜色 26
2.4.4 让用户拍照片 27
2.4.5 改变画笔的大小 28
2.4.6 使用变量 29
2.4.7 修改变量的值 29
2.5 完整的“油漆桶”应用 30
2.6 改进 31
2.7 小结 31
第3章 打地鼠 32
3.1 作品描述 33
3.2 学习要点 33
3.3 准备开始 33
3.4 设计组件 33
3.4.1 设置行为组件 34
3.4.2 设置标签组件 35
3.5 为组件添加行为 36
3.5.1 移动地鼠 36
3.5.2 创建移动地鼠过程 37
3.6 在应用启动时调用移动地鼠过程 38
3.6.1 每秒钟调用一次移动地鼠过程 39
3.6.2 记录成绩 39
3.6.3 过程抽象 40
3.6.4 重置分数 40
3.6.5 碰到地鼠引起振动 41
3.7 完整的“打地鼠”应用 41
3.8 改进 42
3.9 小结 42
第4章 开车不发短信 44
4.1 学习要点 45
4.2 准备开始 45
4.3 设计组件 45
4.4 为组件添加行为 47
4.4.1 短信的自动回复 47
4.4.2 编写自定义回复内容 48
4.4.3 长期保存自定义回复内容 49
4.4.4 应用启动时读取自定义短信 50
4.4.5 大声读出收到的短信 51
4.4.6 在自动回复中加入位置信息 53
4.4.7 发送带有位置信息的回复短信 54
4.5 完整的“开车不发短信”应用 55
4.6 改进 55
4.7 小结 56
第5章 瓢虫快跑 57
5.1 作品描述 57
5.2 学习要点 58
5.3 设计组件 58
5.3.1 准备开始 58
5.3.2 设置及时批组件 59
5.4 为组件添加行为 60
5.4.1 移动瓢虫 60
5.4.2 显示生命值 61
5.4.3 瓢虫因饥饿而死 64
5.4.4 添加蚜虫 64
5.4.5 让瓢虫吃掉蚜虫 65
5.4.6 瓢虫与蚜虫之间的碰撞检测 66
5.4.7 蚜虫的回归 67
5.4.8 添加重新开始按钮 67
5.4.9 添加青蛙 68
5.4.10 瓢虫的回归 69
5.4.11 添加音效 70
5.5 完整的“瓢虫快跑”应用 70
5.6 改进 72
5.7 小结 72
第6章 巴黎地图旅游 73
6.1 学习要点 73
6.2 设计组件 74
6.3 设置活动启动器组件的属性 75
6.4 为组件添加行为 75
6.4.1 创建目的地列表 76
6.4.2 让用户选择一个目的地 76
6.4.3 使用搜索网址打开地图 77
6.5 完整的应用:用活动启动器实现的地图旅游 78
6.5.1 用Web 浏览框实现的虚拟旅游 78
6.5.2 找到特定地图的URL 79
6.5.3 定义网址列表 79
6.5.4 修改列表选择框的完成选择行为 80
6.6 完整的“巴黎地图旅游”应用(Web 浏览框版) 81
6.7 改进 81
6.8 小结 82
第7章 安卓,我的车在哪儿 83
7.1 学习要点 83
7.2 准备开始 84
7.3 设计组件 84
7.4 为组件添加行为 85
7.4.1 显示当前位置 86
7.4.2 记录当前位置 87
7.4.3 指示记录位置的方向 88
7.4.4 长期保存已记录的位置信息 89
7.4.5 启动应用时提取已记录的位置信息 90
7.5 完整的“安卓,我的车在哪儿?”应用 92
7.6 改进 93
7.7 小结 93
第8章 总统问答 94
8.1 学习要点 94
8.2 准备开始 95
8.3 设计组件 95
8.4 为组件添加行为 96
8.4.1 定义问题及答案列表 96
8.4.2 定义索引值变量 97
8.4.3 显示及时个问题 97
8.4.4 遍历所有问题 98
8.4.5 让程序易于修改 100
8.4.6 为问题匹配图片 101
8.4.7 判断答案对错 103
8.5 完整的“总统问答”应用 105
8.6 改进 106
8.7 小结 107
第9章 木琴 108
9.1 作品描述 108
9.2 学习要点 108
9.3 准备开始 109
9.4 设计组件 109
9.5 创建键盘 109
9.5.1 创建两个音符按钮 109
9.5.2 添加音效播放器组件 110
9.5.3 在按钮与声音之间建立关联 110
9.5.4 命令安卓加载声音 112
9.5.5 实现其余的音符 113
9.6 记录并回放音符 114
9.6.1 添加组件 115
9.6.2 记录音符及时间 115
9.6.3 回放音符 117
9.6.4 回放适当延迟的音符 118
9.7 完整的“木琴”应用 119
9.8 改进 120
9.9 小结 121
第10章 出题与答题 123
10.1 学习要点 124
10.2 准备开始 124
10.3 设计组件 124
10.4 为组件添加行为 126
10.4.1 创建空列表 126
10.4.2 记录用户的输入 127
10.4.3 清空问题及答案 127
10.4.4 用多行文本显示问题及答案 128
10.4.5 调用显示问题及答案过程 129
10.4.6 将数据长期保存到网络数据库中 130
10.4.7 从数据库加载数据 131
10.5 完整的“出题”应用 132
10.6 “答题”应用:从数据库中读取试题 134
10.7 完整的“答题”应用 135
10.8 改进 137
10.9 小结 137
第11章 广播中心 138
11.1 学习要点 139
11.2 准备开始 139
11.3 设计组件 139
11.4 为组件添加行为 140
11.4.1 回应收到的短信 141
11.4.2 接纳申请人加入广播列表 142
11.4.3 广播消息 143
11.4.4 美化列表的显示 145
11.4.5 记录广播过的短信 146
11.4.6 将广播列表保存到数据库中 147
11.4.7 从数据库中加载广播列表 148
11.5 完整的“广播中心”应用 149
11.6 改进 150
11.7 小结 151
第12章 遥控机器人 152
12.1 学习要点 153
12.2 准备开始 153
12.3 设计组件 154
12.3.1 非可视组件 154
12.3.2 可视组件 155
12.4 为组件添加行为 156
12.4.1 连接到机器人 156
12.4.2 显示机器人列表 156
12.4.3 建立蓝牙连接 157
12.4.4 与机器人断开连接 158
12.4.5 操控机器人 159
12.4.6 用超声波传感器探测障碍物 161
12.5 改进 162
12.6 小结 162
第13章 亚马逊掌上书店 163
13.1 学习要点 164
13.2 什么是API 164
13.3 准备开始 166
13.4 设计组件 166
13.5 设计行为 168
13.5.1 搜索关键字 168
13.5.2 按ISBN 搜索 169
13.5.3 消除用户的困惑 170
13.5.4 扫描条码 170
13.5.5 改进信息的呈现方式 171
13.6 完整的“亚马逊掌上书店”应用 173
13.7 定制化API 174
13.8 改进 175
13.9 小结 175
第二部分 Inventor 指南
第14章 理解应用的结构 178
14.1 组件 179
14.2 行为 179
14.3 应用如食谱 179
14.4 应用是一组事件处理程序 180
14.5 事件类型 181
14.5.1 用户引发的事件 181
14.5.2 初始化事件 182
14.5.3 计时器事件 182
14.5.4 动画事件 182
14.5.5 外部事件 183
14.6 在事件处理程序中设置问题 183
14.7 在事件处理程中重复执行指令 184
14.8 事件处理程序可以实现存储功能 184
14.9 事件处理程序可以与网络对话 185
14.10 小结 185
第15章 软件工程与应用测试 186
15.1 软件工程原则 186
15.2 解决真实的问题 187
15.3 向用户展示原型产品 187
15.4 渐进式开发 187
15.5 先设计,后编码 188
15.6 对代码进行注释 188
15.7 切割,分解,各个击破 189
15.8 理解编程语言:用纸笔跟踪记录 189
15.9 应用的调试 192
15.9.1 监视变量 192
15.9.2 测试单一代码块 193
15.9.3 单步执行支持渐进式开发 193
15.9.4 启用与禁用块 194
15.10 小结 194
第16章 应用的存储 195
16.1 被命名的存储空间 195
16.2 属性 195
16.3 定义变量 196
16.4 变量的设置与读取 197
16.5 设变量为表达式 198
16.6 变量的递增 198
16.7 构造复杂的表达式 199
16.8 显示变量 199
16.9 局部变量 200
16.10 小结 200
第17章 创建动画应用 201
17.1 在应用中添加画布组件 201
17.2 画布的坐标系统 201
17.3 用计时事件制作动画 203
17.4 产生运动 203
17.5 控制速度 204
17.6 碰撞检测 204
17.7 碰到边界 204
17.8 碰撞事件与分离事件 205
17.9 交互动画 206
17.10 设置精灵的非计时器动画 207
17.11 小结 208
第18章 程序中的决策 209
18.1 条件判断 210
18.2 非此即彼的条件判断 211
18.3 多重条件判断 212
18.4 复杂条件判断 212
18.5 小结 215
第19章 数据列表编程 216
19.1 创建列表变量 217
19.2 选择列表项 217
19.3 使用索引值遍历列表 218
19.4 举例:遍历颜色列表 218
19.5 创建输入表单及动态数据 220
19.5.1 定义动态列表 220
19.5.2 添加数据项 220
19.5.3 显示列表 221
19.5.4 删除列表项 222
19.6 列表中的列表 223
19.7 小结 225
第20章 循环 226
20.1 控制程序的执行:分支及循环 226
20.2 遍历列表循环 227
20.3 近距离观察循环 228
20.4 代码的可维护性 228
20.5 显示列表 229
20.6 条件循环 230
20.7 条件循环应用举例:公式计算 231
20.8 小结 232
第21章 定义过程与代码复用 233
21.1 消除冗余 234
21.2 定义过程 236
21.3 调用过程 236
21.4 程序计数器 237
21.5 为过程添加参数 237
21.6 过程的返回值 239
21.7 跨应用的代码复用 241
21.8 求两点间距离 241
21.9 小结 243
第22章 数据库 244
22.1 数据在本地的长期保存 245
22.2 从本地数据库提取数据 246
22.3 网络数据库及数据共享 246
22.3.1 用网络数据库组件保存数据 247
22.3.2 请求数据及数据处理 248
22.3.3 请求- 获得联动机制 249
22.3.4 复杂的请求- 获得联动举例 250
22.4 多标记同时请求数据 252
22.5 设置专属的网络数据库 253
22.6 小结 254
第23章 传感器 255
23.1 创建位置感知应用 255
23.1.1 GPS 256
23.1.2 App Inventor 与位置感知 257
23.1.3 边界检查 258
23.1.4 位置信息的来源:GPS、Wi-Fi 以及基站标识 259
23.2 方向传感器 259
23.2.1 用翻转角移动物体 260
23.2.2 控制运动的方向及速度 261
23.2.3 手机用作指南针 262
23.3 加速度传感器 262
23.3.1 响应设备的摇晃 263
23.3.2 使用加速度传感器的读数 263
23.3.3 检测自由落体 263
23.4 小结 264
第24章 网络通信 265
24.1 Web 浏览框组件 267
24.2 Web 客户端组件 268
24.3 网络数据库组件及其兼容API 270
24.4 小结 270
关于作者 271
“App Inventor让DIY应用开发软件变成现实。”——《纽约时报》
“谷歌和麻省理工学院让普通大众变成了应用的生产者。”——《旧金山纪事报》
“本书适用于所有年龄段的读者。我的学生喜欢扩展书中的例子,这种再创造的工作让他们乐此不疲。真是一本了不起的移动开发入门书!”——Ralph Morelli,剑桥大学三一学院教授
“全球近200万的用户实践证明,App Inventor让普通的App消费者变成了创造者……本书作者是当之无愧的世界教师和软件工程师,他们参与了App Inventor的开发、测试以及文档整理工作,还撰写了这本奇妙的书,对此我深表谢意。”——Mark Friedman,谷歌公司App Inventor for Android项目组技术主管及经理