第1章 Android操作系统概述 1
1.1 Android历史介绍 1
1.2 Android架构 1
1.3 Android平台介绍 2
1.4现有智能手机操作系统比较 4
第2章 Android开发环境搭建 5
2.1 Eclipse和ADT插件 5
2.1.1 Eclipse安装 5
2.1.2 ADT插件 6
2.2 Android SDK 8
2.2.1 Android SDK的获得 8
2.2.2 Android SDK版本说明 10
2.2.3 ADT配置 10
2.3 Android开发模拟器 11
2.3.1创建模拟器 11
2.3.2启动模拟器 13
2.3.3键盘映射与模拟器控制 13
2.3.4横屏与竖屏切换 14
第3章 第一个Android程序 15
3.1 HelloAndroid 15
3.1.1在Eclipse中创建项目 15
3.1.2编写程序项目代码 17
3.1.3运行HelloAndroid 18
3.1.4 Android工程目录 19
3.1.5 AndroidManifest.xml文件 21
3.2 Android中的组件介绍 22
3.3使用Android SDK帮助 23
3.3.1 Android SDK API文档 23
3.3.2 Android SDK开发指南 24
3.3.3 Android SDK samples 24
3.4使用DDMS帮助调试程序 26
3.4.1启动DDMS 26
3.4.2 Device 28
3.4.3 Emulator Control 29
3.4.4 File Explorer 30
3.4.5 LogCat 31
3.5使用ADB帮助调试程序 33
3.5.1查询模拟器实例和设备 34
3.5.2进入shell 34
3.5.3导入导出文件 35
3.6应用程序的打包、安装和卸载 37
3.6.1应用程序打包 37
3.6.2应用程序安装 40
3.6.3应用程序卸载 40
本章小结 42
第4章 UI基础知识 43
4.1 Android UI组件概述 43
4.1.1 View 43
4.1.2 ViewGroup 44
4.1.3布局管理器 44
4.2 UI设计工具 44
4.2.1 DroidDraw工具 44
4.2.2 ADT插件UI设计工具 46
4.3事件处理模型 47
4.3.1接口实现事件处理模型 47
4.3.2内部类事件处理模型 49
4.3.3匿名内部类事件处理模型 51
4.4 Activity中的常用事件 53
4.4.1触摸事件 53
4.4.2键盘事件 55
4.5菜单 57
4.5.1文本菜单 57
4.5.2图片文本菜单 59
本章小结 60
第5章 UI基础控件 61
5.1按钮 61
5.1.1 Button 62
5.1.2 ImageButton 63
5.1.3 ToggleButton 64
5.2 TextView 64
5.3 EditText 65
5.4 RadioButton和RadioGroup 66
5.4.1 RadioButton 66
5.4.2 RadioGroup 67
5.5 CheckBox 68
5.6 ImageView 70
5.7 Progress Bar 70
5.7.1条状进度条 71
5.7.2圆形进度条 73
5.7.3对话框进度条 74
5.7.4标题栏中进度条 75
5.8 SeekBar 76
5.9 RatingBar 78
本章小结 82
第6章 UI高级控件 83
6.1列表类控件 83
6.1.1 Adapter概念 83
6.1.2 AutoComplete 84
6.1.3 Spinner 87
6.1.4 ListView 90
6.1.5 GridView 96
6.1.6 Gallery 99
6.2 Toast 103
6.2.1文本类型 103
6.2.2图片类型 104
6.2.3复合类型 105
6.2.4自定义显示位置Toast 106
6.3对话框 107
6.3.1文本信息对话框 107
6.3.2简单列表项对话框 109
6.3.3单选项列表项对话框 111
6.3.4复选框列表项对话框 113
6.3.5复杂布局列表项对话框 115
6.4 Android国际化和本地化 118
本章小结 121
第7章 UI布局 122
7.1 FrameLayout 122
7.1.1 TextSwitcher 124
7.1.2 ImageSwitcher 126
7.1.3 DatePicker 129
7.1.4 TimePicker 131
7.1.5 ScrollView 133
7.1.6选项卡 134
7.2 LinearLayout 138
7.3 RelativeLayout 139
7.4 AbsoluteLayout 141
7.5 TableLayout 143
7.6布局嵌套 146
7.7屏幕旋转 152
本章小结 154
第8章 多线程 155
8.1多线程案例——计时器 155
8.2线程概念 156
8.2.1进程概念 156
8.2.2线程概念 156
8.3 Java中的线程 157
8.3.1 Java中的实现线程体方式1 157
8.3.2 Java中的实现线程体方式2 160
8.3.3 Java中的实现线程体方式3 162
8.4 Android中的线程 163
8.4.1 Android线程应用中的问题与分析 164
8.4.2 Message和MessageQueue 169
8.4.3 Handler 169
8.4.4 Looper和HandlerThread 172
本章小结 178
第9章 Activity和Intent 179
9.1 Activity 179
9.1.1创建Activity 179
9.1.2 Activity生命周期 180
9.2 Intent 183
9.2.1显式Intent 184
9.2.2隐式Intent 186
9.2.3匹配组件 186
9.3多Activity之间跳转 188
9.3.1多个Activity之间数据传递 189
9.3.2跳转与返回 192
9.3.3任务与标志 196
9.4 Android系统内置Intent 199
本章小结 201
第10章 数据存储 203
10.1健康助手案例 203
10.2 Android数据存储概述 205
10.3本地文件 205
10.3.1访问SD卡 207
10.3.2访问应用文件目录 212
10.4 SQLite数据库 216
10.4.1 SQLite数据类型 216
10.4.2 Android平台下管理SQLite数据库 216
10.5编写访问SQLite数据库组件 220
10.5.1 DBHelper类 20
10.5.2数据插入 222
10.5.3数据删除 224
10.5.4数据修改 224
10.5.5数据查询 227
10.6案例重构 229
10.6.1系统架构设计 229
10.6.2重构数据访问层 230
10.7为案例增加参数设置功能 238
10.7.1 Shared Preferences 240
10.7.2 Preferences控件介绍 243
10.7.3使用Preferences控件的案例 248
本章小结 250
第11章 Content Provider 251
11.1 Content Provider概述 251
11.2 Content URI 252
11.2.1 Content URI含义 252
11.2.2内置的Content URI 253
11.3通过Content Provider访问联系人 253
11.3.1查询联系人 255
11.3.2通过联系人ID查询联系人的Email 258
11.3.3按照过滤条件查询Email 259
11.3.4查询联系人的电话 261
11.4通过Content Provider访问通话记录 262
11.4.1查询通话记录 262
11.4.2按照过滤条件查询通话记录 264
11.5通过Content Provider访问短信 266
11.6自定义Content Provider实现数据访问 269
11.6.1编写Content Provider 269
11.6.2在不同的应用中调用Content Provider 277
11.6.3重构Content Provider调用 278
本章小结 281
第12章 多媒体 282
12.1多媒体文件介绍 282
12.1.1音频多媒体文件介绍 282
12.1.2视频多媒体文件介绍 283
12.2 Android音频播放 284
12.2.1 Android音频/视频播放状态 284
12.2.2音频播放案例介绍 286
12.2.3资源音频文件播放 287
12.2.4本地音频文件播放 291
12.2.5网络音频文件播放 292
12.2.6完善案例其他功能 293
12.3 Android音频录制 303
12.3.1 Android音频/视频录制状态 303
12.3.2音频录制案例介绍 303
12.3.3音频录制案例实现 305
12.4 Android视频播放 309
12.4.1视频播放案例 309
12.4.2采用MediaPlayer类播放视频 310
12.4.3使用VideoView控件重构案例 315
本章小结 316
第13章 Service 317
13.1 Service概述 317
13.1.1本地Service生命周期 317
13.1.2远程Service生命周期 318
13.2本地Service 319
13.2.1本地Service案例 319
13.2.2编写AudioService 320
13.2.3调用Service 322
13.2.4重构案例 323
13.3远程Service 325
13.3.1远程Service调用原理 325
13.3.2远程Service案例 326
13.3.3设计AIDL文件 327
13.3.4编写AudioService 331
13.3.5调用远程Service 336
13.3.6组件间参数传递 343
本章小结 347
第14章 Broadcast Receiver和Notification 348
14.1 Broadcast Receiver 348
14.1.1音频播放案例 349
14.1.2编写音频播放Broadcast Receiver 350
14.1.3注册音频播放Broadcast Receiver 351
14.1.4接收系统的广播 353
14.1.5 MP3下载服务案例 353
14.2 Notification 358
14.2.1完善MP3下载服务案例 358
14.2.2完善音频播放案例 363
14.2.3其他形式的Notification 369
本章小结 371
第15章 云端应用 372
15.1典型云端应用——城市天气信息服务 372
15.2网络通信技术与实现 374
15.2.1网络通信技术介绍 376
15.2.2 Java URL类实现方式 377
15.2.3 Apache HttpClient实现方式 378
15.3数据交换格式 380
15.3.1纯文本格式 381
15.3.2 XML格式 381
15.3.3 JSON格式 385
15.4自定义服务器端程序实例 387
15.4.1 Java Servlet概述 387
15.4.2编写城市信息服务的Servlet 388
15.4.3编写城市天气服务的Servlet 393
15.4.4再次探讨HttpClient的POST请求 395
15.5云端应用案例优化 400
本章小结 404
第16章 Google Map和定位服务 405
16.1 MyMap服务系统案例 405
16.2 Android Google Map 406
16.2.1申请Google Map Android API Key 407
16.2.2编写Android Google Map骨架程序 409
16.2.3控制地图 412
16.2.4地图的显示模式 416
16.2.5地图的图层 419
16.2.6查询与定位 422
16.3 Android定位服务 430
16.3.1开启定位服务 431
16.3.2模拟测试 433
16.3.3 GPS与Google Map结合 435
16.4案例重构 437
16.4.1重构“定位查询”方法 438
16.4.2重构“查询周围”方法 440
本章小结 443
第17章 Android通信应用 444
17.1电话应用开发 444
17.1.1拨打电话功能 444
17.1.2呼入电话状态 446
17.2短信和彩信应用开发 450
17.2.1 Android内置的发送短信/彩信功能 450
17.2.2自己编写发送文本内容的短信 452
17.2.3自己编写接收文本内容的短信 458
17.2.4自己编写发送二进制内容的短信 459
17.2.5自己编写接收二进制内容的短信 461
17.3蓝牙通信 463
17.3.1 Android 2 BluetoothChat案例 464
17.3.2 Android 2蓝牙API介绍 464
17.3.3 TCP Socket与蓝牙Socket的区别 465
17.3.4 BluetoothChat中的类 466
17.3.5初始化本地蓝牙设备 467
17.3.6查找蓝牙设备 471
17.3.7管理连接 476
17.3.8互相之间的通信 480
17.4 WiFi通信 484
17.4.1管理WiFi 484
17.4.2扫描热点 487
17.4.3 Socket通信 489
本章小结 491
参考文献 492