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