本书循序渐进地讲解了基于Android系统开发物联网应用程序的基本知识、关键技术和实战流程。在讲解每一个知识时,都遵循了理论联系实际的讲解方式,从内核分析到接口API实现,再到实战演练,后到综合实例演练,彻底剖析了开发物联网项目的完整实现流程。
第1章 Android系统介绍
1.1 智能手机系统概述 1
1.1.1 昨日王者——Symbian(塞班) 1
1.1.2 谷歌公司的Android 2
1.1.3 Mac公司的iOS 3
1.1.4 微软公司的Windows Phone 3
1.1.5 黑莓公司的Blackberry OS 4
1.2 总结Android的核心优势 5
1.2.1 强有力的业界支持 5
1.2.2 研发阵容强大 5
1.2.3 为开发人员“精心定制” 5
1.2.4 开源 6
1.3 Android系统架构概览 6
1.3.1 底层操作系统层(OS) 7
1.3.2 运行库(Libraries)和Android 运行环境(RunTime) 7
1.3.3 Application Framework(应用程序框架) 8
1.3.4 顶层应用程序(Application) 8
1.4 核心组件 8
1.4.1 Activity界面 8
1.4.2 Intent和Intent Filters 9
1.4.3 Service服务 9
1.4.4 Broadcast Receiver发送广播 10
1.4.5 用Content Provider存储数据 10
1.5 物联网技术改变未来 11
1.5.1 什么是物联网 11
1.5.2 发展历程 11
1.5.3 Android正在成为物联网标准操作系统 12
1.6 Android智能设备蓬勃发展 13
1.6.1 常见的Android智能设备 13
1.6.2 新兴热点——可穿戴设备 15
1.6.3 可穿戴设备的发展前景分析 18
1.6.4 Android对穿戴设备的支持——Android Wear 19
第2章 搭建Android开发环境
2.1 获取Android源码 20
2.1.1 在Linux系统获取Android源码 20
2.1.2 在Windows平台获取Android源码 21
2.2 编译源码 27
2.2.1 常见的错误分析 28
2.2.2 实践演练——演示两种编译Android程序的方法 29
2.3 搭建Android 应用开发环境 33
2.3.1 安装JDK 34
2.3.2 获取并安装Eclipse和Android SDK 37
2.3.3 快速安装SDK 39
2.3.4 安装ADT 40
2.3.5 验证设置 42
2.3.6 创建Android虚拟设备(AVD) 44
2.3.7 启动AVD模拟器 46
第3章 传输网络数据
3.1 HTTP通信 48
3.1.1 使用HTTP传输数据 48
3.1.2 使用Apache接口传输数据 49
3.1.3 使用java.net传输数据 54
3.1.4 使用Android网络接口传输数据 56
3.1.5 实例3-1:在物联网设备屏幕中传递HTTP参数 57
3.1.6 实例3-2:在物联网设备中访问HTTP地图 60
3.2 使用Socket传输数据 62
3.2.1 Socket Java网络开发基础 63
3.2.2 使用TCP协议传输数据 64
3.3 下载远程数据 66
3.3.1 实例3-3:在物联网设备中下载网络服务器中的图片 67
3.3.2 实例3-4:下载并播放网络MP3 67
3.4 远程上传数据 73
3.4.1 实例3-5:上传物联网设备中的文件到远程服务器 73
3.4.2 实例3-6:在物联网设备中采用GET方式向服务器传递数据 75
3.5 处理XML数据 79
3.5.1 XML的概述 79
3.5.2 XML的语法 79
3.5.3 实例3-7:在物联网中使用SAX解析XML数据 80
3.5.4 实例3-8:在物联网中使用DOM解析XML数据 83
第4章 使用蓝牙传输数据
4.1 蓝牙传输技术介绍 85
4.2 BLE蓝牙传输技术介绍 86
4.2.1 低功耗蓝牙的架构 86
4.2.2 低功耗蓝牙分类 87
4.2.3 低功耗蓝牙的特点 88
4.2.4 BLE和传统蓝牙BR/EDR的对比 88
4.3 蓝牙规范 89
4.3.1 Bluetooth常用规范 89
4.3.2 蓝牙协议体系结构 90
4.3.3 低功耗(BLE)蓝牙协议 91
4.4 低功耗蓝牙协议栈 92
4.4.1 什么是低功耗蓝牙协议栈? 92
4.4.2 蓝牙协议体系中的协议 93
4.5 TI公司的低功耗蓝牙解决方案 95
4.5.1 获取蓝牙协议栈 95
4.5.2 BLE蓝牙协议栈结构 96
4.5.3 BLE低功耗蓝牙系统架构 98
4.5.4 硬件抽象层HAL和BLE低功耗蓝牙协议栈 99
第5章 Android蓝牙系统详解
5.1 Android系统中的蓝牙模块 104
5.2 和蓝牙相关的接口类 106
5.2.1 BluetoothSocket类 106
5.2.2 BluetoothServerSocket类 107
5.2.3 BluetoothAdapter类 108
5.2.4 BluetoothClass.Service类 115
5.2.5 BluetoothClass.Device类 115
5.3 Android中的低功耗蓝牙协议栈 116
5.3.1 低功耗蓝牙协议栈基础 116
5.3.2 低功耗蓝牙API详解 116
5.4 实例5-1:使用蓝牙控制电风扇的转动 127
第6章 物联网语音识别开发详解
6.1 语音识别技术概述 140
6.1.1 语音识别技术的发展历史 140
6.1.2 语音识别技术的发展历程 141
6.2 Text-To-Speech语音识别技术 141
6.2.1 Text-To-Speech基础 141
6.2.2 总结Text-To-Speech开发流程 142
6.2.3 实例6-1:使用Text-To-Speech实现语音识别 145
6.2.4 实例6-2:物联网中文语音识别 147
6.3 Voice Recognition语音识别技术 151
6.3.1 Voice Recognition技术基础 152
6.3.2 实例6-3:使用Voice Recognition实现语音识别 154
6.4 实例6-4:将物联网设备中的提醒文字转换为语音 157
第7章 物联网设备手势识别
7.1 Android事件监听机制详解 162
7.1.1 总结Android中的监听事件 162
7.1.2 Android事件侦听器的回调方法 163
7.1.3 Android事件处理模型 165
7.1.4 基于自定义监听器的事件处理 166
7.2 手势识别开发详解 168
7.2.1 手势识别类GestureDetector 168
7.2.2 手势检测器类GestureDetector 169
7.2.3 手势识别处理事件和方法 172
7.3 实例7-1:通过单击的方式移动图片 172
7.4 实例7-2:实现常用的手势识别操作 176
7.5 实例7-3:实现手势翻页效果 179
第8章 在物联网设备中处理多媒体数据
8.1 Android多媒体系统架构基础 186
8.1.1 OpenMax框架介绍 187
8.1.2 OpenCore框架介绍 188
8.1.3 Stagefright框架介绍 189
8.2 Graphics类详解 190
8.2.1 Graphics类基础 190
8.2.2 使用Graphics类 190
8.2.3 实例8-1:在物联网设备中使用矩形类Rect和RectF 191
8.3 二维动画 194
8.3.1 类Drawable 194
8.3.2 实现Tween动画效果 196
8.3.3 实例8-2:在物联网设备中实现Tween动画效果 196
8.3.4 实例8-3:演示Tween动画的四种动画效果 198
8.3.5 实现Frame动画效果 202
8.4 OpenGL ES详解 203
8.4.1 OpenGL ES基础 203
8.4.2 Android用到OpenGL ES 204
8.4.3 OpenGL ES的基本操作 204
8.4.4 实例8-4:使用OpenGL ES绘制一个正方形 208
8.5 音频开发 211
8.5.1 音频接口类 211
8.5.2 AudioManager控制铃声 213
8.5.3 实例8-5:设置短信提示铃声 215
8.6 录音详解 221
8.6.1 使用MediaRecorder接口录制音频 221
8.6.2 使用AudioRecord接口录音 224
8.7 在物联网设备中播放音乐 226
8.7.1 使用AudioTrack播放音频 227
8.7.2 使用MediaPlayer播放音频 227
8.7.3 使用SoundPool播放音频 228
第9章 Android传感器系统架构详解
9.1 Android传感器系统概述 229
9.2 Android传感器应用开发基础 231
9.2.1 查看包含的传感器 231
9.2.2 模拟器测试工具——
SensorSimulator 232
9.2.3 实例9-1:检测当前设备支持的传感器 236
第10章 光线传感器和磁场传感器开发详解
10.1 光线传感器详解 239
10.1.1 光线传感器介绍 239
10.1.2 使用光线传感器的方法 240
10.1.3 实例10-1:获取物联网设备中光线传感器的值 241
10.1.4 实例10-2:显示物联网设备中光线传感器的强度 243
10.2 磁场传感器详解 245
10.2.1 Android系统中的磁场传感器 246
10.2.2 实例10-3:获取物联网设备中磁场传感器的三个分量 246
10.2.3 实例10-4:在物联网设备中使用磁场传感器 248
第11章 加速度传感器、方向传感器和陀螺仪传感器
11.1 加速度传感器详解 258
11.1.1 Android系统中的加速度传感器 258
11.1.2 实例11-1:获取X、Y、Z轴的加速度值 259
11.1.3 实例11-2:在物联网设备中实现仿微信“摇一摇”效果 261
11.2 方向传感器详解 266
11.2.1 Android中的方向传感器 266
11.2.2 实例11-3:测试当前物联网设备的三个方向值 267
11.2.3 实例11-4:在物联网设备中开发指南针程序 269
11.3 陀螺仪传感器开发详解 271
11.4 实例11-5:在物联网设备中使用加速度传感器和陀螺传感器 272
第12章 旋转向量传感器、距离传感器和气压传感器
12.1 旋转向量传感器开发详解 286
12.1.1 Android中的旋转向量传感器 286
12.1.2 实例12-1:确定当前物联网设备的方向 287
12.2 距离传感器开发详解 295
12.2.1 Android系统中的距离传感器 295
12.2.2 实例12-2:实现自动锁屏功能 297
12.3 气压传感器开发详解 303
12.3.1 气压传感器在智能手机中的应用 303
12.3.2 实例12-3:实现一个Android气压计 303
第13章 温度传感器和湿度传感器
13.1 温度传感器开发详解 312
13.1.1 Android系统中温度传感器 312
13.1.2 实例13-1:开发一个物联网温度计 314
13.1.3 实例13-2:测试设备电源的温度 316
13.2 湿度传感器开发详解 329
13.2.1 Android系统中的湿度传感器 329
13.2.2 实例13-3:获取远程湿度传感器的数据 330
第14章 物联网条形码识别开发详解
14.1 Android拍照系统结构基础 336
14.2 Camera系统底层架构分析 339
14.2.1 V4L2 API介绍 339
14.2.2 总结操作V4L2的流程 340
14.2.3 V4L2驱动框架 342
14.2.4 实现Video核心层 343
14.3 Camera系统的硬件抽象层 346
14.3.1 Android 2.1及其以前的版本 347
14.3.2 Android 2.2及其以后的版本 348
14.3.3 实现Camera硬件抽象层 349
14.4 Camera系统的Java部分 350
14.5 开发拍照应用程序 357
14.5.1 通过Intent调用系统的照相机Activity 357
14.5.2 调用Camera API拍照 358
14.5.3 总结Camera拍照的流程 359
14.6 解析二维码 361
14.6.1 QR Code码的特点 361
14.6.2 实例14-1:使用Android设备解析二维码 362
第15章 物联网NFC近场通信开发详解
15.1 近场通信技术基础 371
15.1.1 NFC技术的特点 371
15.1.2 NFC的工作模式 372
15.1.3 NFC和蓝牙的对比 372
15.2 射频识别开发技术概览 373
15.2.1 RFID技术简介 373
15.2.2 RFID技术的组成 373
15.2.3 RFID技术的特点 374
15.2.4 RFID技术的工作原理 375
15.3 Android系统中的NFC 375
15.3.1 分析Java层 376
15.3.2 分析JNI部分 392
15.3.3 分析底层 397
15.4 总结开发NFC APP的方法 397
15.5 综合实例:在物联网设备中使用NFC发送消息 401
第16章 物联网穿戴开发技术详解
16.1 Google Now开发基础 406
16.1.1 Google Now介绍 406
16.1.2 Google Now的用法 407
16.2 Android Wear详解 409
16.2.1 什么是Android Wear 409
16.2.2 搭建Android Wear开发环境 411
16.3 开发Android Wear程序 415
16.3.1 创建通知 415
16.3.2 创建声音 418
16.3.3 给通知添加页面 421
16.3.4 通知堆 422
16.3.5 通知语法介绍 423
16.4 实例16-1:开发一个Android Wear
程序 424
16.5 实例16-2:实现手机和Android Wear的交互 431
第17章 Android智能家居系统
17.1 需求分析 445
17.1.1 背景介绍 445
17.1.2 传感技术的推动 446
17.1.3 Android与智能家居的
紧密联系 446
17.2 系统功能模块介绍 447
17.3 系统主界面 447
17.3.1 实现布局文件 447
17.3.2 实现程序文件 448
17.4 系统设置 450
17.4.1 总体配置 450
17.4.2 系统总体配置 450
17.4.3 构建数据库 453
17.5 家用电器控制模块 455
17.5.1 家用电器控制主界面 456
17.5.2 温度控制界面 458
17.5.3 电灯控制界面 459
17.6 快速预案管理模块 462
17.6.1 天气情况 462
17.6.2 历史数据 467
17.6.3 系统设置 470
第18章 Android健康心率计系统
18.1 系统介绍 476
18.1.1 什么是心率 476
18.1.2 系统功能 477
18.2 具体实现 477
18.2.1 扫描蓝牙设备 477
18.2.2 蓝牙控制界面 480
18.2.3 蓝牙BLE设备适配器 489
18.2.4 蓝牙BLE服务适配器 491
18.2.5 传感器测试心率 494
18.2.6 图形化显示心率值 495
第19章 Android行车记录仪
19.1 选择线路规划目的地 498
19.1.1 系统主Activity界面 498
19.1.2 布局文件capture.xml 501
19.2 Adapter适配器处理 503
19.3 生成骑行路线图 506
19.3.1 实时导航服务 506
19.3.2 线路计划监听服务 507
19.3.3 线路任务服务 507
19.3.4 在地图中显示行驶线路 509
19.3.5 生成导航视图 509
19.4 街道分析 511
19.5 海拔数据分析 513
第20章 Android多功能电视盒子
20.1 Android TV介绍 515
20.2 系统模块结构 516
20.3 系统主界面 517
20.3.1 系统主界面布局 517
20.3.2 系统主界面Activity 518
20.4 本地服务 526
20.4.1 本地服主务界面 526
20.4.2 应用程序管理界面 530
注:以下内容读者可在源代码下载包中学习使用。
附录A
A.1 编译Android Kernel 534
A.1.1 获取Goldfish内核代码 534
A.1.2 获取MSM内核代码 537
A.1.3 获取OMAP内核代码 537
A.1.4 编译Android的Linux内核 537
附录B
B.1 Android蓝牙系统架构分析 540
B.1.1 初始化蓝牙芯片 540
B.1.2 蓝牙服务 541
B.1.3 管理蓝牙电源 542
B.2 Android BlueDroid架构详解 542
B.2.1 Android系统中BlueDroid的架构 542
B.2.2 Application Framework层分析 542
B.2.3 分析Bluetooth System
Service层 550
B.2.4 JNI层详解 551
B.2.5 HAL层详解 556
附录C
C.1 传感器之Java层详解 557
C.2 传感器之Frameworks层详解 563
C.2.1 监听传感器的变化 563
C.2.2 注册监听 563
C.3 传感器之JNI层详解 575