第1 章 Android 係統服務開發 1
1.1 Android 係統服務開發簡介 2
1.1.1 Android 的齣現 2
1.1.2 移動設備的硬件結構 5
1.1.3 Android 硬件服務開發概要 11
1.1.4 本書的敘述方嚮 14
1.2 IPC 16
1.2.1 Android 的進程 16
1.2.2 進程的fork() 及exec() 函數 17
1.2.3 Linux 內核的IPC 19
1.2.4 Linux 管道 20
1.2.5 網絡套接字 21
1.2.6 UNIX 套接字 27
1.3 I/O 多路復用 30
1.3.1 服務器端/ 客戶端模型 30
1.3.2 使用select() 函數的I/O 多路復用 33
1.3.3 select() 函數示例 34
1.4 ITC 36
1.4.1 多綫程 36
1.4.2 Android 的ITC 模型 39
1.4.3 消息 42
1.4.4 Looper 45
1.4.5 Handler 49
1.4.6 HandlerThread 54
1.5 守護進程服務分析 56
1.5.1 普通守護進程程序的結構 56
1.5.2 生成init 進程的守護進程服務 58
1.5.3 守護進程與多客戶端間的通信 65
第2 章 RIL 70
2.1 RIL 簡介 71
2.1.1 RIL 簡介 71
2.1.2 AP 與調製解調器間的相互作用 72
2.1.3 AP 與調製解調器間的通信:RIL 命令 73
2.2 RIL 結構 75
2.2.1 Android 通信棧 76
2.2.2 Android RIL 的調製解調器控製模型 77
2.3 RIL 守護進程的結構 78
2.3.1 RIL 守護進程的構成要素 79
2.3.2 RIL 事件 80
2.3.3 RIL 事件調度程序 81
2.4 RIL 守護進程初始化 87
2.4.1 守護進程的啓動 87
2.4.2 RIL 守護進程初始化過程 90
2.4.3 動態加載Vendor RIL 庫 91
2.4.4 生成RIL 事件調度程序 92
2.4.5 Vendor RIL 初始化 97
2.4.6 注冊Vendor RIL 的Radio控製函數及生成I/O 事件專用套接字 100
2.5 RIL 事件處理機製 103
2.5.1 RIL 事件調度程序的運行原理 103
2.5.2 RIL 事件處理迴調函數 110
2.5.3 RIL req 處理機製 119
2.5.4 RIL resp 處理機製 124
2.5.5 RIL ind 處理機製 129
第3 章 通信框架 136
3.1 通信框架概要 137
3.1.1 通信框架的功能 137
3.1.2 通信框架提供的服務 139
3.2 通信框架的結構 140
3.2.1 通信框架的分層構成要素 140
3.2.2 PhoneApp 類 142
3.2.3 PhoneProxy 類 142
3.2.4 Phone 接口 144
3.2.5 Radio 接口 146
3.2.6 state tracker 類 148
3.2.7 CallManager 類 149
3.2.8 不同版本中通信框架的變化(1.5~4.2) 151
3.3 通信框架的初始化 152
3.3.1 Phone 應用程序的生成 153
3.3.2 通信框架的初始化 155
3.3.3 RILJava 的初始化 160
3.4 通信框架的服務模型 164
3.4.1 通信框架的服務結構 164
3.4.2 通信框架的服務req/resp 處理機製 165
3.4.3 通信框架的服務ind 處理機製 172
3.5 RILJava 的RIL req 處理示例 186
3.5.1 Phone 應用程序的通信框架API 調用 187
3.5.2 調用RILJava 的Radio API 189
3.5.3 生成RILJava 的RILRequest對象 191
3.5.4 嚮RILSender 綫程傳送RILRequest 對象 193
3.5.5 發送RILSender 綫程的RIL req 194
3.6 RILJava 的RIL resp 處理示例 197
3.6.1 從RIL 守護進程接收RIL resp 198
3.6.2 發送RILReceiver 綫程的服務resp 消息 200
3.6.3 處理客戶端對象handler 的服務resp 消息 202
3.7 RILJava 的RIL ind 處理示例 203
3.7.1 注冊Subscriber 對象的服務ind 204
3.7.2 接收RILReceive 綫程的RIL ind 205
3.7.3 調用RILReceive 綫程的
notifyRegistrant() 方法 206
3.7.4 處理Subscriber 對象handler的服務ind 消息 209
第4 章 USIM 211
4.1 USIM 簡介 212
4.1.1 智能卡的定義 213
4.1.2 智能卡的啓動過程 213
4.1.3 使用APDU 的智能卡通信 215
4.1.4 USIM 的由來 215
4.1.5 USIM 的主要功能 216
4.2 USIM 的數據結構及運行 219
4.2.1 USIM 的數據結構 219
4.2.2 USIM 的移動通信相關EF 221
4.2.3 通過APDU 讀取EF 的過程 223
4.3 Android USIM 軟件結構 225
4.3.1 調製解調器 225
4.3.2 RIL 226
4.3.3 通信框架 226
4.3.4 Android 應用程序 229
4.4 Android USIM 初始化及運行 230
4.4.1 UICC 初始化及UICC 相關對象的生成 230
4.4.2 係統啓動後調製解調器通電 235
4.4.3 進入SIM_READY 狀態 240
4.4.4 查看USIM 狀態及執行EF讀取 244
4.4.5 分析通信框架的EF 讀取 246
4.5 Android USAT 初始化及運行 254
4.5.1 USAT 初始化 254
4.5.2 通過Display Text 分析Proactive Command 258
4.5.3 Android 的Proactive Command處理 263
第5 章 Android 電源管理 270
5.1 電源管理概述 272
5.1.1 電功率 273
5.1.2 瞭解電池 273
5.1.3 默認電源狀態 274
5.1.4 Android 電源管理的作用 275
5.2 Android 電源管理的結構 276
5.2.1 Android 電源管理的層級結構 277
5.2.2 Power Manager 278
5.2.3 Power Manager Service 279
5.2.4 本地空間 280
5.2.5 內核空間 282
5.2.6 Android 電源管理主要方法調用過程 283
5.3 Power Manager Service 的初始化 284
5.3.1 Power Manager Service 的類結構及方法 285
5.3.2 生成並注冊Power ManagerService 286
5.3.3 Power Manager Service 初始化:init() 方法 290
5.3.4 Power Manager Service 初始化:systemReady() 方法 302
5.4 Power Manager Service 的主要操作 304
5.4.1 Power Manager Service 狀態 304
5.4.2 決定Power Manager Service狀態 307
5.4.3 屏幕亮度時間的結構 315
5.4.4 根據屏幕亮度時間控製屏幕亮度 318
5.4.5 屏幕亮度轉換的結構要素 320
5.4.6 屏幕亮度轉換操作 321
5.4.7 Wake Lock 標記與標簽 328
5.4.8 生成Wake Lock 330
5.4.9 獲取Wake Lock 334
5.4.10 解除Wake Lock 344
5.5 間接應用電源管理服務 344
5.5.1 Power Manager 類提供的方法 345
5.5.2 Power Manager 類的實例化及獲取 345
5.5.3 獲取Wake Lock:PARTIAL_WAKE_LOCK 347
5.5.4 Wake Lock 獲取示例:PARTIAL_WAKE_LOCK 348
5.5.5 獲取Wake Lock:屏幕亮度控製標記 350
5.5.6 Wake Lock 獲取示例:FULL_WAKE_LOCK 352
5.5.7 獲取Wake Lock:ACQUIRE_CAUSES_WAKEUP 353
5.5.8 解除Wake Lock:PARTIAL_WAKE_LOCK 357
5.5.9 解除Wake Lock:屏幕亮度控製標記 358
5.5.10 解除Wake Lock:ON_AFTER_RELEASE 360
5.6 直接應用Power Manager Service 361
5.6.1 屏幕亮度設置 362
5.6.2 Poke Lock 363
5.7 不應用Power Manager Service的Wake Lock 364
第6 章 Android 內核電源管理 367
6.1 Linux 內核電源管理 369
6.1.1 APM 與ACPI 369
6.1.2 設備電源管理 372
6.2 Android 內核電源管理 372
6.2.1 Android 內核修訂內容 372
6.2.2 kobject 與sysfs 文件係統 373
6.2.3 生成用於電源管理的sysfs文件 376
6.3 電源管理初始化 378
6.4 Early Suspend 381
6.4.1 Early Suspend 結構體與注冊 382
6.4.2 Early Suspend 操作 384
6.5 Wake Lock 387
6.5.1 Wake Lock 結構 387
6.5.2 生成Wake Lock 389
6.5.3 激活Wake Lock 390
6.5.4 禁用Wake Lock 393
6.6 Suspend 394
6.6.1 執行Suspend 394
6.6.2 準備Suspend 395
6.6.3 進入Suspend 396
6.7 Resume 399
6.7.1 Early Resume 400
6.7.2 設備Resume 401
6.7.3 Resume 完成 402
6.8 Late Resume 402
6.9 Surface Flinger 與內核之間的相互操作 405
6.9.1 屏幕On(開)狀態到Off
(關)狀態的轉換 406
6.9.2 屏幕Off(關)狀態到On(開)狀態的轉換 409
索引 412
· · · · · · (
收起)