本書(shū)是一部Android開(kāi)發(fā)的進(jìn)階實(shí)戰(zhàn)教程,由點(diǎn)及面、由原理到實(shí)戰(zhàn),帶領(lǐng)讀者一步一步深入探索App開(kāi)發(fā)的神奇世界。全書(shū)共分為13章。其中,前5章是單機(jī)部分,主要講解App的圖像加工、事件交互、動(dòng)畫(huà)特效、手機(jī)閱讀、三維處理等App開(kāi)發(fā)的高級(jí)進(jìn)階;中間4章是聯(lián)網(wǎng)部分,主要講解App的網(wǎng)絡(luò)通信、音頻處理、視頻處理、定位導(dǎo)航等網(wǎng)絡(luò)交互的高級(jí)進(jìn)階;后4章涉及人工智能方面的內(nèi)容,主要講解物聯(lián)網(wǎng)、智能語(yǔ)音、人臉識(shí)別、在線直播等智能化應(yīng)用進(jìn)階。書(shū)中在講解知識(shí)點(diǎn)的同時(shí)給出了大量實(shí)戰(zhàn)范例,各章末尾都提供了精心設(shè)計(jì)的實(shí)戰(zhàn)項(xiàng)目(共14個(gè)),所有實(shí)戰(zhàn)項(xiàng)目都提供了完整的源碼,方便讀者迅速將所學(xué)的知識(shí)運(yùn)用到實(shí)際開(kāi)發(fā)中。這14個(gè)流行App是可愛(ài)大頭貼、摳圖工具、動(dòng)感影集、電子書(shū)架、全景相冊(cè)、即時(shí)聊天、長(zhǎng)音頻分享、短視頻分享、附近交友、智能小車、問(wèn)答機(jī)器人、智慧天眼、視頻通話、直播帶貨。另外,本書(shū)還講解了掃一掃、搖一搖、指南針、地球儀、衛(wèi)星渾天儀等趣味應(yīng)用。
本書(shū)既適合Android開(kāi)發(fā)的廣大從業(yè)者、有志于轉(zhuǎn)型App開(kāi)發(fā)的程序員、App開(kāi)發(fā)的業(yè)余愛(ài)好者閱讀,也可作為大中專院校與培訓(xùn)機(jī)構(gòu)的Android開(kāi)發(fā)課程的教材。
第1章圖像加工 1
1.1圖像裝飾 1
1.1.1卡片視圖 1
1.1.2給圖像添加裝飾 3
1.1.3給圖像添加水波特效 6
1.2位圖加工 8
1.2.1轉(zhuǎn)換位圖的像素色彩 8
1.2.2裁剪位圖內(nèi)部區(qū)域 10
1.2.3利用矩陣變換位圖 12
1.3自定義圖形 14
1.3.1位圖與圖形互轉(zhuǎn) 14
1.3.2剪裁圖形內(nèi)部區(qū)域 15
1.3.3給圖形添加小部件 17
1.4實(shí)戰(zhàn)項(xiàng)目:青蔥歲月之可愛(ài)大頭貼 20
1.4.1需求描述 20
1.4.2功能分析 20
1.4.3效果展示 22
1.5小結(jié) 23
1.6動(dòng)手練習(xí) 23
第2章事件交互 24
2.1按鍵事件 24
2.1.1檢測(cè)軟鍵盤 24
2.1.2檢測(cè)物理按鍵 26
2.1.3接管返回按鍵 27
2.2觸摸事件 29
2.2.1手勢(shì)事件的分發(fā)流程 29
2.2.2接管手勢(shì)事件處理 33
2.2.3跟蹤滑動(dòng)軌跡實(shí)現(xiàn)手寫(xiě)簽名 36
2.3根據(jù)觸摸行為辨別手勢(shì)動(dòng)作 38
2.3.1區(qū)分點(diǎn)擊和長(zhǎng)按動(dòng)作 38
2.3.2識(shí)別手勢(shì)滑動(dòng)的方向 40
2.3.3辨別縮放與旋轉(zhuǎn)手勢(shì) 42
2.4手勢(shì)沖突處理 46
2.4.1上下滾動(dòng)與左右滑動(dòng)的沖突處理 46
2.4.2內(nèi)部滑動(dòng)與翻頁(yè)滑動(dòng)的沖突處理 49
2.4.3正常下拉與下拉刷新的沖突處理 53
2.5實(shí)戰(zhàn)項(xiàng)目:仿美圖秀秀的摳圖工具 56
2.5.1需求描述 56
2.5.2功能分析 57
2.5.3效果展示 58
2.6小結(jié) 59
2.7動(dòng)手練習(xí) 59
第3章動(dòng)畫(huà)特效 60
3.1幀動(dòng)畫(huà) 60
3.1.1幀動(dòng)畫(huà)的實(shí)現(xiàn) 60
3.1.2顯示動(dòng)圖特效 62
3.1.3淡入淡出動(dòng)畫(huà) 66
3.2補(bǔ)間動(dòng)畫(huà) 67
3.2.1補(bǔ)間動(dòng)畫(huà)的種類 67
3.2.2補(bǔ)間動(dòng)畫(huà)的原理 72
3.2.3集合動(dòng)畫(huà) 74
3.3屬性動(dòng)畫(huà) 76
3.3.1常規(guī)的屬性動(dòng)畫(huà) 76
3.3.2屬性動(dòng)畫(huà)組合 78
3.3.3插值器和估值器 80
3.3.4利用估值器實(shí)現(xiàn)彈幕動(dòng)畫(huà) 83
3.4遮罩動(dòng)畫(huà)及滾動(dòng)器 86
3.4.1畫(huà)布的繪圖層次 86
3.4.2實(shí)現(xiàn)百葉窗動(dòng)畫(huà) 90
3.4.3利用滾動(dòng)器實(shí)現(xiàn)ping滑翻頁(yè) 94
3.5實(shí)戰(zhàn)項(xiàng)目:仿手機(jī)QQ的動(dòng)感影集 97
3.5.1需求描述 98
3.5.2功能分析 99
3.5.3效果展示 102
3.6小結(jié) 104
3.7動(dòng)手練習(xí) 104
第4章手機(jī)閱讀 105
4.1貝塞爾曲線 105
4.1.1貝塞爾曲線的原理 105
4.1.2實(shí)現(xiàn)波浪起伏動(dòng)畫(huà) 107
4.1.3實(shí)現(xiàn)給主播刷禮物的特效 108
4.2瀏覽PDF文件 111
4.2.1PDF文件渲染器 111
4.2.2實(shí)現(xiàn)ping滑翻書(shū)效果 113
4.2.3實(shí)現(xiàn)卷曲翻書(shū)動(dòng)畫(huà) 116
4.3JNI開(kāi)發(fā) 122
4.3.1NDK環(huán)境搭建 122
4.3.2創(chuàng)建JNI接口 125
4.3.3JNI實(shí)現(xiàn)加解密 128
4.3.4采取CMake編譯方式 132
4.4實(shí)戰(zhàn)項(xiàng)目:筆墨飄香之電子書(shū)架 134
4.4.1需求描述 134
4.4.2功能分析 136
4.4.3效果展示 139
4.5小結(jié) 141
4.6動(dòng)手練習(xí) 141
第5章三維處理 142
5.1OpenGL 142
5.1.1三維投影 142
5.1.2輪廓勾勒 147
5.1.3紋理貼圖 152
5.2OpenGLES 155
5.2.1著色器小程序 155
5.2.2通過(guò)矩陣變換調(diào)整視角 160
5.2.3給三維物體貼圖 163
5.3Vulkan 166
5.3.1下一代OpenGLVulkan 166
5.3.2簡(jiǎn)單的Vulkan例子 167
5.3.3Vulkan的實(shí)戰(zhàn)應(yīng)用 169
5.4實(shí)戰(zhàn)項(xiàng)目:虛擬現(xiàn)實(shí)的全景相冊(cè) 171
5.4.1需求描述 171
5.4.2功能分析 172
5.4.3效果展示 176
5.5小結(jié) 177
5.6動(dòng)手練習(xí) 177
第6章網(wǎng)絡(luò)通信 178
6.1多線程 178
6.1.1通過(guò)runOnUiThread快速操縱界面 178
6.1.2利用線程池Executor調(diào)度異步任務(wù) 181
6.1.3工作管理器WorkManager 183
6.2HTTP訪問(wèn) 186
6.2.1通過(guò)okhttp調(diào)用HTTP接口 187
6.2.2使用okhttp下載和上傳文件 191
6.2.3實(shí)現(xiàn)下拉刷新和上拉加載 196
6.3即時(shí)通信 200
6.3.1通過(guò)SocketIO傳輸文本消息 200
6.3.2通過(guò)SocketIO傳輸圖片消息 203
6.3.3利用WebSocket傳輸消息 206
6.4實(shí)戰(zhàn)項(xiàng)目:仿微信的私聊和群聊 209
6.4.1需求描述 209
6.4.2功能分析 211
6.4.3效果展示 217
6.5小結(jié) 221
6.6動(dòng)手練習(xí) 221
第7章音韻留聲 222
7.1音量調(diào)節(jié) 222
7.1.1拖動(dòng)條和滑動(dòng)條 222
7.1.2音頻管理器 225
7.1.3音量調(diào)節(jié)對(duì)話框 226
7.2音頻錄播 230
7.2.1普通音頻的錄播 230
7.2.2原始音頻的錄播 235
7.2.3自定義音頻控制條 238
7.3音效增強(qiáng) 244
7.3.1鈴聲播放 244
7.3.2聲音池調(diào)度 246
7.3.3錄制WAV音頻 249
7.3.4錄制MP3音頻 253
7.4實(shí)戰(zhàn)項(xiàng)目:仿喜馬拉雅的聽(tīng)說(shuō)書(shū) 257
7.4.1需求描述 257
7.4.2功能分析 259
7.4.3效果展示 262
7.5小結(jié) 265
7.6動(dòng)手練習(xí) 265
第8章影像記錄 266
8.1經(jīng)典相機(jī) 266
8.1.1表面視圖和紋理視圖 266
8.1.2使用經(jīng)典相機(jī)拍照 268
8.1.3使用經(jīng)典相機(jī)錄像 273
8.1.4自定義視頻控制條 276
8.2二代相機(jī) 279
8.2.1使用二代相機(jī)拍照 280
8.2.2使用二代相機(jī)錄像 286
8.2.3新型播放器ExoPlayer 290
8.3畫(huà)面截取 294
8.3.1截取視頻的某幀 294
8.3.2自定義懸浮窗 296
8.3.3對(duì)屏幕畫(huà)面截圖 301
8.4實(shí)戰(zhàn)項(xiàng)目:仿抖音的短視頻分享 305
8.4.1需求描述 305
8.4.2功能分析 308
8.4.3效果展示 311
8.5小結(jié) 313
8.6動(dòng)手練習(xí) 313
第9章定位導(dǎo)航 314
9.1基礎(chǔ)定位 314
9.1.1開(kāi)啟定位功能 314
9.1.2獲取定位信息 316
9.1.3根據(jù)經(jīng)緯度查找詳細(xì)地址 321
9.2擴(kuò)展定位 323
9.2.1獲取照片里的位置信息 323
9.2.2全球衛(wèi)星導(dǎo)航系統(tǒng) 327
9.2.3室內(nèi)WiFi定位 330
9.3地圖導(dǎo)航 336
9.3.1集成騰訊地圖 336
9.3.2顯示地圖面板 339
9.3.3獲取地點(diǎn)信息 341
9.3.4規(guī)劃導(dǎo)航路線 343
9.4實(shí)戰(zhàn)項(xiàng)目:仿微信的附近的人 347
9.4.1需求描述 347
9.4.2功能分析 349
9.4.3效果展示 352
9.5小結(jié) 355
9.6動(dòng)手練習(xí) 355
第10章物聯(lián)網(wǎng) 356
10.1傳感器 356
10.1.1傳感器的種類 356
10.1.2搖一搖加速度傳感器 358
10.1.3指南針磁場(chǎng)傳感器 360
10.1.4計(jì)步器、感光器和陀螺儀 362
10.2傳統(tǒng)藍(lán)牙 365
10.2.1藍(lán)牙設(shè)備配對(duì) 365
10.2.2藍(lán)牙音頻傳輸 371
10.2.3點(diǎn)對(duì)點(diǎn)藍(lán)牙通信 374
10.3低功耗藍(lán)牙 381
10.3.1掃描BLE設(shè)備 381
10.3.2發(fā)送BLE廣播 387
10.3.3通過(guò)主從BLE實(shí)現(xiàn)聊天應(yīng)用 390
10.4實(shí)戰(zhàn)項(xiàng)目:自動(dòng)駕駛的智能小車 397
10.4.1需求描述 397
10.4.2功能分析 397
10.4.3效果展示 401
10.5小結(jié) 403
10.6動(dòng)手練習(xí) 403
第11章智能語(yǔ)音 404
11.1原生語(yǔ)音處理 404
11.1.1系統(tǒng)自帶的語(yǔ)音引擎 404
11.1.2文字轉(zhuǎn)語(yǔ)音 406
11.1.3原生的語(yǔ)音識(shí)別 409
11.2在線語(yǔ)音處理 411
11.2.1中文轉(zhuǎn)拼音 411
11.2.2在線語(yǔ)音合成 414
11.2.3在線語(yǔ)音識(shí)別 417
11.3基于機(jī)器學(xué)習(xí)的語(yǔ)音推斷 421
11.3.1TensorFlow簡(jiǎn)介 422
11.3.2TensorFlowLite 423
11.3.3從語(yǔ)音中識(shí)別指令 425
11.4實(shí)戰(zhàn)項(xiàng)目:你問(wèn)我答之小小機(jī)器人 426
11.4.1需求描述 426
11.4.2功能分析 427
11.4.3效果展示 433
11.5小結(jié) 437
11.6動(dòng)手練習(xí) 437
第12章人臉識(shí)別 438
12.1簡(jiǎn)單圖像識(shí)別 438
12.1.1自動(dòng)識(shí)別驗(yàn)證碼 438
12.1.2生成二維碼圖片 442
12.1.3掃描識(shí)別二維碼 444
12.2基于計(jì)算機(jī)視覺(jué)的人臉識(shí)別 449
12.2.1檢測(cè)圖像中的人臉 449
12.2.2OpenCV簡(jiǎn)介及其集成 452
12.2.3利用OpenCV檢測(cè)人臉 454
12.3人臉識(shí)別的更多應(yīng)用 457
12.3.1借助攝像頭實(shí)時(shí)檢測(cè)人臉 457
12.3.2比較兩張人臉的相似程度 460
12.3.3根據(jù)人臉估算性別和年齡 463
12.4實(shí)戰(zhàn)項(xiàng)目:尋人神#器之智慧天眼 466
12.4.1需求描述 467
12.4.2功能分析 467
12.4.3效果展示 470
12.5小結(jié) 471
12.6動(dòng)手練習(xí) 472
第13章在線直播 473
13.1搭建WebRTC的服務(wù)端 473
13.1.1WebRTC的系統(tǒng)架構(gòu) 473
13.1.2搭建信令服務(wù)器 475
13.1.3搭建穿透服務(wù)器 477
13.2給App集成WebRTC 480
13.2.1引入WebRTC開(kāi)源庫(kù) 480
13.2.2實(shí)現(xiàn)WebRTC的發(fā)起方 484
13.2.3實(shí)現(xiàn)WebRTC的接收方 487
13.3實(shí)戰(zhàn)項(xiàng)目:仿微信的視頻通話 489
13.3.1需求描述 490
13.3.2功能分析 491
13.3.3效果展示 495
13.4實(shí)戰(zhàn)項(xiàng)目:仿拼多多的直播帶貨 497
13.4.1需求描述 497
13.4.2功能分析 498
13.4.3效果展示 504
13.5小結(jié) 507
13.6動(dòng)手練習(xí) 507
附錄A移動(dòng)互聯(lián)網(wǎng)行業(yè)的新技術(shù)發(fā)展簡(jiǎn)表 508
附錄BAndroid各版本的新增功能簡(jiǎn)表 510
附錄CAndroid常用開(kāi)發(fā)庫(kù)說(shuō)明簡(jiǎn)表 512
附錄D移動(dòng)開(kāi)發(fā)專業(yè)術(shù)語(yǔ)索引 514
附錄E本書(shū)的服務(wù)端程序說(shuō)明 517