第1章  智能指针 1
         1.1  智能指针概述 1
         1.2  引用计数基类RefBase 2
         1.3  轻量级引用计数LightRefBase 3
         1.4  强指针 3
         1.4.1  强指针变量的初始化与生命周期 3
         1.4.2  赋值操作与引用计数变化 5
         1.5  弱指针 5
         第2章  消息队列与线程处理 7
         2.1  消息队列处理模型的设计 7
         2.2  消息队列与线程处理的Java实现 9
         2.2.1  Thread/Runnable 9
         2.2.2  Message 10
         2.2.3  MessageQueue概述 11
         2.2.4  Handler 11
         2.2.5  Looper 12
         2.2.6  再论Handler 15
         2.2.7  对同步消息的支持 16
         2.3  native层的Looper与消息队列处理 19
         2.3.1  Looper中的睡眠等待与唤醒机制 19
         2.3.2  Looper对文件描述符的监控与处理 22
         2.3.3  Looper中的消息队列处理机制 25
         2.3.4  Looper与线程执行上下文 27
         第3章  Binder IPC及其应用 29
         3.1  Binder IPC 29
         3.1.1  Binder IPC与系统服务 29
         3.1.2  Binder类结构与调用关系 31
         3.1.3  模板函数interface_cast的背后 33
         3.1.4  例子AudioPolicyService 37
         3.2  Java层对Binder的封装 40
         3.2.1  例子IMediaPlaybackService 42
         3.2.2  例子PhoneStateListener 47
         3.3  大内存块的跨进程共享 52
         3.3.1  概述 52
         3.3.2  调用接口 53
         3.3.3  设备空间的映射 55
         3.3.4  Server侧的处理 57
         第4章  HAL硬件抽象层 59
         4.1  HAL概述 59
         4.2  硬件模块库的通用写法 60
         4.3  硬件模块库的装载与解析 63
         4.4  例子Lights 65
         4.5  例子Camera 68
         4.6  例子Power和Vibrator 69
         第5章  Android的启动过程 71
         5.1  Android初始化语言及解析 71
         5.1.1  Action 71
         5.1.2  触发器trigger 72
         5.1.3  命令Command 72
         5.1.4  服务Service 74
         5.1.5  .rc文件的解析 76
         5.2  BootChart 82
         5.3  ueventd守护进程 82
         5.4  init进程的启动过程 87
         5.5  init.rc文件中的服务进程 93
         5.6  system_server进程 95
         5.6.1  app_process程序 95
         5.6.2  system_server进程 96
         第6章  输入系统 99
         6.1  输入系统概述 99
         6.2  读线程 101
         6.2.1  EventHub 101
         6.2.2  InputReader 106
         6.2.3  InputDevice 108
         6.2.4  InputMapper 108
         6.2.5  QueuedInputListener 111
         6.3  分发线程 112
         6.3.1  InputDispatcher 112
         6.3.2  InputChannel 116
         6.4  输入系统的开启 118
         第7章  MassStorage 121
         7.1  MassStorage概述 121
         7.2  MountService 122
         7.3  库libsysutils.so 123
         7.3.1  SocketListener 123
         7.3.2  FrameworkListener 126
         7.3.3  NetlinkListener 127
         7.4  守护进程vold 128
         7.4.1  NetlinkManager 128
         7.4.2  CommandListener 131
         7.4.3  vold的main函数 135
         第8章  Sensor 137
         8.1  Sensor概述 137
         8.2  SDK API概述 138
         8.3  Sensor管理器 139
         8.3.1  Sensor采样数据的获取与处理 141
         8.3.2  SensorEventQueue 146
         8.4  SensorService 147
         8.4.1  逻辑传感器 149
         8.4.2  物理传感器 150
         8.4.3  Sensor HAL 150
         第9章  RIL 153
         9.1  RIL概述 153
         9.2  rild守护进程 154
         9.3  事件处理与分发线程 158
         9.3.1  分发线程中的事件处理 158
         9.3.2  RIL请求的接收与处理 161
         9.3.3  RIL响应的回送 165
         9.4  radiooptions工具程序 169
         9.5  RILJ 169
         9.5.1  RILJ概述 169
         9.5.2  RILRequest的发送过程 171
         9.5.3  Response的处理过程 174
         第10章  com.android.phone进程 178
         10.1  层次状态机StateMachine 178
         10.2  GSMPhone 179
         10.3  GsmCallTracker 184
         10.3.1  GsmDataConnectionTracker 186
         10.3.2  GsmServiceStateTracker 188
         10.3.3  DefaultPhoneNotifier 188
         10.3.4  其他 189
         10.4  进程com.android.phone 190
         第11章  Graphic 196
         11.1  Graphic概述 196
         11.2  Java层简介 197
         11.2.1  SurfaceSession 198
         11.2.2  Surface 198
         11.2.3  SurfaceView 199
         11.2.4  TextureView 200
         11.3  JNI层简介 200
         11.4  SKIA库简介 201
         11.5  库libgui.so 202
         11.5.1  概述 202
         11.5.2  ComposerService 204
         11.5.3  共享控制块surface_flinger_cblk_t 204
         11.5.4  ISurfaceComposer 205
         11.5.5  ScreenshotClient 207
         11.5.6  SurfaceComposerClient 207
         11.5.7  Surface 210
         11.5.8  SurfaceControl 211
         11.5.9  绘图操作的前后过程 213
         11.5.10  SurfaceTexture Client 215
         11.6  SurfaceFlinger进程 222
         11.6.1  图层 223
         11.6.2  DisplayHardware简介 228
         11.6.3  HWComposer简介 228
         11.6.4  VSync 229
         11.7  库libui.so简介 247
         11.7.1  GraphicBuffer 247
         11.7.2  FramebufferNativeWindow 248
         11.8  RenderScript简介 249
         第12章  OpenGL ES软件层次栈 250
         12.1  Android中的OpenGL ES简介 250
         12.2  Android中OpenGL软件层次栈 251
         12.3  包裹库与hook钩子 253
         12.3.1  libGLESv1_CM.so包裹库 253
         12.3.2  libGLESv2包裹库 257
         12.3.3  libEGL包裹库 257
         12.3.4  结构体egl_t和gl_hooks_t钩子 258
         12.4  OpenGL实现库的加载和解析 260
         12.4.1  加载和解析的发起 260
         12.4.2  库装载器Loader 261
         12.5  libGLES_android库和ETC1简介 265
         第13章  Multimedia 267
         13.1  Multimedia概述 267
         13.2  API类简述 268
         13.3  多媒体播放(playback) 270
         13.3.1  播放流程 273
         13.3.2  来自server侧的消息事件通知 277
         13.4  多媒体录制(Recording) 279
         13.5  元数据(MetaData)获取 281
         13.6  Camera 284
         13.6.1  Camera概述 284
         13.6.2  CameraHardwareInterface与HAL层 287
         13.7  Camera事件通知机制 289
         第14章  Audio 293
         14.1  Audio概述 293
         14.2  Audio播放AudioTrack 295
         14.2.1  共享控制块audio_track_cblk_t 296
         14.2.2  数据的写入 298
         14.2.3  事件的回送及处理 299
         14.3  Auido录音Recording 301
         14.3.1  录音的开始过程 303
         14.3.2  录音的停止过程 306
         14.4  AudioFlinger 307
         14.4.1  AudioFlinger概述 307
         14.4.2  Track相关类概述 308
         14.4.3  AudioFlinger中的线程 311
         14.5  音效AudioEffect 319
         14.5.1  EffectHandle 320
         14.5.2  音效引擎的封装EffectModule 320
         14.5.3  音效链EffectChain 321
         14.5.4  音效处理引擎接口effect_interface_s 322
         14.5.5  音效引擎库audio_effect_library_s 323
         14.5.6  音效引擎工厂EffectFactory 324
         14.6  音频策略服务AudioPolicyService 326
         第15章  Stagefright 331
         15.1  Stagefright概述 331
         15.2  节点子类 332
         15.3  StagefrightPlayer 334
         15.4  视频帧的渲染输出AwesomeRenderer 343
         15.4.1  Renderer的创建 344
         15.4.2  AwesomeLocalRenderer 345
         15.4.3  AwesomeNativeWindowRenderer 347
         15.5  AudioPlayer 347
         15.6  A/V同步简介 350
         15.7  StagefrightRecorder 351
         第16章  OMXCodec 356
         16.1  OpenMAX概述 356
         16.1.1  组件(Component)与端口(Port) 357
         16.1.2  组件的初始化 358
         16.1.3  数据处理 359
         16.1.4  组件命令OMX_Command 360
         16.2  OMXCodec类 362
         16.2.1  组件的创建 362
         16.2.2  缓冲区的分配 364
         16.2.3  数据处理流程 370
         16.3  IOMX 374
         16.4  OMX插件 376
         16.4.1  平台厂家插件 377
         16.4.2  软件OMX插件SoftOMXPlugin 379
         16.5  组件消息的上报 383
         第17章  GPS 386
         17.1  GPS 简述 386
         17.2  SDK API概述 386
         17.3  LocationManagerService 388
         17.4  GpsLocationProvider 390
         17.4.1  初始化代码分析 391
         17.4.2  消息处理与回调结构体 392
         17.4.3  例子:位置信息的上报 394
         17.5  HAL层简介 396
         17.5.1  GPS的位置信息 396
         17.5.2  GPS卫星信息 397
         17.5.3  GPS回调函数 397
         第18章  NFC 399
         18.1  NFC概述 399
         18.2  SDK API概述 400
         18.2.1  NfcAdapter 401
         18.2.2  NdefMessage 401
         18.2.3  NFC Tag 402
         18.2.4  NFC-extras 403
         18.3  进程com.android.nfc 403
         18.3.1  P2pEventManager 403
         18.3.2  P2pLinkManager 405
         18.3.3  Bluetooth Handover 408
         18.3.4  SNEP 409
         18.3.5  NDEF Push 413
         18.3.6  其他类简介 414
         18.4  JNI层 415
         第19章  USB 418
         19.1  SDK API概述 418
         19.2  UsbService 420
         19.2.1  UsbDeviceManager 421
         19.2.2  UsbHostManager 422
         19.3  uevent 424
         第20章  Bluetooth和Wi-Fi简析 429
         20.1  Bluetooth 429
         20.1.1  Bluetooth概述 429
         20.1.2  SDK API概述 430
         20.1.3  Bluetooth服务 432
         20.1.4  JNI层 433
         20.2  Wi-Fi 436
         20.2.1  Wi-Fi概述 436
         20.2.2  SDK API概述 436
         20.2.3  JNI和HAL层 439
         20.2.4  WPA_supplicant 440
         第21章  Debuggerd 441
         21.1  预备知识 441
         21.1.1  ptrace调用 441
         21.1.2  waitpid 442
         21.2  debuggerd守护进程 442
         后记 450
      · · · · · ·     (
收起)