第一部分 構建更好的基礎
第1章 完善開發環境 2
1.1 可供選擇的操作係統 2
1.2 Android SDK進階 2
1.2.1 adb工具 3
1.2.2 用Monkey對應用UI做壓力測試 5
1.2.3 在Android上使用Gradle構建係統 6
1.2.4 用ProGuard優化和混淆代碼 9
1.3 Android庫項目以及第三方庫 9
1.3.1 使用JAR庫 9
1.3.2 創建庫項目 10
1.4 版本控製和源代碼管理 11
1.5 熟練使用IDE 13
1.5.1 調試Android應用 14
1.5.2 使用lint做靜態代碼分析 15
1.5.3 重構代碼 18
1.6 Android設備上的Developer選項 20
1.7 小結 22
1.8 延伸閱讀 22
第2章 在Android上編寫高效的Java代碼 23
2.1 比較Android上的Dalvik Java和
Java SE 23
2.2 優化Android上的Java代碼 25
2.2.1 Android上的類型安全枚舉 26
2.2.2 Android中增強版的for循環 27
2.2.3 隊列、同步和鎖 28
2.3 管理和分配內存 30
2.4 Android中的多綫程 33
2.4.1 Thread類 34
2.4.2 AsyncTask 35
2.4.3 Handler類 36
2.4.4 選擇閤適的綫程 41
2.5 小結 41
2.6 延伸閱讀 42
第二部分 充分利用組件
第3章 組件、清單及資源 44
3.1 Android組件 44
3.1.1 Activity 44
3.1.2 Service 45
3.1.3 BroadcastReceiver 45
3.1.4 ContentProvider 46
3.1.5 Application 46
3.1.6 應用架構 48
3.2 應用程序清單 49
3.2.1 manifest元素 49
3.2.2 Google Play過濾器和權限 50
3.2.3 application節點元素 51
3.2.4 組件元素和屬性 52
3.2.5 Intent過濾 53
3.3 resources和assets 55
3.3.1 高級string資源 55
3.3.2 本地化 57
3.3.3 使用資源限定符 58
3.3.4 使用assets 59
3.4 小結 59
3.5 延伸閱讀 60
第4章 Android用戶體驗和界麵設計 61
4.1 用戶故事 61
4.2 Android UI設計 62
4.2.1 導航 63
4.2.2 用戶界麵原型 63
4.3 Android用戶界麵元素 64
4.4 Android應用程序文本 65
4.4.1 字體 65
4.4.2 文本布局 65
4.5 尺寸和大小 66
4.5.1 推薦尺寸 66
4.5.2 圖標大小 67
4.5.3 字體大小 67
4.6 顔色 68
4.7 圖像和圖標 69
4.7.1 典型透視 69
4.7.2 幾何離子 70
4.7.3 人臉識彆 70
4.8 可用性 71
4.9 用戶奬勵機製 71
4.10 小結 73
4.11 延伸閱讀 73
第5章 Android用戶界麵操作 75
5.1 Activity和Fragment 75
5.2 使用多個屏幕 77
5.3 設計自定義視圖 79
5.3.1 View的生命周期 79
5.3.2 鋼琴鍵盤部件 80
5.4 多點觸控 85
5.4.1 PointerCoordinates 87
5.4.2 鏇轉手勢 87
5.5 OpenGL ES 89
5.6 小結 90
5.7 延伸閱讀 90
第6章 Service和後颱任務 91
6.1 何時以及如何使用Service 91
6.2 理解Service生命周期 92
6.2.1 Service的創建和銷毀 92
6.2.2 啓動Service 92
6.2.3 綁定Service 94
6.2.4 保持活躍 96
6.2.5 停止Service 97
6.3 在後颱運行 99
6.3.1 IntentService 99
6.3.2 並行執行 100
6.4 和Service通信 103
6.4.1 使用Intent進行異步消息傳遞 103
6.4.2 本地綁定的Servcie 104
6.5 小結 107
6.6 延伸閱讀 108
第7章 Android IPC 109
7.1 Binder簡介 109
7.1.1 Binder地址 110
7.1.2 Binder事務 111
7.1.3 Parcel 112
7.1.4 link to death 114
7.2 設計API 114
7.2.1 AIDL 115
7.2.2 Messenger 119
7.2.3 使用庫工程包裝API 122
7.3 保護遠程API 125
7.4 小結 126
7.5 延伸閱讀 126
第8章 掌握BroadcastReceiver以及配置更改 127
8.1 BroadcastReceiver 128
8.1.1 本地BroadcastReceiver 129
8.1.2 普通廣播和有序廣播 130
8.1.3 粘性廣播 132
8.1.4 定嚮廣播 132
8.1.5 啓用和禁用廣播接收器 133
8.1.6 係統廣播Intent 133
8.2 設備配置更改 137
8.3 小結 137
8.4 延伸閱讀 138
第9章 數據存儲和序列化技術 139
9.1 Android持久化選項 139
9.2 在偏好文件中存儲數據 140
9.3 用戶選項和設置用戶界麵 142
9.4 高性能ContentProvider 144
9.4.1 Android數據庫設計 144
9.4.2 創建和升級數據庫 145
9.4.3 實現查詢方法 147
9.4.4 數據庫事務 149
9.4.5 在ContentProvider中存儲二進製數據 150
9.5 序列化數據 152
9.5.1 JSON 152
9.5.2 使用Gson進行高級JSON處理 154
9.5.3 Google Protocol Buffer 156
9.6 應用數據備份 159
9.7 小結 160
9.8 延伸閱讀 160
第10章 編寫自動化測試 162
10.1 Android測試原則 162
10.1.1 測試內容 163
10.1.2 基本的單元測試 163
10.1.3 測試Activity 165
10.1.4 測試Service 167
10.1.5 測試ContentProvider 168
10.1.6 運行測試 171
10.2 持續集成 172
10.3 小結 173
10.4 延伸閱讀 173
第三部分 超越極限
第11章 高級音頻、視頻及相機應用 176
11.1 高級音頻應用 176
11.1.1 低延遲音頻 176
11.1.2 OpenSL ES 179
11.1.3 文字轉語音 183
11.1.4 語音識彆 184
11.2 使用OpenGL ES 2.0處理視頻 186
11.3 使用OpenGL ES 2.0處理相機 190
11.4 多媒體編碼 192
11.5 小結 196
11.6 延伸閱讀 196
第12章 Android應用安全問題 197
12.1 Android安全的概念 197
12.1.1 簽名和密鑰 197
12.1.2 Android權限 198
12.1.3 保護用戶數據 199
12.1.4 驗證調用應用 200
12.2 客戶端數據加密 201
12.2.1 Android的加密API 201
12.2.2 生成密鑰 201
12.2.3 加密數據 202
12.2.4 解密數據 202
12.2.5 處理加密數據 203
12.3 Android的鑰匙鏈管理 204
12.4 設備管理API 208
12.5 小結 211
12.6 擴展閱讀 212
第13章 地圖、位置和活動API 213
13.1 融閤位置管理器 213
13.2 集成Google Maps v2 214
13.3 使用Google Maps 216
13.3.1 地圖標記 217
13.3.2 繪製圓形區域 218
13.3.3 繪製多邊形 219
13.3.4 有用的位置API工具 220
13.3.5 地理編碼 221
13.4 使用LocationClient 222
13.5 地理圍欄 223
13.6 活動識彆 225
13.7 小結 227
13.8 延伸閱讀 228
第14章 本地代碼和JNI 229
14.1 關於CPU體係結構 229
14.2 用C語言編寫Android應用程序 230
14.2.1 Android NDK編譯腳本 230
14.2.2 本地Activity 231
14.3 使用JNI 232
14.3.1 從Java調用本地函數 232
14.3.2 從本地調用Java方法 235
14.4 Android本地API 238
14.4.1 C語言庫 238
14.4.2 本地Android日誌 238
14.4.3 本地OpenGL ES 2.0 238
14.4.4 OpenSL ES中的本地音頻 239
14.5 移植本地庫到Android 239
14.6 小結 245
14.7 延伸閱讀 245
第15章 隱藏的Android API 246
15.1 官方API和隱藏API 246
15.2 發現隱藏API 247
15.3 安全地調用隱藏API 249
15.3.1 從設備中提取隱藏API 249
15.3.2 使用反射調用隱藏API 252
15.4 隱藏API示例 252
15.4.1 接收和閱讀SMS 252
15.4.2 Wi-Fi網絡共享 254
15.4.3 隱藏設置 255
15.5 小結 256
15.6 延伸閱讀 256
第16章 深入研究Android平颱 257
16.1 解鎖設備 258
16.1.1 刷新齣廠映像 259
16.1.2 解鎖非Nexus設備 259
16.1.3 社區支持的固件 260
16.2 Android源碼 260
16.2.1 設置構建環境 260
16.2.2 構建並刷新固件 261
16.3 編寫係統應用 262
16.3.1 平颱證書 262
16.3.2 編寫簽名的應用 263
16.4 探索Android平颱 265
16.4.1 設置IDE 265
16.4.2 Android項目 265
16.4.3 Android Linux Kernel 267
16.4.4 添加係統服務 267
16.4.5 加快平颱開發周期 270
16.5 為AOSP貢獻代碼 271
16.6 小結 273
16.7 延伸閱讀 273
第17章 網絡、Web服務和遠程API 274
17.1 Android上的網絡調用 274
17.1.1 HttpUrlConnection 275
17.1.2 Volley 278
17.1.3 OkHttp和SPDY 280
17.1.4 Web Socket 281
17.2 集成Web服務 285
17.2.1 Google Static Maps v2 285
17.2.2 使用OAuth2訪問Foursquare API 286
17.2.3 在Android中使用Facebook SDK 290
17.2.4 尋找在綫Web服務和API 294
17.3 網絡和功耗 294
17.3.1 一般準則 295
17.3.2 高效的網絡輪詢 296
17.3.3 服務器端推送 297
17.4 小結 299
17.5 延伸閱讀 299
第18章 與遠程設備通信 300
18.1 Android中的連接技術 300
18.2 Android USB 301
18.3 藍牙低功耗 303
18.4 Android Wi-Fi 306
18.4.1 服務發現 306
18.4.2 Wi-Fi Direct 308
18.5 設備上的Web服務 311
18.5.1 使用Restlet創建RESTful API 311
18.5.2 Web Socket服務器 315
18.6 小結 317
18.7 延伸閱讀 317
第19章 Google Play Service 318
19.1 授權 318
19.2 Google Drive應用程序數據 321
19.3 Google Cloud Endpoint 324
19.4 榖歌雲消息 327
19.5 Google Play Game Service 331
19.5.1 數據消息 333
19.5.2 消息策略 334
19.6 小結 335
19.7 延伸閱讀 336
第20章 在Google Play Store發布應用 337
20.1 應用內付費 338
20.1.1 消費産品 340
20.1.2 應用內訂閱 340
20.2 在應用內添加廣告 341
20.2.1 定位廣告 342
20.2.2 廣告顔色 343
20.2.3 插播式廣告 343
20.3 應用程序許可 344
20.4 APK擴展文件 345
20.4.1 創建擴展文件 346
20.4.2 下載擴展文件 346
20.5 小結 348
20.6 延伸閱讀 348
· · · · · · (
收起)