第一篇 基础技术篇 2
第1章 Android技术概述 2
1.1智能手机系统介绍 2
1.1.1何谓智能手机 2
1.1.2看当前主流的智能手机系统 2
1.1.3 Android 5.0的突出变化 3
1.2搭建Android应用开发环境 4
1.2.1安装Android SDK的系统要求 4
1.2.2安装JDK 5
1.2.3获取并安装Eclipse和Android SDK 8
1.2.4安装ADT 10
1.2.5设定Android SDK Home 12
1.2.6验证开发环境 13
1.2.7创建Android虚拟设备(AVD) 13
1.2.8启动AVD模拟器 16
1.2.9解决搭建环境过程中的常见问题 18
第2章 Android技术核心框架分析 21
2.1简析Android安装文件 21
2.1.1 Android SDK目录结构 21
2.1.2 android.jar及内部结构 22
2.1.3阅读SDK帮助文档 22
2.1.4常用的SDK工具 23
2.2演示官方实例 24
2.3剖析Android系统架构 28
2.3.1 Android体系结构介绍 28
2.3.2 Android应用工程文件组成 30
2.4简述五大组件 32
2.4.1用Activity来表现界面 32
2.4.2用Intent和IntentFilter实现切换 33
2.4.3 Service为你服务 33
2.4.4用BroadcastIntentReceiver发送广播 34
2.4.5用ContentProvider存储数据 34
2.5进程和线程 34
2.5.1先看进程 34
2.5.2再看线程 35
2.5.3应用程序的生命周期 35
2.6第一段Android程序 37
第3章 获取并分析Android源码 42
3.1获取Android源码 42
3.1.1在Linux系统中获取Android源码 42
3.1.2在Windows系统中获取Android源码 43
3.2分析Android源码结构 45
3.3编译Android源码 46
3.3.1搭建编译环境 47
3.3.2开始编译 48
3.3.3在模拟器中运行 49
3.3.4常见的错误分析 49
3.3.5实践演练——演示两种编译Android程序的方法 50
第二篇 系统分析篇 56
第4章 Android多媒体框架 56
4.1 Android多媒体系统介绍 56
4.2 OpenMax框架详解 57
4.2.1分析OpenMax框架构成 58
4.2.2实现OpenMax IL层接口 62
4.3分析OpenCore框架 68
4.3.1 OpenCore层次结构 69
4.3.2 OpenCore代码结构 70
4.3.3 OpenCore编译结构 71
4.3.4操作系统兼容库 74
4.3.5实现OpenCore中的OpenMax部分 75
4.3.6 OpenCore扩展详解 85
4.4 Stagefright框架详解 91
4.4.1 Stagefright代码结构 91
4.4.2 Stagefright实现OpenMax接口 91
4.4.3分析Video Buffer传输流程 94
第5章 音频系统框架 99
5.1音频系统基础 99
5.2分析音频系统的层次 100
5.2.1层次说明 100
5.2.2 Media库中的Audio框架 101
5.2.3本地代码 103
5.2.4分析JNI代码 105
5.2.5 Java层代码简介 106
5.3 Audio系统的硬件抽象层 106
5.3.1 Audio硬件抽象层基础 107
5.3.2分析AudioFlinger中的Audio硬件抽象层的实现 108
5.3.3真正实现Audio硬件抽象层 113
5.4分析编码/解码过程 113
5.4.1 AMR编码 114
5.4.2 AMR解码 117
5.4.3解码MP3 120
第6章 视频系统框架 122
6.1视频系统结构 122
6.2分析硬件抽象层 123
6.2.1 Overlay系统硬件抽象层的接口 123
6.2.2实现Overlay系统的硬件抽象层 125
6.2.3实现接口 126
6.3实现Overlay硬件抽象层 127
第7章 照相机系统 129
7.1 Camera系统的结构 129
7.2 Camera驱动层实现详解 131
7.2.1 V4L2驱动程序 131
7.2.2硬件抽象层 137
7.3实现Camera系统的硬件抽象层 141
7.3.1 Java程序部分 141
7.3.2 Camera的Java本地调用部分 142
7.3.3 Camera的本地库libui.so 142
7.3.4 Camera服务libcameraservice.so 143
第8章 Alarm时钟系统 147
8.1 Alarm系统基础 147
8.2分析RTC驱动程序 148
8.3 Alarm驱动程序详解 149
8.3.1分析文件android_alarm.h 149
8.3.2分析文件alarm.c 151
8.3.3分析文件alarm-dev.c 160
8.4 JNI层详解 167
8.5 Java层详解 168
8.5.1分析AlarmManagerService类 168
8.5.2分析AlarmManager类 176
第9章 振动器系统 178
9.1振动器系统结构 178
9.2硬件抽象层实现详解 179
9.3分析Java层部分 181
9.4实现硬件抽象层 184
第三篇 典型应用篇 186
第10章 二维图像渲染 186
10.1 SurfaceFlinger渲染管理器 186
10.1.1 SurfaceFlinger基础 186
10.1.2 Surface和Canvas 188
10.2 Surface渲染详解 189
10.2.1渲染类Surface详解 189
10.2.2分析Layer和LayerBuffer 191
10.3 Skia渲染引擎详解 196
10.3.1 Skia基础 196
10.3.2 Android中的Skia 197
10.3.3使用Skia绘图 205
10.3.4 Skia的其他功能 206
第11章 绘制二维图像 208
11.1绘图界面布局详解 208
11.1.1 View视图组件 208
11.1.2 ViewGroup容器 208
11.1.3 Layout规划布局 209
11.2 Android绘图基础 212
11.2.1使用Canvas画布 212
11.2.2使用Paint类 214
11.2.3位图操作类Bitmap 217
11.3使用其他的绘图类 222
11.3.1使用设置文本颜色类Color 223
11.3.2使用矩形类Rect和RectF 224
11.3.3非矢量图形拉伸类NinePatch 228
11.3.4使用变换处理类Matrix 228
11.3.5使用BitmapFactory类 231
11.3.6使用Region类 233
11.3.7使用类Typeface 234
第12章 二维动画应用 235
12.1使用Drawable实现动画效果 235
12.1.1 Drawable基础 235
12.1.2使用Drawable实现动画效果 236
12.2 Tween Animation动画详解 237
12.2.1 Tween动画基础 237
12.2.2 Tween动画类详解 240
12.2.3 Tween应用实战 243
12.3实现Frame Animation动画效果 246
12.3.1 Frame动画基础 246
12.3.2使用Frame动画 246
12.4 Property Animation动画 248
12.4.1 Property Animation(属性)动画基础 248
12.4.2使用Property Animation 250
12.5实现动画效果的其他方法 253
12.5.1播放GIF动画 254
12.5.2实现EditText动画特效 256
第13章 渲染二维图像 257
13.1使用渲染类Shader 257
13.2使用SurfaceFlinger渲染器 261
13.2.1 SurfaceFlinger基础 261
13.2.2渲染Android手机屏幕中的图形 263
13.3使用Skia渲染引擎 265
13.3.1 Skia基础 265
13.3.2使用Skia绘图 268
13.4通过Skia绘制文字 275
第14章 开发音频应用程序 277
14.1音频应用接口类介绍 277
14.2 AudioManager类 278
14.2.1 AudioManager基础 278
14.2.2 AudioManager基本应用——设置短信提示铃声 280
14.2.3 AudioManager基本应用——调节手机音量的大小 284
14.3录音处理 287
14.3.1使用MediaRecorder接口录制音频 287
14.3.2使用AudioRecord接口录制音频 292
14.4播放音频 297
14.4.1使用AudioTrack播放音频 297
14.4.2使用MediaPlayer播放音频 300
14.4.3使用SoundPool播放音频 311
14.4.4使用Ringtone播放铃声 316
14.4.5使用JetPlayer播放音频 318
14.4.6使用AudioEffect处理音效 319
14.5语音识别技术 321
14.5.1 Text-To-Speech技术 322
14.5.2谷歌的Voice Recognition技术 324
14.6实现振动效果 326
14.6.1 Vibrator类基础 326
14.6.2使用Vibrator实现振动效果 327
14.7设置闹钟 332
14.7.1 AlarmManage基础 332
14.7.2开发一个闹钟程序 333
第15章 开发视频应用程序 338
15.1使用MediaPlayer播放视频 338
15.2使用VideoView播放视频 344
15.2.1 VideoView基础 344
15.2.2使用VideoView播放手机中的影片 346
15.2.3使用VideoView播放手机中的MP4 348
15.2.4开发一个网络视频播放器 350
15.3使用Camera拍照 356
15.3.1 Camera基础 356
15.3.2总结Camera拍照的流程 360
15.3.3使用Camera预览并拍照 362
15.3.4使用Camera API方式拍照 366
第四篇 三维技术篇 372
第16章 OpenGL ES系统初步 372
16.1 OpenGL ES介绍 372
16.1.1 OpenGL ES 3.0介绍 372
16.1.2 Android全面支持OpenGL ES 3.0 373
16.2 OpenGL ES 3.0系统初步分析 373
16.3分析下层的包裹库 374
16.3.1 libGLESvl_CM.so包裹库详解 374
16.3.2 libGLESv2包裹库详解 379
16.3.3 libEGL包裹库详解 381
16.4加载并解析OpenGL库 383
16.4.1开始加载并解析 383
16.4.2库加载器Loader详解 384
16.5 EGL实现详解 388
16.5.1分析EGL的数据结构 388
16.5.2分析EGL的API 392
第17章 OpenGL ES基本应用 401
17.1 OpenGL ES的基本应用 401
17.1.1使用点线法绘制三角形 401
17.1.2使用索引法绘制三角形 405
17.1.3使用顶点法绘制三角形 409
17.2实现投影效果 411
17.2.1正交投影 411
17.2.2透视投影 411
17.2.3正交投影和透视投影的区别 412
17.2.4实现投影效果 412
17.3实现光照效果 415
17.3.1光源的类型 416
17.3.2光源的颜色 416
17.3.3开启/关闭光照 417
第18章 纹理映射 422
18.1纹理映射基础 422
18.1.1纹理贴图和纹理拉伸 422
18.1.2 Texture Filter纹理过滤 423
18.2实现三角形纹理贴图效果 424
18.3实现地月模型效果 427
18.4实现纹理拉伸效果 434
第19章 绘制不同的三维形状 438
19.1绘制一个圆柱体 438
19.2绘制一个圆环 444
19.3绘制一个抛物面效果 448
19.4绘制一个螺旋面效果 450
第20章 坐标变换和混合 454
20.1实现坐标变换 454
20.1.1坐标变换基础 454
20.1.2实现缩放变换 454
20.1.3实现平移变换 458
20.2使用Alpha混合技术 460
20.2.1基本知识 460
20.2.2实现简单混合 461
20.2.3实现光晕和云层效果 465
20.2.4实现滤光器效果 469
第21章 OpenGL ES进阶 474
21.1实现摄像机和雾特效功能 474
21.1.1摄像机基础 474
21.1.2雾特效基础 475
21.1.3实现雾特效和摄像机效果 475
21.2粒子系统 484
21.2.1粒子系统基础 484
21.2.2实现粒子系统效果 484
21.3镜像技术 487
21.4实现旗帜飘扬效果 491
第五篇 综合实战篇 494
第22章 开发一个屏保系统 494
22.1屏幕保护程序介绍 494
22.1.1屏幕保护程序的作用 494
22.1.2手机中的屏幕保护程序 494
22.2开发屏保程序的原理 495
22.3开发一个屏保程序 496
22.3.1准备素材图片 496
22.3.2编写布局文件 496
22.3.3编写主程序文件 497
第23章 开发一个音乐播放器 507
23.1项目介绍 507
23.1.1项目背景介绍 507
23.1.2项目的目的 508
23.2系统需求分析 508
23.2.1构成模块 508
23.2.2系统流程 512
23.2.3功能结构图 513
23.2.4系统功能说明 514
23.2.5系统需求 514
23.3数据库设计 515
23.3.1字段设计 515
23.3.2 E-R图设计 515
23.3.3数据库连接 515
23.3.4创建数据库 516
23.3.5操作数据库 517
23.3.6数据显示 518
23.4具体编码 518
23.4.1设置服务信息 518
23.4.2播放器主界面 519
23.4.3播放列表功能 529
23.4.4菜单功能模块 531
23.4.5播放设置界面 533
23.4.6设置显示歌词 535
23.4.7文件浏览器模块 536
23.4.8数据存储 539
第24章 开发一个闹钟系统 541
24.1项目介绍 541
24.1.1系统需求分析 541
24.1.2构成模块 541
24.2系统主界面 542
24.2.1布局文件 542
24.2.2程序文件 543
24.3闹钟列表模块 552
24.3.1设置主界面 552
24.3.2设置闹钟界面 557
24.3.3闹钟提醒模块 564
24.3.4重复设置 569
24.3.5闹钟数据操作 570
24.4选择铃声音乐 573