本書由淺入深地介紹可視化編程工具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項目組技術主管及經理