Android App 開發進階與項目實戰

Android App 開發進階與項目實戰

作者: 歐陽燊
出版社: 清華大學
出版在: 2021-11-01
ISBN-13: 9787302592594
ISBN-10: 7302592594
裝訂格式: 平裝
總頁數: 532 頁





內容描述


本書是一部Android開發的進階實戰教程,由點及面、由原理到實戰,帶領讀者一步一步深入探索App開發的神奇世界。全書共分為13章。其中,前5章是單機部分,主要講解App的圖像加工、事件交互、動畫特效、手機閱讀、三維處理等App開發的高級進階;中間4章是聯網部分,主要講解App的網絡通信、音頻處理、視頻處理、定位導航等網絡交互的高級進階;後4章涉及人工智能方面的內容,主要講解物聯網、智能語音、人臉識別、在線直播等智能化應用進階。書中在講解知識點的同時給出了大量實戰範例,各章末尾都提供了精心設計的實戰項目(共14個),所有實戰項目都提供了完整的源碼,方便讀者迅速將所學的知識運用到實際開發中。這14個流行App是可愛大頭貼、摳圖工具、動感影集、電子書架、全景相冊、即時聊天、長音頻分享、短視頻分享、附近交友、智能小車、問答機器人、智慧天眼、視頻通話、直播帶貨。另外,本書還講解了掃一掃、搖一搖、指南針、地球儀、衛星渾天儀等趣味應用。 本書既適合Android開發的廣大從業者、有志於轉型App開發的程序員、App開發的業餘愛好者閱讀,也可作為大中專院校與培訓機構的Android開發課程的教材。


目錄大綱


