本書(shū)由淺入深地介紹可視化編程工具App Inventor的基本內(nèi)容,然后一步步指導(dǎo)讀者搭建13個(gè)有趣的項(xiàng)目,包括一個(gè)短信回復(fù)應(yīng)用、一個(gè)測(cè)驗(yàn)題應(yīng)用和一個(gè)可以定位停車(chē)位置的應(yīng)用。本書(shū)的后半部分可以看作開(kāi)發(fā)者指南,幫助讀者了解應(yīng)用程序開(kāi)發(fā)和計(jì)算機(jī)科學(xué)的基本知識(shí)。
沒(méi)錯(cuò),你有能力創(chuàng)建自己的安卓應(yīng)用,而且一點(diǎn)都不難。App Inventor 2,讓你分分鐘成為應(yīng)用開(kāi)發(fā)者!
本書(shū)既適合作為App Inventor 2課程的輔導(dǎo)教材,也適合作為希望快速掌握安卓開(kāi)發(fā)的零基礎(chǔ)新手及編程愛(ài)好者的參考資料。
David Wolber
舊金山大學(xué)教授
Hal Abelson
麻省理工學(xué)院電子工程與計(jì)算機(jī)科學(xué)系教授
Ellen Spertus
米爾斯大學(xué)計(jì)算機(jī)科學(xué)副教授,谷歌公司博學(xué)科學(xué)家
Liz Looney
谷歌公司高級(jí)軟件工程師,機(jī)器人工作小組成員
金從軍 (譯者)
大學(xué)主修物理學(xué),做過(guò)大學(xué)教師、IT創(chuàng)業(yè)者、渠道總監(jiān)、程序員、開(kāi)發(fā)項(xiàng)目經(jīng)理、培訓(xùn)教師等,是Adobe公司的認(rèn)證工程師及培訓(xùn)師;曾編寫(xiě)教材并翻譯過(guò)計(jì)算機(jī)語(yǔ)言相關(guān)的書(shū)籍及技術(shù)資料,主要譯著包括《自然計(jì)算:DNA、量子比特和智能機(jī)器的未來(lái)》《項(xiàng)目管理新思維:交互產(chǎn)業(yè)啟示錄》等;愛(ài)好游戲與編程;于2014年春創(chuàng)辦17coding.net網(wǎng)站,開(kāi)展與App Inventor相關(guān)的教學(xué)及技術(shù)咨詢(xún)工作,在新浪博客等社交媒體上以“老巫婆”的名義發(fā)表了多篇關(guān)與App Inventor有關(guān)的技術(shù)文章。
序 xv
前言 xvii
及時(shí)部分 App Inventor 2 教程
第1章 你好貓咪 2
1.1 學(xué)習(xí)要點(diǎn) 2
1.2 App Inventor的開(kāi)發(fā)環(huán)境 3
1.3 設(shè)計(jì)組件 4
1.3.1 創(chuàng)建一個(gè)標(biāo)簽 6
1.3.2 添加按鈕組件 7
1.3.3 添加貓叫聲 8
1.4 實(shí)時(shí)測(cè)試 8
1.5 為組件添加行為 9
1.5.1 讓貓發(fā)出叫聲 10
1.5.2 添加振動(dòng)效果 12
1.5.3 搖晃設(shè)備 14
1.6 將應(yīng)用下載到安卓設(shè)備中 14
1.7 應(yīng)用的分享 15
1.8 改進(jìn)建議 16
1.9 小結(jié) 16
第2章 油漆桶 17
2.1 學(xué)習(xí)要點(diǎn) 18
2.2 準(zhǔn)備開(kāi)始 18
2.3 設(shè)計(jì)組件 18
2.3.1 創(chuàng)建顏色按鈕 19
2.3.2 使用布局組件改善布局 19
2.3.3 添加畫(huà)布 20
2.3.4 添加底部按鈕及照相機(jī)組件 21
2.4 為組件添加行為 22
2.4.1 在觸摸事件中畫(huà)圓 23
2.4.2 在拖動(dòng)事件中畫(huà)線(xiàn) 25
2.4.3 改變顏色 26
2.4.4 讓用戶(hù)拍照片 27
2.4.5 改變畫(huà)筆的大小 28
2.4.6 使用變量 29
2.4.7 修改變量的值 29
2.5 完整的“油漆桶”應(yīng)用 30
2.6 改進(jìn) 31
2.7 小結(jié) 31
第3章 打地鼠 32
3.1 作品描述 33
3.2 學(xué)習(xí)要點(diǎn) 33
3.3 準(zhǔn)備開(kāi)始 33
3.4 設(shè)計(jì)組件 33
3.4.1 設(shè)置行為組件 34
3.4.2 設(shè)置標(biāo)簽組件 35
3.5 為組件添加行為 36
3.5.1 移動(dòng)地鼠 36
3.5.2 創(chuàng)建移動(dòng)地鼠過(guò)程 37
3.6 在應(yīng)用啟動(dòng)時(shí)調(diào)用移動(dòng)地鼠過(guò)程 38
3.6.1 每秒鐘調(diào)用一次移動(dòng)地鼠過(guò)程 39
3.6.2 記錄成績(jī) 39
3.6.3 過(guò)程抽象 40
3.6.4 重置分?jǐn)?shù) 40
3.6.5 碰到地鼠引起振動(dòng) 41
3.7 完整的“打地鼠”應(yīng)用 41
3.8 改進(jìn) 42
3.9 小結(jié) 42
第4章 開(kāi)車(chē)不發(fā)短信 44
4.1 學(xué)習(xí)要點(diǎn) 45
4.2 準(zhǔn)備開(kāi)始 45
4.3 設(shè)計(jì)組件 45
4.4 為組件添加行為 47
4.4.1 短信的自動(dòng)回復(fù) 47
4.4.2 編寫(xiě)自定義回復(fù)內(nèi)容 48
4.4.3 長(zhǎng)期保存自定義回復(fù)內(nèi)容 49
4.4.4 應(yīng)用啟動(dòng)時(shí)讀取自定義短信 50
4.4.5 大聲讀出收到的短信 51
4.4.6 在自動(dòng)回復(fù)中加入位置信息 53
4.4.7 發(fā)送帶有位置信息的回復(fù)短信 54
4.5 完整的“開(kāi)車(chē)不發(fā)短信”應(yīng)用 55
4.6 改進(jìn) 55
4.7 小結(jié) 56
第5章 瓢蟲(chóng)快跑 57
5.1 作品描述 57
5.2 學(xué)習(xí)要點(diǎn) 58
5.3 設(shè)計(jì)組件 58
5.3.1 準(zhǔn)備開(kāi)始 58
5.3.2 設(shè)置及時(shí)批組件 59
5.4 為組件添加行為 60
5.4.1 移動(dòng)瓢蟲(chóng) 60
5.4.2 顯示生命值 61
5.4.3 瓢蟲(chóng)因饑餓而死 64
5.4.4 添加蚜蟲(chóng) 64
5.4.5 讓瓢蟲(chóng)吃掉蚜蟲(chóng) 65
5.4.6 瓢蟲(chóng)與蚜蟲(chóng)之間的碰撞檢測(cè) 66
5.4.7 蚜蟲(chóng)的回歸 67
5.4.8 添加重新開(kāi)始按鈕 67
5.4.9 添加青蛙 68
5.4.10 瓢蟲(chóng)的回歸 69
5.4.11 添加音效 70
5.5 完整的“瓢蟲(chóng)快跑”應(yīng)用 70
5.6 改進(jìn) 72
5.7 小結(jié) 72
第6章 巴黎地圖旅游 73
6.1 學(xué)習(xí)要點(diǎn) 73
6.2 設(shè)計(jì)組件 74
6.3 設(shè)置活動(dòng)啟動(dòng)器組件的屬性 75
6.4 為組件添加行為 75
6.4.1 創(chuàng)建目的地列表 76
6.4.2 讓用戶(hù)選擇一個(gè)目的地 76
6.4.3 使用搜索網(wǎng)址打開(kāi)地圖 77
6.5 完整的應(yīng)用:用活動(dòng)啟動(dòng)器實(shí)現(xiàn)的地圖旅游 78
6.5.1 用Web 瀏覽框?qū)崿F(xiàn)的虛擬旅游 78
6.5.2 找到特定地圖的URL 79
6.5.3 定義網(wǎng)址列表 79
6.5.4 修改列表選擇框的完成選擇行為 80
6.6 完整的“巴黎地圖旅游”應(yīng)用(Web 瀏覽框版) 81
6.7 改進(jìn) 81
6.8 小結(jié) 82
第7章 安卓,我的車(chē)在哪兒 83
7.1 學(xué)習(xí)要點(diǎn) 83
7.2 準(zhǔn)備開(kāi)始 84
7.3 設(shè)計(jì)組件 84
7.4 為組件添加行為 85
7.4.1 顯示當(dāng)前位置 86
7.4.2 記錄當(dāng)前位置 87
7.4.3 指示記錄位置的方向 88
7.4.4 長(zhǎng)期保存已記錄的位置信息 89
7.4.5 啟動(dòng)應(yīng)用時(shí)提取已記錄的位置信息 90
7.5 完整的“安卓,我的車(chē)在哪兒?”應(yīng)用 92
7.6 改進(jìn) 93
7.7 小結(jié) 93
第8章 總統(tǒng)問(wèn)答 94
8.1 學(xué)習(xí)要點(diǎn) 94
8.2 準(zhǔn)備開(kāi)始 95
8.3 設(shè)計(jì)組件 95
8.4 為組件添加行為 96
8.4.1 定義問(wèn)題及答案列表 96
8.4.2 定義索引值變量 97
8.4.3 顯示及時(shí)個(gè)問(wèn)題 97
8.4.4 遍歷所有問(wèn)題 98
8.4.5 讓程序易于修改 100
8.4.6 為問(wèn)題匹配圖片 101
8.4.7 判斷答案對(duì)錯(cuò) 103
8.5 完整的“總統(tǒng)問(wèn)答”應(yīng)用 105
8.6 改進(jìn) 106
8.7 小結(jié) 107
第9章 木琴 108
9.1 作品描述 108
9.2 學(xué)習(xí)要點(diǎn) 108
9.3 準(zhǔn)備開(kāi)始 109
9.4 設(shè)計(jì)組件 109
9.5 創(chuàng)建鍵盤(pán) 109
9.5.1 創(chuàng)建兩個(gè)音符按鈕 109
9.5.2 添加音效播放器組件 110
9.5.3 在按鈕與聲音之間建立關(guān)聯(lián) 110
9.5.4 命令安卓加載聲音 112
9.5.5 實(shí)現(xiàn)其余的音符 113
9.6 記錄并回放音符 114
9.6.1 添加組件 115
9.6.2 記錄音符及時(shí)間 115
9.6.3 回放音符 117
9.6.4 回放適當(dāng)延遲的音符 118
9.7 完整的“木琴”應(yīng)用 119
9.8 改進(jìn) 120
9.9 小結(jié) 121
第10章 出題與答題 123
10.1 學(xué)習(xí)要點(diǎn) 124
10.2 準(zhǔn)備開(kāi)始 124
10.3 設(shè)計(jì)組件 124
10.4 為組件添加行為 126
10.4.1 創(chuàng)建空列表 126
10.4.2 記錄用戶(hù)的輸入 127
10.4.3 清空問(wèn)題及答案 127
10.4.4 用多行文本顯示問(wèn)題及答案 128
10.4.5 調(diào)用顯示問(wèn)題及答案過(guò)程 129
10.4.6 將數(shù)據(jù)長(zhǎng)期保存到網(wǎng)絡(luò)數(shù)據(jù)庫(kù)中 130
10.4.7 從數(shù)據(jù)庫(kù)加載數(shù)據(jù) 131
10.5 完整的“出題”應(yīng)用 132
10.6 “答題”應(yīng)用:從數(shù)據(jù)庫(kù)中讀取試題 134
10.7 完整的“答題”應(yīng)用 135
10.8 改進(jìn) 137
10.9 小結(jié) 137
第11章 廣播中心 138
11.1 學(xué)習(xí)要點(diǎn) 139
11.2 準(zhǔn)備開(kāi)始 139
11.3 設(shè)計(jì)組件 139
11.4 為組件添加行為 140
11.4.1 回應(yīng)收到的短信 141
11.4.2 接納申請(qǐng)人加入廣播列表 142
11.4.3 廣播消息 143
11.4.4 美化列表的顯示 145
11.4.5 記錄廣播過(guò)的短信 146
11.4.6 將廣播列表保存到數(shù)據(jù)庫(kù)中 147
11.4.7 從數(shù)據(jù)庫(kù)中加載廣播列表 148
11.5 完整的“廣播中心”應(yīng)用 149
11.6 改進(jìn) 150
11.7 小結(jié) 151
第12章 遙控機(jī)器人 152
12.1 學(xué)習(xí)要點(diǎn) 153
12.2 準(zhǔn)備開(kāi)始 153
12.3 設(shè)計(jì)組件 154
12.3.1 非可視組件 154
12.3.2 可視組件 155
12.4 為組件添加行為 156
12.4.1 連接到機(jī)器人 156
12.4.2 顯示機(jī)器人列表 156
12.4.3 建立藍(lán)牙連接 157
12.4.4 與機(jī)器人斷開(kāi)連接 158
12.4.5 操控機(jī)器人 159
12.4.6 用超聲波傳感器探測(cè)障礙物 161
12.5 改進(jìn) 162
12.6 小結(jié) 162
第13章 亞馬遜掌上書(shū)店 163
13.1 學(xué)習(xí)要點(diǎn) 164
13.2 什么是API 164
13.3 準(zhǔn)備開(kāi)始 166
13.4 設(shè)計(jì)組件 166
13.5 設(shè)計(jì)行為 168
13.5.1 搜索關(guān)鍵字 168
13.5.2 按ISBN 搜索 169
13.5.3 消除用戶(hù)的困惑 170
13.5.4 掃描條碼 170
13.5.5 改進(jìn)信息的呈現(xiàn)方式 171
13.6 完整的“亞馬遜掌上書(shū)店”應(yīng)用 173
13.7 定制化API 174
13.8 改進(jìn) 175
13.9 小結(jié) 175
第二部分 Inventor 指南
第14章 理解應(yīng)用的結(jié)構(gòu) 178
14.1 組件 179
14.2 行為 179
14.3 應(yīng)用如食譜 179
14.4 應(yīng)用是一組事件處理程序 180
14.5 事件類(lèi)型 181
14.5.1 用戶(hù)引發(fā)的事件 181
14.5.2 初始化事件 182
14.5.3 計(jì)時(shí)器事件 182
14.5.4 動(dòng)畫(huà)事件 182
14.5.5 外部事件 183
14.6 在事件處理程序中設(shè)置問(wèn)題 183
14.7 在事件處理程中重復(fù)執(zhí)行指令 184
14.8 事件處理程序可以實(shí)現(xiàn)存儲(chǔ)功能 184
14.9 事件處理程序可以與網(wǎng)絡(luò)對(duì)話(huà) 185
14.10 小結(jié) 185
第15章 軟件工程與應(yīng)用測(cè)試 186
15.1 軟件工程原則 186
15.2 解決真實(shí)的問(wèn)題 187
15.3 向用戶(hù)展示原型產(chǎn)品 187
15.4 漸進(jìn)式開(kāi)發(fā) 187
15.5 先設(shè)計(jì),后編碼 188
15.6 對(duì)代碼進(jìn)行注釋 188
15.7 切割,分解,各個(gè)擊破 189
15.8 理解編程語(yǔ)言:用紙筆跟蹤記錄 189
15.9 應(yīng)用的調(diào)試 192
15.9.1 監(jiān)視變量 192
15.9.2 測(cè)試單一代碼塊 193
15.9.3 單步執(zhí)行支持漸進(jìn)式開(kāi)發(fā) 193
15.9.4 啟用與禁用塊 194
15.10 小結(jié) 194
第16章 應(yīng)用的存儲(chǔ) 195
16.1 被命名的存儲(chǔ)空間 195
16.2 屬性 195
16.3 定義變量 196
16.4 變量的設(shè)置與讀取 197
16.5 設(shè)變量為表達(dá)式 198
16.6 變量的遞增 198
16.7 構(gòu)造復(fù)雜的表達(dá)式 199
16.8 顯示變量 199
16.9 局部變量 200
16.10 小結(jié) 200
第17章 創(chuàng)建動(dòng)畫(huà)應(yīng)用 201
17.1 在應(yīng)用中添加畫(huà)布組件 201
17.2 畫(huà)布的坐標(biāo)系統(tǒng) 201
17.3 用計(jì)時(shí)事件制作動(dòng)畫(huà) 203
17.4 產(chǎn)生運(yùn)動(dòng) 203
17.5 控制速度 204
17.6 碰撞檢測(cè) 204
17.7 碰到邊界 204
17.8 碰撞事件與分離事件 205
17.9 交互動(dòng)畫(huà) 206
17.10 設(shè)置精靈的非計(jì)時(shí)器動(dòng)畫(huà) 207
17.11 小結(jié) 208
第18章 程序中的決策 209
18.1 條件判斷 210
18.2 非此即彼的條件判斷 211
18.3 多重條件判斷 212
18.4 復(fù)雜條件判斷 212
18.5 小結(jié) 215
第19章 數(shù)據(jù)列表編程 216
19.1 創(chuàng)建列表變量 217
19.2 選擇列表項(xiàng) 217
19.3 使用索引值遍歷列表 218
19.4 舉例:遍歷顏色列表 218
19.5 創(chuàng)建輸入表單及動(dòng)態(tài)數(shù)據(jù) 220
19.5.1 定義動(dòng)態(tài)列表 220
19.5.2 添加數(shù)據(jù)項(xiàng) 220
19.5.3 顯示列表 221
19.5.4 刪除列表項(xiàng) 222
19.6 列表中的列表 223
19.7 小結(jié) 225
第20章 循環(huán) 226
20.1 控制程序的執(zhí)行:分支及循環(huán) 226
20.2 遍歷列表循環(huán) 227
20.3 近距離觀察循環(huán) 228
20.4 代碼的可維護(hù)性 228
20.5 顯示列表 229
20.6 條件循環(huán) 230
20.7 條件循環(huán)應(yīng)用舉例:公式計(jì)算 231
20.8 小結(jié) 232
第21章 定義過(guò)程與代碼復(fù)用 233
21.1 消除冗余 234
21.2 定義過(guò)程 236
21.3 調(diào)用過(guò)程 236
21.4 程序計(jì)數(shù)器 237
21.5 為過(guò)程添加參數(shù) 237
21.6 過(guò)程的返回值 239
21.7 跨應(yīng)用的代碼復(fù)用 241
21.8 求兩點(diǎn)間距離 241
21.9 小結(jié) 243
第22章 數(shù)據(jù)庫(kù) 244
22.1 數(shù)據(jù)在本地的長(zhǎng)期保存 245
22.2 從本地?cái)?shù)據(jù)庫(kù)提取數(shù)據(jù) 246
22.3 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)及數(shù)據(jù)共享 246
22.3.1 用網(wǎng)絡(luò)數(shù)據(jù)庫(kù)組件保存數(shù)據(jù) 247
22.3.2 請(qǐng)求數(shù)據(jù)及數(shù)據(jù)處理 248
22.3.3 請(qǐng)求- 獲得聯(lián)動(dòng)機(jī)制 249
22.3.4 復(fù)雜的請(qǐng)求- 獲得聯(lián)動(dòng)舉例 250
22.4 多標(biāo)記同時(shí)請(qǐng)求數(shù)據(jù) 252
22.5 設(shè)置專(zhuān)屬的網(wǎng)絡(luò)數(shù)據(jù)庫(kù) 253
22.6 小結(jié) 254
第23章 傳感器 255
23.1 創(chuàng)建位置感知應(yīng)用 255
23.1.1 GPS 256
23.1.2 App Inventor 與位置感知 257
23.1.3 邊界檢查 258
23.1.4 位置信息的來(lái)源:GPS、Wi-Fi 以及基站標(biāo)識(shí) 259
23.2 方向傳感器 259
23.2.1 用翻轉(zhuǎn)角移動(dòng)物體 260
23.2.2 控制運(yùn)動(dòng)的方向及速度 261
23.2.3 手機(jī)用作指南針 262
23.3 加速度傳感器 262
23.3.1 響應(yīng)設(shè)備的搖晃 263
23.3.2 使用加速度傳感器的讀數(shù) 263
23.3.3 檢測(cè)自由落體 263
23.4 小結(jié) 264
第24章 網(wǎng)絡(luò)通信 265
24.1 Web 瀏覽框組件 267
24.2 Web 客戶(hù)端組件 268
24.3 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)組件及其兼容API 270
24.4 小結(jié) 270
關(guān)于作者 271
“App Inventor讓DIY應(yīng)用開(kāi)發(fā)軟件變成現(xiàn)實(shí)。”——《紐約時(shí)報(bào)》
“谷歌和麻省理工學(xué)院讓普通大眾變成了應(yīng)用的生產(chǎn)者。”——《舊金山紀(jì)事報(bào)》
“本書(shū)適用于所有年齡段的讀者。我的學(xué)生喜歡擴(kuò)展書(shū)中的例子,這種再創(chuàng)造的工作讓他們樂(lè)此不疲。真是一本了不起的移動(dòng)開(kāi)發(fā)入門(mén)書(shū)!”——Ralph Morelli,劍橋大學(xué)三一學(xué)院教授
“全球近200萬(wàn)的用戶(hù)實(shí)踐證明,App Inventor讓普通的App消費(fèi)者變成了創(chuàng)造者……本書(shū)作者是當(dāng)之無(wú)愧的世界教師和軟件工程師,他們參與了App Inventor的開(kāi)發(fā)、測(cè)試以及文檔整理工作,還撰寫(xiě)了這本奇妙的書(shū),對(duì)此我深表謝意。”——Mark Friedman,谷歌公司App Inventor for Android項(xiàng)目組技術(shù)主管及經(jīng)理