第一部分 基础知识 1
第1章 Android开发简介 1
1.1 Android介绍 2
1.2 Android系统构架 2
1.3 Android应用程序框架 5
1.4 本章小结 7
第2章 Android开发环境的搭建 8
2.1 获取Android源码 9
2.1.1 在Linux系统中获取Android源码 9
2.1.2 在Windows平台获取Android源码 10
2.1.3 编译源码 12
2.2 Android Studio应用开发 14
2.2.1 搭建Android Studio应用开发环境 15
2.2.2 创建第一个Android项目:Hello World 18
2.2.3 启动模拟器 19
2.2.4 运行到模拟器 21
2.2.5 下载到真机 22
2.2.6 详解项目中的资源 22
2.2.7 详解build.gradle文件 25
2.2.8 导入外部项目和Eclipse开发的Android项目 29
2.2.9 添加外部库 31
2.2.10 应用程序的调试 32
2.2.11 项目实战:下载Android的各个版本 34
2.3 本章小结 35
第3章 Android界面设计 36
3.1 用户界面基础 37
3.2 Android的Activity 38
3.2.1 Activity的介绍 38
3.2.2 Activity的生命周期 40
3.2.3 创建一个Activity 42
3.2.4 创建和加载布局 43
3.2.5 销毁一个Activity 46
3.2.6 使用Intent在Activity之间穿梭 46
3.2.7 Intent调用常见系统组件 51
3.3 常用控件的使用方法 53
3.3.1 TextView和EditText 53
3.3.2 Button、ToggleButton和ImageView 54
3.3.3 Spinner 56
3.3.4 ListView 58
3.3.5 AlertDialog 64
3.3.6 ProgressBar 65
3.4 Android布局 67
3.4.1 线性布局 69
3.4.2 相对布局 71
3.4.3 表格布局 73
3.4.4 百分比布局 77
3.4.5 嵌套布局实现计算器界面 79
3.5 样式和主题 85
3.5.1 定义样式 86
3.5.2 使用样式 87
3.5.3 主题 87
3.6 新控件RecyclerView、CardView和Palette的使用 88
3.6.1 新控件的使用 90
3.6.2 实现纵向滚动和横向滚动 95
3.6.3 RecyclerView的点击事件 96
3.7 Android新控件 97
3.8 综合项目实战:WebView实现监控界面 99
3.9 本章小结 102
第4章 创建Android应用程序 103
4.1 概述 104
4.2 事件处理机制 105
4.2.1 基于监听器的事件处理 106
4.2.2 基于回调的事件处理 107
4.2.3 事件响应的实现 107
4.2.4 项目实战:获取屏幕触点坐标 107
4.3 Android多线程 110
4.3.1 线程的基本用法 110
4.3.2 在子线程更新UI 111
4.3.3 Android线程池 114
4.3.4 Android四种线程池实例 115
4.4 Android广播组件 119
4.4.1 动态注册广播 120
4.4.2 静态注册广播 122
4.4.3 自定义本地广播 123
4.5 后台服务(Service) 125
4.5.1 定义一个服务 125
4.5.2 启动和停止服务 128
4.5.3 Service和Activity通信 130
4.6 Android实现多任务 132
4.6.1 多任务实现原理 133
4.6.2 用Handler实现多任务 134
4.6.3 项目实战:Handler实现模拟下载 135
4.6.4 AsyncTask实现多任务 137
4.6.5 项目实战:AsyncTask实现计时 138
4.7 本章小结 139
第5章 Android中数据的存储和访问 140
5.1 简介 141
5.2 使用共同偏好的存取数据 141
5.2.1 存取共享偏好 141
5.2.2 Preference框架 145
5.3 文件读取和保存 149
5.3.1 内部存储 149
5.3.2 扩展存储 150
5.4 存取结构化数据 150
5.4.1 SQLite简介 151
5.4.2 创建SQLite数据库 152
5.4.3 操作数据库 153
5.5 使用LitePal操作数据库 156
5.5.1 LitePal简介 156
5.5.2 配置LitePal 156
5.5.3 创建和升级数据库 158
5.5.4 SQLite命令调试 162
5.5.5 数据库操作 163
5.6 网络存储 168
5.7 本章小结 169
第6章 ContentProvider 170
6.1 查询记录 171
6.2 修改记录 172
6.3 添加记录 172
6.4 删除记录 173
6.5 创建Content Provider 173
6.6 本章小结 177
第二部分 物联网应用 178
第7章 移动智能终端访问网络摄像机 178
7.1 简介 179
7.2 网络摄像机 179
7.3 系统实现 180
7.3.1 介绍 181
7.3.2 网络摄像机参数设置 182
7.3.3 智能手机端视频监控软件 183
7.4 本章小结 192
第8章 物联网语音识别开发 193
8.1 语音识别技术概述 194
8.2 TTS语音识别技术 194
8.2.1 TTS基础 194
8.2.2 TTS开发流程 196
8.2.3 项目实战:TTS文字识别实例 197
8.3 Voice Recognition语言识别 201
8.3.1 Voice Recognition技术基础 201
8.3.2 项目实战:Voice Recognition语音识别 203
8.4 本章小结 206
第9章 在物联网中媒体动画的实现 207
9.1 Android多媒体系统架构基础 208
9.2 Graphics类详解 208
9.2.1 Graphics类基础 209
9.2.2 Android图形绘制类 209
9.2.3 绘制基本图形 210
9.3 二维动画 212
9.3.1 类Drawable 213
9.3.2 实现Tween动画效果 214
9.3.3 Tween动画的四种动画效果 215
9.3.4 实现Frame动画效果 219
9.4 项目实战:物联网环境控制动画 221
9.5 OpenGL ES详解 224
9.5.1 OpenGL ES基础 224
9.5.2 Android中的OpenGL ES 226
9.5.3 Open GL的基本操作 226
9.5.4 项目实战:利用OpenGL实现旋转的立方体 227
9.6 音频实现 232
9.6.1 音频接口类 232
9.6.2 AudioManager控制铃声 232
9.6.3 录音详解 233
9.6.4 项目实战:使用MediaPlay播放音乐 235
9.7 二维码的识别 238
9.7.1 二维码介绍 238
9.7.2 项目实战:Android实现二维码识别 241
9.8 本章小结 247
第10章 Android网络开发 248
10.1 Android Socket网络传输 249
10.1.1 什么是Socket 249
10.1.2 Socket的分类 249
10.1.3 Socket基本实现原理 249
10.1.4 Android实现Socket简单通信 250
10.1.5 Android客户端和PC服务器端通信 253
10.2 Android HTTP网络传输 258
10.2.1 HttpURLConnection接口 258
10.2.2 项目实战:HttpURLConnection获取信息 260
10.2.3 使用OkHttp 263
10.2.4 项目实战:OkHttp获取信息 265
10.3 Android应用程序的权限 267
10.3.1 Android权限机制详解 267
10.3.2 在程序运行时申请权限 270
10.4 解析XML格式数据 274
10.4.1 Pull解析方式 274
10.4.2 SAX解析方式 276
10.5 解析JSON格式数据 279
10.5.1 使用JSONObject 280
10.5.2 使用GSON 281
10.6 本章小结 284
第11章 Android无线通信 285
11.1 Android蓝牙传输数据 286
11.1.1 蓝牙介绍 286
11.1.2 蓝牙体系结构 287
11.1.3 蓝牙软件的实现 289
11.1.4 Android的蓝牙接口类 292
11.1.5 Android蓝牙开发步骤 295
11.1.6 项目实战:查找蓝牙设备 300
11.1.7 项目实战:Android手机蓝牙控制智能小车 308
11.2 Android系统中的NFC 321
11.2.1 近场通信技术基础 322
11.2.2 在Android系统中使用NFC 322
11.2.3 项目实战:在Android中使用NFC读取MifareClassic卡 326
11.3 本章小结 331
第12章 Android访问智能电表或智能插座 332
12.1 简介 333
12.1.1 RS-485接口智能插座 335
12.1.2 无线智能插座 339
12.1.3 智能电表 340
12.2 使用智能手机访问智能电表或智能插座 344
12.2.1 使用智能手机访问智能电表或智能插座的方案 344
12.2.2 使用智能手机访问Wi-Fi型智能插座或智能电表的方案 345
12.3 使用Android访问智能电表或智能插座 346
12.3.1 智能手机和Pad之间的数据通信 347
12.3.2 蓝牙通信实现 349
12.3.3 访问智能电表或智能插座的命令格式 354
12.4 本章小结 354
第三部分 综合实战 355
第13章 UI新体验——Material Design 355
13.1 什么是Material Design 356
13.2 Design Support库的使用 356
13.3 DrawerLayout和Navigation View 357
13.4 Material Design开源项目 363
13.5 本章小结 366
第14章 综合项目:Cool Weather 367
14.1 项目分析 368
14.2 创建数据库和表 369
14.3 遍历全国省、市、县数据 371
14.4 设计天气信息界面 374
14.5 省、市、县数据界面处理 374
14.6 处理返回的JSON数据 379
14.7 将天气信息显示到界面上 381
14.8 后台自动更新天气 384
第15章 Android应用程序托管和发布 387
15.1 Git版本控制工具 388
15.1.1 安装Git 388
15.1.2 创建代码仓库 389
15.1.3 提交本地代码 391
15.2 GitHub 392
15.2.1 在GitHub注册创建版本库 392
15.2.2 将代码托管到GitHub 395
15.3 将应用程序发布到360应用商店 398
15.3.1 生成正式签名的APK文件 398
15.3.2 申请360开发账号 400
15.3.3 发布应用程序 401
15.3.4 嵌入广告 403
15.4 本章小结 407
参考文献 408