关于我们
书单推荐
新书推荐
|
Android传感器开发与智能设备案例实战
本书主要介绍Android传感器和外设的开发,共29章,主要包括Android开发技术基础、获取并编译源码、Android技术核心框架分析、Android传感器系统分析、使用地图定位、光线传感器详解、接近警报传感器详解、磁场传感器详解、加速度传感器详解、方向传感器详解、陀螺仪传感器详解、旋转向量传感器详解、距离传感器详解、气压传感器详解、温度传感器详解、湿度传感器详解、Android蓝牙系统概述、低功耗蓝牙技术详解、语音识别技术详解、手势识别技术详解、NFC近场通信技术详解、拍照解析条形码技术详解、基于图像处理的人脸识别技术详解、行走轨迹记录器、手势音乐播放器和智能家居系统等。本书几乎涵盖了Android传感器和外设开发所需的所有主要内容,讲解方法通俗易懂。
本书适合Android初学者、Android爱好者以及Android底层开发人员、传感器开发人员、智能设备开发人员、Android外部设备开发工程师学习,也可以作为相关培训学校和大专院校相关专业的教学用书。
讲解Android 传感器的书籍,循序渐进的全面剖析了Android传感器的特性和功能。
本书几乎涵盖了Android传感器和外设开发所需的所有主要内容,如Android传感器系统分析、地图定位、光线传感器、接近警报、磁场传感器、加速度传感器、方向传感器、陀螺仪传感器、旋转向量传感器、距离传感器、气压传感器、温度传感器、湿度传感器、Android蓝牙系统、语音识别、手势识别、NFC近场通信、拍照解析条形码、麦克风音频录制、基于图像处理的人脸识别、行走轨迹记录等知识。 本书循序渐进的全面剖析了Android传感器开发的基本知识,几乎涵盖了Android传感器的所有内容。并且在讲解过程中,细致讲解了每一个知识点的具体原理和具体用法。
朱元波,曾就职于中国联通开发部,从事信号采集开发工作。现就职于东软软件,负责三星电子产品的Android产品定制,从事Androd云端系统开发和数据通信开发。51cto客座Android和iOS专家,定期参加火狐召开的开发专家会议。
第1章 Android开发技术基础 1
1.1 智能手机操作系统介绍 1 1.2 Android的巨大优势 2 1.2.1 系出名门 2 1.2.2 强大的开发团队 2 1.2.3 Android系统开源 2 第2章 搭建Android应用开发环境 3 2.1 安装Android SDK的系统要求 3 2.2 安装JDK 3 2.3 安装Eclipse和Android SDK 6 2.3.1 获取并安装Eclipse和 Android SDK 6 2.3.2 快速安装SDK 8 2.4 安装ADT 8 2.5 验证设置 10 2.5.1 设定Android SDK Home 10 2.5.2 验证开发环境 10 2.5.3 创建Android虚拟设备 (AVD) 11 2.6 启动AVD模拟器 12 2.6.1 模拟器和真机究竟有何区别 13 2.6.2 启动AVD模拟器的基本流程 13 第3章 获取并编译源码 14 3.1 在Linux系统获取Android源码 14 3.2 在Windows平台获取Android源码 15 3.3 分析Android源码结构 17 3.3.1 应用程序 18 3.3.2 应用程序框架 19 3.3.3 系统服务 20 3.3.4 系统程序库 22 3.3.5 系统运行库 24 3.3.6 硬件抽象层 25 3.4 编译源码 26 3.4.1 搭建编译环境 26 3.4.2 开始编译 26 3.4.3 在模拟器中运行 28 3.4.4 常见的错误分析 28 3.4.5 实践演练——演示两种编译 Android程序的方法 29 3.5 编译Android Kernel 32 3.5.1 获取Goldfish内核代码 32 3.5.2 获取MSM内核代码 34 3.5.3 获取OMAP内核代码 35 3.5.4 编译Android的Linux内核 35 3.6 编译源码生成SDK 36 第4章 Android技术核心框架分析 40 4.1 分析Android的系统架构 40 4.1.1 Android体系结构介绍 40 4.1.2 Android应用工程文件组成 42 4.2 Android的五大组件 45 4.2.1 Activity界面组件 45 4.2.2 Intent切换组件 45 4.2.3 Service服务组件 45 4.2.4 用Broadcast/Receiver广播 机制组件 46 4.2.5 ContentProvider存储组件 46 4.3 进程和线程 46 4.3.1 什么是进程 47 4.3.2 什么是线程 47 4.3.3 应用程序的生命周期 47 4.4 Android和Linux的关系 49 4.4.1 Android继承于Linux 50 4.4.2 Android和Linux内核 的区别 50 4.5 第一段Android程序 52 4.5.1 新建Android工程 52 4.5.2 调试程序 54 4.5.3 运行程序 54 第5章 Android传感器系统分析 56 5.1 Android传感器系统概述 56 5.2 分析Java层 57 5.3 分析Frameworks层 62 5.3.1 监听传感器的变化 62 5.3.2 注册监听 62 5.4 分析JNI层 71 5.4.1 分析android_hardware_ SensorManager.cpp 72 5.4.2 处理客户端数据 75 5.4.3 处理服务端数据 77 5.4.4 封装HAL层的代码 87 5.4.5 消息队列处理 91 5.5 分析HAL层 94 第6章 Android传感器系统概览 102 6.1 Android设备的传感器系统 102 6.1.1 包含的传感器 102 6.1.2 检测当前设备支持的传感器 103 6.2 使用SensorSimulator 105 6.3 查看传感器的相关信息 107 第7章 地图定位 120 7.1 位置服务 120 7.1.1 android.location功能类 120 7.1.2 实现定位服务功能 121 7.1.3 实战演练——在Android设备 中实现GPS定位 123 7.2 及时更新位置信息 125 7.2.1 Maps库类 125 7.2.2 使用LocationManager 及时监听 126 7.2.3 实战演练——在Android 设备中显示当前位置的 坐标和海拔 127 7.3 在Android设备中使用地图 134 7.3.1 准备工作 134 7.3.2 使用Map API密钥的 基本流程 135 7.3.3 实战演练——在Android设备 中使用谷歌地图实现定位 137 7.4 在Android设备中实现地址查询 141 7.5 在Android设备中实现路径导航 144 第8章 光线传感器详解 149 8.1 光线传感器基础 149 8.1.1 光线传感器介绍 149 8.1.2 在Android中使用光线 传感器的方法 150 8.2 实战演练——获取设备中光线 传感器的值 151 8.3 实战演练——显示设备中光线 传感器的强度 152 8.4 实战演练——显示设备名称和 光线强度 154 8.5 实战演练——智能楼宇灯光 控制系统 155 8.5.1 布局文件 156 8.5.2 实现程序文件 166 第9章 接近警报传感器详解 190 9.1 类Geocoder详解 190 9.1.1 类Geocoder基础 190 9.1.2 公共构造器 190 9.1.3 公共方法 190 9.1.4 Geocoder的主要功能 192 9.1.5 地理编码和地理反编码 193 9.2 实战演练——在设备地图中 快速查询某个位置 195 9.3 实战演练——接近某个位置时 实现自动提醒 197 第10章 磁场传感器详解 207 10.1 磁场传感器基础 207 10.1.1 什么是磁场传感器 207 10.1.2 磁场传感器的分类 207 10.2 Android系统中的磁场传感器 208 10.3 实战演练——获取磁场传感器 的3个分量 209 10.4 实战演练——演示常用传感器 的基本用法 210 10.4.1 实现布局文件 210 10.4.2 实现程序文件 210 第11章 加速度传感器详解 217 11.1 加速度传感器基础 217 11.1.1 加速度传感器的分类 217 11.1.2 加速度传感器的主要 应用领域 218 11.2 Android系统中的加速度传感器 219 11.2.1 实战演练——获取x、y、z轴 的加速度值 220 11.2.2 实战演练——实现控件的 抖动效果 222 11.2.3 实战演练——实现仿微信 “摇一摇”效果 224 11.3 线性加速度传感器详解 229 11.3.1 线性加速度传感器的原理 229 11.3.2 实战演练——测试小球 的运动 230 第12章 方向传感器详解 235 12.1 方向传感器基础 235 12.1.1 方向传感器必备知识 235 12.1.2 Android中的方向传感器 236 12.2 实战演练——测试当前设备的 3个方向值 236 12.2.1 实现布局文件 236 12.2.2 实现主程序文件 237 12.3 实战演练——开发一个指南针 程序 238 12.3.1 实现布局文件 238 12.3.2 实现程序文件 238 12.4 开发一个具有定位功能的指南针 240 12.4.1 实现布局文件 240 12.4.2 实现程序文件 242 第13章 陀螺仪传感器详解 251 13.1 陀螺仪传感器基础 251 13.2 Android中的陀螺仪传感器 252 13.2.1 陀螺仪传感器和加速度 传感器的对比 252 13.2.2 智能设备中的陀螺仪 传感器 252 13.3 实战演练——联合使用互补滤波器 和陀螺仪传感器 254 13.3.1 实现布局文件 255 13.3.2 实现主Activity文件 260 13.3.3 实现均值滤波器 266 13.3.4 测量各个平面的值 267 13.3.5 传感器处理 278 第14章 旋转向量传感器详解 290 14.1 Android中的旋转向量传感器 290 14.2 实战演练——确定设备当前的 具体方向 291 14.2.1 实现主Activity 291 14.2.2 获取设备的旋转向量 298 第15章 距离传感器详解 301 15.1 距离传感器基础 301 15.1.1 距离传感器介绍 301 15.1.2 Android系统中的距离 传感器 302 15.2 实战演练——使用距离传感器 实现自动锁屏功能 303 15.3 实战演练——根据设备的距离 实现自动锁屏功能 308 15.4 实战演练——绘制运动曲线 310 15.4.1 实现布局文件 310 15.4.2 实现Activity程序文件 312 15.4.3 实现监听事件处理 316 15.5 实战演练——开发一个健身 计步器 319 15.5.1 系统功能模块介绍 319 15.5.2 系统主界面 319 15.5.3 系统设置模块 329 第16章 气压传感器详解 347 16.1 气压传感器基础 347 16.1.1 什么是气压传感器 347 16.1.2 气压传感器在智能手机 中的应用 347 16.2 实战演练——开发一个Android 气压计系统 348 16.2.1 编写插件调用文件 348 16.2.2 编写Cordova插件文件 349 16.2.3 定义每个时间点的压力值 351 16.2.4 监听传感器传来的和存储 的新压力值 351 16.3 实战演练——获取当前相对海拔 和绝对海拔的数据 355 16.3.1 实现布局文件 355 16.3.2 实现主Activity 357 第17章 温度传感器详解 364 17.1 温度传感器基础 364 17.2 Android系统中的温度传感器 364 17.3 实战演练——让Android设备 变为温度计 366 17.3.1 实现布局文件 367 17.3.2 检测温度传感器的 温度变化 367 17.4 实战演练——电池温度测试仪 368 17.4.1 实现布局文件 368 17.4.2 实现程序文件 369 17.5 实战演练——测试温度、湿度、 光照和压力 377 17.5.1 实现Arduino文件 377 17.5.2 实现Android APP 385 第18章 湿度传感器详解 388 18.1 湿度传感器基础 388 18.2 Android系统中的湿度传感器 389 18.3 实战演练——获取远程湿度 传感器的数据 389 18.3.1 编写布局文件 390 18.3.2 监听用户触摸单击屏幕 控件事件并处理 391 18.3.3 设置远程湿度传感器的 初始URL地址 393 18.4 实战演练——开发一个湿度 测试仪 394 18.4.1 实现主界面 394 18.4.2 设置具体值 397 18.4.3 显示当前的值 401 18.4.4 保存当前数值 404 18.4.5 图形化显示测试结果 405 18.4.6 湿度跟踪器 414 第19章 Android蓝牙系统概述 416 19.1 蓝牙概述 416 19.1.1 蓝牙技术的发展历程 416 19.1.2 蓝牙的特点 416 19.2 Android系统中的蓝牙模块 416 19.3 分析蓝牙模块的源码 418 19.3.1 初始化蓝牙芯片 418 19.3.2 蓝牙服务 418 19.3.3 管理蓝牙电源 419 19.4 和蓝牙相关的类 419 19.4.1 BluetoothSocket类 419 19.4.2 BluetoothServerSocket类 421 19.4.3 BluetoothAdapter类 421 19.4.4 BluetoothClass.Service类 428 19.4.5 BluetoothClass.Device类 428 19.5 在Android平台开发蓝牙 应用程序 429 19.6 实战演练——开发一个控制玩具 车的蓝牙遥控器 432 19.7 实战演练——开发一个蓝牙 控制器 438 19.7.1 界面布局 439 19.7.2 响应单击按钮 440 19.7.3 和指定的服务器建立连接 441 19.7.4 搜索附近的蓝牙设备 442 19.7.5 建立和OBEX服务器的 数据传输 443 19.7.6 实现蓝牙服务器端的 数据处理 446 第20章 低功耗蓝牙技术详解 448 20.1 短距离无线通信技术概览 448 20.1.1 ZigBee——低功耗、 自组网 448 20.1.2 Wi-Fi——大带宽支持 家庭互联 449 20.1.3 蓝牙——4.0进入 低功耗时代 449 20.1.4 NFC——近场通信 449 20.2 蓝牙4.0 BLE基础 450 20.2.1 蓝牙4.0的优势 450 20.2.2 Bluetooth 4.0 BLE推动了 智能设备的兴起 451 20.3 低功耗蓝牙基础 452 20.3.1 低功耗蓝牙的架构 452 20.3.2 低功耗蓝牙分类 452 20.3.3 集成方式 453 20.3.4 低功耗蓝牙的特点 454 20.3.5 BLE和传统蓝牙BR/EDR 技术的对比 454 20.4 蓝牙规范 455 20.4.1 Bluetooth系统中的 常用规范 455 20.4.2 蓝牙协议体系结构 456 20.4.3 低功耗(BLE)蓝牙协议 457 20.4.4 现有的基于GATT的 协议/服务 457 20.4.5 双模协议栈 458 20.4.6 单模协议栈 458 20.5 低功耗蓝牙协议栈详解 459 20.5.1 蓝牙协议栈基础 459 20.5.2 蓝牙协议体系中的协议 460 20.5.3 Android的低功耗蓝牙 协议栈 461 20.6 TI公司的低功耗蓝牙 462 20.6.1 获取TI公司的低功耗 蓝牙协议栈 462 20.6.2 分析TI公司的低功耗 蓝牙协议栈 463 20.7 使用蓝牙控制电风扇 469 20.7.1 准备DHT传感器 469 20.7.2 实现Android测试APP 473 第21章 语音识别技术详解 479 21.1 语音识别技术基础 479 21.1.1 语音识别的发展历史 479 21.1.2 技术发展历程 480 21.2 Text-To-Speech技术详解 480 21.2.1 Text-To-Speech基础 480 21.2.2 Text-To-Speech的 实现流程 481 21.2.3 实战演练——使用Text-To-Speech技术实现 语音识别 483 21.3 Voice Recognition技术详解 484 21.3.1 Voice Recognition技术 基础 484 21.3.2 实战演练——使用 Voice Recognition技术 实现语音识别 486 21.4 实战演练——开发一个语音 识别系统 489 21.4.1 验证是否支持所需要 的语言 489 21.4.2 实现TTS的初始化工作 489 21.4.3 开启语言检查功能 491 21.4.4 跟踪语言数据的安装状况 492 21.4.5 转换语言并处理结果 493 21.4.6 实现语音阅读测试 495 21.4.7 保证系统可以实现正确 的语音识别 499 21.4.8 显示语音识别的结果 501 21.4.9 处理回调 502 第22章 手势识别技术详解 508 22.1 手势识别技术基础 508 22.1.1 类GestureDetector基础 508 22.1.2 使用类GestureDetector 509 22.1.3 手势识别处理事件和方法 511 22.2 实战演练——通过触摸方式 移动图片 512 22.2.1 实例说明 512 22.2.2 具体实现 512 22.3 实战演练——实现各种手势 识别 515 22.4 实战演练——实现手势拖动和 缩放图片效果 517 22.4.1 实现布局文件 518 22.4.2 监听用户选择的设置选项 518 22.4.3 获取并设置移动位置和 缩放值 519 22.4.4 在不同的缩放状态下 绘制图像视图 520 22.4.5 根据监听到的手势实现 图片缩放 522 第23章 NFC近场通信技术详解 524 23.1 近场通信技术基础 524 23.1.1 NFC技术的特点 524 23.1.2 NFC的工作模式 524 23.1.3 NFC和蓝牙的对比 525 23.2 射频识别技术详解 525 23.2.1 RFID技术简介 526 23.2.2 RFID技术的组成 526 23.2.3 RFID技术的特点 526 23.2.4 RFID技术的工作原理 527 23.3 Android系统中的NFC 528 23.3.1 分析Java层 528 23.3.2 分析JNI部分 548 23.3.3 分析底层 556 23.4 编写NFC程序 556 23.4.1 在Android系统编写 NFC APP的方法 556 23.4.2 实战演练——使用NFC 发送消息 558 23.4.3 实战演练——使用NFC 读写Mifare Tag 562 第24章 拍照解析条形码技术详解 566 24.1 Android拍照系统介绍 566 24.1.1 分析拍照系统的底层程序 568 24.1.2 分析拍照系统的硬件 抽象层 574 24.1.3 分析拍照系统的Java部分 577 24.2 开发拍照应用程序 582 24.2.1 通过Intent调用系统的 照相机Activity 583 24.2.2 调用Camera API拍照 583 24.2.3 总结Camera拍照的流程 584 24.2.4 实战演练——获取系统现 有相机拍摄的图片 586 24.2.5 实战演练——使用Camera 预览并拍照 590 24.2.6 实战演练——使用Camera API方式拍照 594 24.3 使用拍照方式解析二维码 596 24.3.1 QR Code码的特点 596 24.3.2 实战演练——使用Android 相机解析二维码 597 第25章 麦克风音频录制技术详解 604 25.1 使用MediaRecorder接口 录制音频 604 25.1.1 类MediaRecorder详解 604 25.1.2 实战演练——使用MediaRecorder录制音频 605 25.2 使用AudioRecord接口录制音频 609 25.2.1 AudioRecord的常量 609 25.2.2 AudioRecord的构造函数 610 25.2.3 AudioRecord的公共方法 610 25.2.4 AudioRecord的受保护 方法 612 25.2.5 实战演练——使用 AudioRecord录制音频 612 25.3 实战演练——麦克风录音 综合实例 614 25.3.1 获取录音源的最大振幅 614 25.3.2 实现异步音频录制功能 616 25.3.3 监听是否超越最大值 618 25.3.4 录制音频 618 25.3.5 巨响检测 621 25.3.6 检测一致性频率 622 第26章 基于图像处理的人脸识别 技术详解 624 26.1 二维图形处理详解 624 26.1.1 类Graphics基础 624 26.1.2 实战演练——使用 Graphics类 624 26.1.3 实战演练——使用Color类 和Paint类实现绘图处理 626 26.2 二维动画处理详解 628 26.2.1 类Drawable详解 628 26.2.2 实现Tween Animation 动画 629 26.2.3 实战演练——实现Tween 动画效果 630 26.2.4 实战演练——使用Tween Animation实现Tween 动画效果 631 26.2.5 实现Frame Animation 动画效果 632 26.2.6 实战演练——播放 GIF动画 633 26.3 Android人脸识别技术详解 634 26.3.1 分析人脸识别模块的源码 634 26.3.2 实战演练——使用内置 模块实现人脸识别 635 26.3.3 实战演练——实现 人脸识别 636 26.3.4 实战演练——从照片中 取出人脸 640 第27章 行走轨迹记录器 642 27.1 系统功能模块介绍 642 27.2 系统主界面 642 27.2.1 布局文件 642 27.2.2 实现主Activity 645 27.3 系统设置 658 27.3.1 选项设置 659 27.3.2 生成GPX文件和 KML文件 661 27.4 邮件分享提醒 665 27.4.1 基本邮箱设置 665 27.4.2 实现邮件发送功能 668 27.5 上传OSM地图 671 27.5.1 授权提示布局文件 671 27.5.2 实现文件上传 673 第28章 手势音乐播放器 675 28.1 系统功能模块介绍 675 28.2 系统主界面 675 28.3 系统列表界面 678 28.3.1 布局文件 678 28.3.2 程序文件 680 28.4 实现公共类 691 28.4.1 核心公共类Jamendo Application 691 28.4.2 缓存图片资源 694 28.4.3 类RequestCache 694 28.5 手势操作 695 28.5.1 Android提供的手势 操作API 695 28.5.2 使用命令模式构建手势 识别系统 698 28.5.3 实现抽象命令角色 Command 698 28.5.4 实现具体命令角色ConcreteCommand 698 28.5.5 实现命令接收者角色 Receiver 699 28.5.6 实现调用者角色Invoker 700 28.5.7 实现装配者角色Client 701 28.6 播放处理 701 28.6.1 设计播放界面 702 28.6.2 分析播放流程 702 第29章 智能家居系统 710 29.1 需求分析 710 29.1.1 背景介绍 710 29.1.2 传感技术的推动 710 29.1.3 Android与智能家居的 紧密联系 711 29.2 系统功能模块介绍 711 29.3 系统主界面 711 29.3.1 实现布局文件 711 29.3.2 实现程序文件 712 29.4 系统设置 714 29.4.1 总体配置 714 29.4.2 系统总体配置 714 29.4.3 构建数据库 719 29.5 电器控制模块 721 29.5.1 电器控制主界面 721 29.5.2 温度控制界面 723 29.5.3 电灯控制界面 724 29.6 预案管理模块 727 29.6.1 天气情况 727 29.6.2 历史数据 735 29.6.3 系统设置 737
你还可能感兴趣
我要评论
|