基础篇 2
第1章 移动操作系统概论 2
1.1 操作系统的原理与概念 2
1.1.1 隐藏硬件细节 2
1.1.2 资源管理 3
1.1.3 操作系统的历史 3
1.2 操作系统的分类 4
1.2.1 批处理操作系统 5
1.2.2 分时操作系统 5
1.2.3 实时操作系统 6
1.2.4 个人计算机操作系统 6
1.2.5 网络操作系统 6
1.2.6 分布式操作系统 6
1.2.7 嵌入式操作系统 7
1.3 移动操作系统 7
1.3.1 移动设备的特征 7
1.3.2 主要的移动操作系统 8
1.3.3 移动操作系统的应用和发展 9
1.4 Android移动操作系统概述 10
1.4.1 Android历史介绍 10
1.4.2 Android架构 10
1.4.3 Android平台介绍 12
本章练习题 13
第2章 Android开发环境搭建 14
2.1 JDK安装与配置 14
2.2 安装Android Studio 16
2.3 安装Android SDK 18
2.4 创建Android模拟器 21
本章总结 24
本章练习题 24
第3章 第一个Android应用程序 25
3.1 使用Android Studio工具创建项目 25
3.2 Android工程剖析 29
3.2.1 Android工程目录结构 29
3.2.2 R.java文件 30
3.2.3 MainActivity.java文件 31
3.2.4 activity-main.xml布局文件 31
3.2.5 Android Manifest.xml文件 33
3.3 运行工程 34
3.4 学会使用Android开发者社区帮助 34
3.4.1 在线帮助文档 34
3.4.2 Android SDK API文档 34
3.4.3 Android SDK开发指南 36
3.4.4 使用Android SDK案例 36
本章总结 38
本章练习题 38
第4章 调试Android应用程序 39
4.1 使用DDMS帮助调试程序 39
4.1.1 设备列表 40
4.1.2 文件浏览器 40
4.1.3 LogCat 41
4.2 使用Android Studio调试 44
4.3 使用ADB帮助调试程序 47
4.3.1 查询模拟器实例和设备 47
4.3.2 进入shell 48
4.3.3 导入导出文件 48
本章总结 50
本章练习题 50
第5章 Android界面编程 51
5.1 Android界面组成 51
5.1.1 视图 51
5.1.2 视图组 51
5.2 界面构建 52
5.2.1 使用Android Studio界面设计工具 52
5.2.2 实例:标签和按钮 52
5.3 事件处理模型 56
5.3.1 活动作为事件监听器 56
5.3.2 内部类事件监听器 58
5.3.3 匿名内部类事件监听器 59
5.4 屏幕上的事件处理 60
5.4.1 触摸事件 60
5.4.2 实例:屏幕触摸事件 60
5.4.3 键盘事件 61
5.4.4 实例:改变图片的透明度 62
本章总结 64
本章练习题 64
第6章 Android界面布局 65
6.1 Android界面布局设计模式 65
6.1.1 表单布局模式 65
6.1.2 列表布局模式 66
6.1.3 网格布局模式 66
6.2 布局管理 67
6.2.1 帧布局 67
6.2.2 实例:使用帧布局 67
6.2.3 线性布局 69
6.2.4 实例:使用线性布局实现登录界面 69
6.2.5 相对布局 72
6.2.6 实例:使用相对布局实现查询功能界面 72
6.2.7 网格布局 74
6.2.8 实例1:使用网格布局实现计算器界面 74
6.2.9 实例2:布局嵌套实现登录界面 76
6.3 屏幕旋转问题 78
6.3.1 解决方案 78
6.3.2 实例:加载不同布局文件 79
本章总结 81
本章练习题 81
第7章 Android简单控件 82
7.1 按钮 82
7.1.1 Button 82
7.1.2 ImageButton 82
7.1.3 ToggleButton 83
7.1.4 实例:ButtonSample 83
7.2 标签 85
7.3 文本框 86
7.3.1 文本框相关属性 87
7.3.2 实例1:用户登录 87
7.3.3 实例2:文本框输入控制 89
7.4 单选按钮 91
7.4.1 RadioButton 91
7.4.2 RadioGroup 92
7.4.3 实例:使用单选按钮 92
7.5 复选框 94
7.5.1 CheckBox 94
7.5.2 实例:使用复选框 95
7.6 进度栏 97
7.6.1 进度栏相关属性和方法 97
7.6.2 实例1:水平条状进度栏 98
7.6.3 实例2:圆形进度栏 101
7.7 拖动栏 103
7.7.1 SeekBar 103
7.7.2 实例:使用拖动栏 104
本章总结 106
本章练习题 106
第8章 Android高级控件 107
8.1 列表类控件 107
8.1.1 适配器 107
8.1.2 Spinner 107
8.1.3 实例:使用Spinner进行选择 109
8.1.4 ListView 111
8.1.5 实例1:使用ListView实现选择文本 111
8.1.6 实例2:使用ListView实现选择文本十图片 112
8.2 Toast 116
8.2.1 实例1:文本类型Toast 116
8.2.2 实例2:图片类型Toast 117
8.2.3 实例3:文本+图片Toast 118
8.3 对话框 119
8.3.1 实例1:显示文本信息对话框 120
8.3.2 实例2:简单列表项对话框 122
8.3.3 实例3:单选列表对话框 123
8.3.4 实例4:复选列表项对话框 125
8.3.5 实例5:复杂布局对话框 127
8.4 操作栏和菜单 129
8.4.1 操作栏 129
8.4.2 菜单编程 130
8.4.3 实例:文本菜单 130
8.4.4 实例:操作表按钮 132
本章总结 133
本章练习题 133
第9章 活动 134
9.1 活动概述 134
9.1.1 创建活动 134
9.1.2 活动的生命周期 135
9.1.3 实例:Back和Home按钮的区别 137
9.2 多活动之间跳转 139
9.2.1 登录案例介绍 139
9.2.2 启动下一个活动 140
9.2.3 参数传递 141
9.2.4 返回上一个活动 142
9.3 活动任务与返回栈 144
本章总结 145
本章练习题 145
第10章 碎片 146
10.1 界面重用问题 146
10.2 碎片技术 147
10.3 碎片的生命周期 147
10.3.1 三种状态 147
10.3.2 11种方法 147
10.4 使用碎片开发 149
10.4.1 碎片相关类 149
10.4.2 创建碎片 150
10.4.3 静态添加碎片到活动 151
10.4.4 动态添加碎片到活动 152
10.4.5 管理碎片事务 153
10.4.6 碎片与活动之间的通信 154
10.5 案例:比赛项目 154
10.5.1 创建两个碎片 155
10.5.2 创建MainActivity活动 158
10.5.3 单击Master碎片列表项 160
10.5.4 数据访问对象 163
本章总结 165
本章练习题 165
第11章 意图 166
11.1 什么是意图 166
11.1.1 意图与目标组件间的通信 166
11.1.2 意图包含内容 167
11.2 意图类型 167
11.2.1 显式意图 167
11.2.2 隐式意图 168
11.3 匹配组件 169
11.3.1 动作 170
11.3.2 数据 171
11.3.3 类别 172
11.4 实例:Android系统内置意图 173
本章总结 175
本章练习题 175
第12章 数据存储 176
12.1 Android数据存储概述 176
12.2 健康助手应用 176
12.2.1 需求分析 177
12.2.2 原型设计 177
12.2.3 UI设计 177
12.2.4 数据库设计 178
12.3 本地文件 179
12.3.1 沙箱目录设计 179
12.3.2 访问应用程序files目录 180
12.3.3 实例:访问CSV文件 180
12.4 SQLite数据库 183
12.4.1 SQLite数据类型 183
12.4.2 Android平台下管理SQLite数据库 184
12.5 案例:SQLite实现健康助手数据存储 186
12.5.1 SQLiteOpenHelper帮助类 186
12.5.2 数据插入 187
12.5.3 数据删除 189
12.5.4 数据修改 189
12.5.5 数据查询 191
12.6 使用SharedPreferences 193
12.6.1 实例:写入SharedPreferences 193
12.6.2 实例:读取SharedPreferences 195
本章总结 196
本章练习题 196
第13章 使用内容提供者共享数据 197
13.1 内容提供者概述 197
13.2 Content URI 198
13.2.1 Content URI概述 198
13.2.2 内置Content URI 199
13.3 实例:访问联系人信息 200
13.3.1 查询联系人 201
13.3.2 普通权限和运行时权限 204
13.3.3 通过联系人id查询联系人的Email 206
13.3.4 查询联系人的电话 209
13.4 实例:访问通话记录 209
13.5 实例:访问短信记录 215
本章总结 219
本章练习题 219
进阶篇 222
第14章 Android多线程开发 222
14.1 线程概念 222
14.1.1 进程概念 222
14.1.2 线程概念 222
14.2 计时器案例介绍 223
14.3 Java中的线程 224
14.3.1 Thread类实现线程体 224
14.3.2 Runnable接口实现线程体 227
14.3.3 匿名内部类实现线程体 228
14.4 Android中的多线程 230
14.4.1 主线程之外更新UI问题 230
14.4.2 Android异步消息处理机制 231
14.4.3 Handler发送消息方法 232
14.4.4 计时器案例:异步消息机制实现 233
本章总结 235
本章练习题 235
第15章 服务 236
15.1 服务概述 236
15.1.1 创建服务 236
15.1.2 服务的分类 237
15.2 启动类型服务 238
15.2.1 启动服务生命周期 238
15.2.2 实例:启动类型服务 239
15.3 绑定类型服务 240
15.3.1 绑定服务生命周期 240
15.3.2 实例:绑定类型服务 241
15.4 IntentService 244
15.4.1 IntentService优势 244
15.4.2 实例:IntentService与Service比较 244
本章总结 246
本章练习题 246
第16章 广播接收器 247
16.1 广播概述 247
16.2 广播接收器概述 247
16.2.1 编写广播接收器 248
16.2.2 注册广播接收器 248
16.2.3 实例:发送广播 250
16.3 系统广播 251
16.3.1 系统广播动作 252
16.3.2 实例:Downloader 252
16.4 本地广播 255
16.4.1 本地广播API 255
16.4.2 实例:发送本地广播 255
16.5 通知 257
16.5.1 实例:普通通知 257
16.5.2 其他形式的Notification 259
本章总结 260
本章练习题 260
第17章 多媒体开发 261
17.1 多媒体文件介绍 261
17.1.1 音频多媒体文件介绍 261
17.1.2 视频多媒体文件介绍 262
17.2 Android音频/视频播放API 262
17.2.1 核心API—— MediaPlayer类 263
17.2.2 播放状态 263
17.3 实例:音频播放 265
17.3.1 资源音频文件播放 265
17.3.2 本地音频文件播放 269
17.4 Android音频/视频录制API 271
17.5 实例:音频录制 272
17.6 视频播放 275
17.6.1 VideoView控件 275
17.6.2 实例:VideoView播放视频 275
本章总结 277
本章练习题 277
第18章 网络通信技术 278
18.1 网络通信技术介绍 278
18.1.1 Socket通信 278
18.1.2 HTTP协议 278
18.1.3 HTTPS协议 279
18.1.4 Web服务 279
18.2 案例:MyNotes 279
18.3 发送网络请求 280
18.3.1 使用java.net.URL 281
18.3.2 使用HttpURLConnection发送GET请求 284
18.3.3 使用HttpURLConnection发送POST请求 285
18.3.4 实例:Downloader 286
18.4 数据交换格式 288
18.4.1 XML文档结构 290
18.4.2 解析XML文档 291
18.4.3 实例:DOM解析XML文档 292
18.4.4 JSON文档结构 296
18.4.5 JSON数据编码和解码 298
18.4.6 实例:解码JOSN数据 299
本章总结 301
本章练习题 302
第19章 百度地图与定位服务 303
19.1 使用百度地图 303
19.1.1 申请API Key 303
19.1.2 获得Android签名证书中的SHA1值 303
19.1.3 搭建和配置环境 306
19.1.4 实例:显示地图 309
19.1.5 实例:设置地图状态 312
19.1.6 实例:地图覆盖物 313
19.2 定位服务 314
19.2.1 定位服务授权 314
19.2.2 位置信息提供者 316
19.2.3 管理定位服务 317
19.2.4 实例:MyLocation 318
19.2.5 测试定位服务 321
19.3 定位服务与地图结合实例:WhereAMI 324
本章总结 326
本章练习题 326
第20章 Android 2D图形与动画技术 327
20.1 Android 2D绘图技术 327
20.1.1 画布和画笔 327
20.1.2 实例:绘制点和线 328
20.1.3 实例:绘制矩形 329
20.1.4 实例:绘制弧线 331
20.1.5 实例:绘制位图 332
20.2 位图变换 333
20.2.1 矩阵 333
20.2.2 实例:位图变换 334
20.3 调用Android照相机获取图片 336
20.3.1 调用Android照相机 336
20.3.2 实例:调用Android照相机 336
20.4 Android动画技术 338
20.4.1 渐变动画 338
20.4.2 实例:渐变动画 339
20.4.3 动画插值器 342
20.4.4 使用动画集 343
20.4.5 帧动画 344
本章总结 346
本章练习题 346
第21章 手机功能开发 347
21.1 电话应用开发 347
21.1.1 拨打电话功能 347
21.1.2 实例:拨打电话 348
21.1.3 呼入电话状态 350
21.1.4 实例:电话黑名单 351
21.2 短信和彩信应用开发 354
21.2.1 发送短信功能 354
21.2.2 发送彩信功能 354
本章总结 356
本章练习题 356
实战篇 358
第22章 分层架构设计与重构健康助手应用 358
22.1 分层架构设计 358
22.1.1 低耦合企业级系统架构设计 358
22.1.2 Android平台分层架构设计 359
22.2 健康助手应用架构设计 359
22.3 重构健康助手数据持久层 360
22.3.1 DAO设计模式 361
22.3.2 工厂设计模式 365
22.4 表示层开发 367
22.4.1 Health列表界面 367
22.4.2 Health添加界面 371
22.4.3 Health修改界面 374
本章总结 375
本章练习题 376
第23章 内容提供者重构健康助手应用 377
23.1 分层架构与内容提供者 377
23.2 自定义内容提供者访问数据库 377
23.2.1 编写内容提供者 377
23.2.2 注册内容提供者 384
23.3 重构健康助手数据持久层 385
本章总结 387
本章练习题 387
附录A 课程设计参考——Android播放器应用开发 388
A.1 应用分析与设计 388
A.1.1 应用概述 388
A.1.2 需求分析 388
A.1.3 原型设计 389
A.1.4 界面设计 389
A.1.5 架构设计 390
A.2 任务1:创建工程 391
A.3 任务2:音频列表功能 391
A.3.1 任务2.1:界面布局 391
A.3.2 任务2.2: Audio ListActivity 392
A.3.3 任务2.3: AudioCursorAdapter 393
A.4 任务3:音频控制功能 394
A.4.1 任务3.1:界面布局 395
A.4.2 任务3.2:初始化AudioPlayerActivity活动 397
A.4.3 任务3.3:初始化AudioService服务 399
A.4.4 任务3.4:播放控制 400
A.4.5 任务3.5:进度控制 404
A.5 任务4:后台播放回到前台功能 409
A.6 任务5:更新专辑图片功能 410
附录B 把应用发布到Google play应用商店 412
B.1 谷歌Android应用商店Google play 412
B.2 Android设备测试 413
B.3 还有“最后一公里” 414
B.3.1 添加图标 414
B.3.2 生成数字签名文件 414
B.3.3 发布打包 415
B.4 发布产品 417
B.4.1 上传APK 417
B.4.2 填写商品详细信息 418
B.4.3 定价和发布范围 419
附录C 练习题参考答案 423