第1章  圖像加工 1
1.1  圖像裝飾 1
1.1.1  卡片視圖 1
1.1.2  給圖像添加裝飾 3
1.1.3  給圖像添加水波特效 6
1.2  位圖加工 8
1.2.1  轉換位圖的像素色彩 8
1.2.2  裁剪位圖內部區域 10
1.2.3  利用矩陣變換位圖 12
1.3  自定義圖形 14
1.3.1  位圖與圖形互轉 14
1.3.2  剪裁圖形內部區域 15
1.3.3  給圖形添加小部件 17
1.4  實戰項目:青蔥歲月之可愛大頭貼 20
1.4.1  需求描述 20
1.4.2  功能分析 20
1.4.3  效果展示 22
1.5  小結 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  手勢事件的分發流程 29
2.2.2  接管手勢事件處理 33
2.2.3  跟踪滑動軌跡實現手寫簽名 36
2.3  根據觸摸行為辨別手勢動作 38
2.3.1  區分點擊和長按動作 38
2.3.2  識別手勢滑動的方向 40
2.3.3  辨別縮放與旋轉手勢 42
2.4  手勢衝突處理 46
2.4.1  上下滾動與左右滑動的衝突處理 46
2.4.2  內部滑動與翻頁滑動的衝突處理 49
2.4.3  正常下拉與下拉刷新的衝突處理 53
2.5  實戰項目:仿美圖秀秀的摳圖工具 56
2.5.1  需求描述 56
2.5.2  功能分析 57
2.5.3  效果展示 58
2.6  小結 59
2.7  動手練習 59
第3章  動畫特效 60
3.1  幀動畫 60
3.1.1  幀動畫的實現 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  常規的屬性動畫 76
3.3.2  屬性動畫組合 78
3.3.3  插值器和估值器 80
3.3.4  利用估值器實現彈幕動畫 83
3.4  遮罩動畫及滾動器 86
3.4.1  畫布的繪圖層次 86
3.4.2  實現百葉窗動畫 90
3.4.3  利用滾動器實現ping滑翻頁 94
3.5  實戰項目:仿手機QQ的動感影集 97
3.5.1  需求描述 98
3.5.2  功能分析 99
3.5.3  效果展示 102
3.6  小結 104
3.7  動手練習 104
第4章  手機閱讀 105
4.1  貝塞爾曲線 105
4.1.1  貝塞爾曲線的原理 105
4.1.2  實現波浪起伏動畫 107
4.1.3  實現給主播刷禮物的特效 108
4.2  瀏覽PDF文件 111
4.2.1  PDF文件渲染器 111
4.2.2  實現ping滑翻書效果 113
4.2.3  實現捲曲翻書動畫 116
4.3  JNI開發 122
4.3.1  NDK環境搭建 122
4.3.2  創建JNI接口 125
4.3.3  JNI實現加解密 128
4.3.4  採取CMake編譯方式 132
4.4  實戰項目:筆墨飄香之電子書架 134
4.4.1  需求描述 134
4.4.2  功能分析 136
4.4.3  效果展示 139
4.5  小結 141
4.6  動手練習 141
第5章  三維處理 142
5.1  OpenGL 142
5.1.1  三維投影 142
5.1.2  輪廓勾勒 147
5.1.3  紋理貼圖 152
5.2  OpenGL ES 155
5.2.1  著色器小程序 155
5.2.2  通過矩陣變換調整視角 160
5.2.3  給三維物體貼圖 163
5.3  Vulkan 166
5.3.1  下一代OpenGL——Vulkan 166
5.3.2  簡單的Vulkan例子 167
5.3.3  Vulkan的實戰應用 169
5.4  實戰項目:虛擬現實的全景相冊 171
5.4.1  需求描述 171
5.4.2  功能分析 172
5.4.3  效果展示 176
5.5  小結 177
5.6  動手練習 177
第6章  網絡通信 178
6.1  多線程 178
6.1.1  通過runOnUiThread快速操縱界面 178
6.1.2  利用線程池Executor調度異步任務 181
6.1.3  工作管理器WorkManager 183
6.2  HTTP訪問 186
6.2.1  通過okhttp調用HTTP接口 187
6.2.2  使用okhttp下載和上傳文件 191
6.2.3  實現下拉刷新和上拉加載 196
6.3  即時通信 200
6.3.1  通過SocketIO傳輸文本消息 200
6.3.2  通過SocketIO傳輸圖片消息 203
6.3.3  利用WebSocket傳輸消息 206
6.4  實戰項目:仿微信的私聊和群聊 209
6.4.1  需求描述 209
6.4.2  功能分析 211
6.4.3  效果展示 217
6.5  小結 221
6.6  動手練習 221
第7章  音韻留聲 222
7.1  音量調節 222
7.1.1  拖動條和滑動條 222
7.1.2  音頻管理器 225
7.1.3  音量調節對話框 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  聲音池調度 246
7.3.3  錄製WAV音頻 249
7.3.4  錄製MP3音頻 253
7.4  實戰項目:仿喜馬拉雅的聽說書 257
7.4.1  需求描述 257
7.4.2  功能分析 259
7.4.3  效果展示 262
7.5  小結 265
7.6  動手練習 265
第8章  影像記錄 266
8.1  經典相機 266
8.1.1  表面視圖和紋理視圖 266
8.1.2  使用經典相機拍照 268
8.1.3  使用經典相機錄像 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  實戰項目:仿抖音的短視頻分享 305
8.4.1  需求描述 305
8.4.2  功能分析 308
8.4.3  效果展示 311
8.5  小結 313
8.6  動手練習 313
第9章  定位導航 314
9.1  基礎定位 314
9.1.1  開啟定位功能 314
9.1.2  獲取定位信息 316
9.1.3  根據經緯度查找詳細地址 321
9.2  擴展定位 323
9.2.1  獲取照片裡的位置信息 323
9.2.2  全球衛星導航系統 327
9.2.3  室內WiFi定位 330
9.3  地圖導航 336
9.3.1  集成騰訊地圖 336
9.3.2  顯示地圖面板 339
9.3.3  獲取地點信息 341
9.3.4  規劃導航路線 343
9.4  實戰項目:仿微信的附近的人 347
9.4.1  需求描述 347
9.4.2  功能分析 349
9.4.3  效果展示 352
9.5  小結 355
9.6  動手練習 355
第10章  物聯網 356
10.1  傳感器 356
10.1.1  傳感器的種類 356
10.1.2  搖一搖—加速度傳感器 358
10.1.3  指南針—磁場傳感器 360
10.1.4  計步器、感光器和陀螺儀 362
10.2  傳統藍牙 365
10.2.1  藍牙設備配對 365
10.2.2  藍牙音頻傳輸 371
10.2.3  點對點藍牙通信 374
10.3  低功耗藍牙 381
10.3.1  掃描BLE設備 381
10.3.2  發送BLE廣播 387
10.3.3  通過主從BLE實現聊天應用 390
10.4  實戰項目:自動駕駛的智能小車 397
10.4.1  需求描述 397
10.4.2  功能分析 397
10.4.3  效果展示 401
10.5  小結 403
10.6  動手練習 403
第11章  智能語音 404
11.1  原生語音處理 404
11.1.1  系統自帶的語音引擎 404
11.1.2  文字轉語音 406
11.1.3  原生的語音識別 409
11.2  在線語音處理 411
11.2.1  中文轉拼音 411
11.2.2  在線語音合成 414
11.2.3  在線語音識別 417
11.3  基於機器學習的語音推斷 421
11.3.1  TensorFlow簡介 422
11.3.2  TensorFlow Lite 423
11.3.3  從語音中識別指令 425
11.4  實戰項目:你問我答之小小機器人 426
11.4.1  需求描述 426
11.4.2  功能分析 427
11.4.3  效果展示 433
11.5  小結 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.2  OpenCV簡介及其集成 452
12.2.3  利用OpenCV檢測人臉 454
12.3  人臉識別的更多應用 457
12.3.1  借助攝像頭實時檢測人臉 457
12.3.2  比較兩張人臉的相似程度 460
12.3.3  根據人臉估算性別和年齡 463
12.4  實戰項目:尋人神#器之智慧天眼 466
12.4.1  需求描述 467
12.4.2  功能分析 467
12.4.3  效果展示 470
12.5  小結 471
12.6  動手練習 472
第13章  在線直播 473
13.1  搭建WebRTC的服務端 473
13.1.1  WebRTC的系統架構 473
13.1.2  搭建信令服務器 475
13.1.3  搭建穿透服務器 477
13.2  給App集成WebRTC 480
13.2.1  引入WebRTC開源庫 480
13.2.2  實現WebRTC的發起方 484
13.2.3  實現WebRTC的接收方 487
13.3  實戰項目:仿微信的視頻通話 489
13.3.1  需求描述 490
13.3.2  功能分析 491
13.3.3  效果展示 495
13.4  實戰項目:仿拼多多的直播帶貨 497
13.4.1  需求描述 497
13.4.2  功能分析 498
13.4.3  效果展示 504
13.5  小結 507
13.6  動手練習 507
附錄A  移動互聯網行業的新技術發展簡表 508
附錄B  Android各版本的新增功能簡表 510
附錄C  Android常用開發庫說明簡表 512
附錄D  移動開發專業術語索引 514
附錄E  本書的服務端程序說明 517


作者介紹


歐陽燊 ,有16年以上軟件開發經驗,熟悉C/C++、Java及相關軟件架構,7年以上Android開發經驗,目前任職於某移動通信公司,從事Android項目開發。已出版暢銷書《Android Studio開發實戰:從零基礎到App上線》《Kotlin從零到精通Android開發》《好好學Java從零基礎到項目實戰》。




相關書籍

行動支付體驗設計 | 針對行動商務的法則和最佳慣例 (Designing Mobile Payment Experiences: Principles and Best Practices for Mobile Commerce)

作者 Skip Allums 鄭巧玉 譯

2021-11-01

Swift Programming: The Big Nerd Ranch Guide

作者 Ward Mikey

2021-11-01

Android 組件化架構

作者 蒼王

2021-11-01