Android物联网开发细致入门与最佳实践循序渐进地讲解了基于Android系统开发物联网应用程序的基本知识、关键技术和实战流程。在讲解每一个知识时,都遵循了理论联系实际的讲解方式,从内核分析到接口API实现,再到实战演练,最后到综合实例演练,彻底剖析了开发物联网项目的完整实现流程。
目录
- 第1章 Android系统介绍
- 1.1 智能手机系统概述 1
- 1.1.1 昨日王者——Symbian(塞班) 1
- 1.1.2 谷歌公司的Android2
- 1.1.3 Mac公司的iOS3
- 1.1.4 微软公司的WindowsPhone 3
- 1.1.5 黑莓公司的BlackberryOS 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和IntentFilters 9
- 1.4.3 Service服务9
- 1.4.4 Broadcast Receiver发送广播 10
- 1.4.5 用ContentProvider存储数据 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 手势识别类GestureDetector168
- 7.2.2 手势检测器类GestureDetector169
- 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 类Drawable194
- 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用到OpenGLES 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 调用CameraAPI拍照 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系统中的NFC375
- 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 什么是AndroidWear 409
- 16.2.2 搭建AndroidWear开发环境 411
- 16.3 开发AndroidWear程序 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.xml501
- 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 系统主界面Activity518
- 20.4 本地服务 526
- 20.4.1 本地服主务界面526
- 20.4.2 应用程序管理界面530
- 注:以下内容读者可在源代码下载包中学习使用。
- 附录A
- A.1 编译AndroidKernel 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 分析BluetoothSystem
- 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