书籍详情
《移动开发经典丛书·Android传感器高级编程》[20M]百度网盘|亲测有效|pdf下载
  • 移动开发经典丛书·Android传感器高级编程

  • 出版社:清华大学出版社
  • 出版时间:2013-11
  • 热度:10963
  • 上架时间:2024-06-30 09:08:33
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

内容简介

  《Android传感器高级编程》介绍了实现位置跟踪和接近警报的多种方法
  揭秘sensormanager api中物理传感器背后的物理原理,从而让你了解正确的应用方式
  展示了算法代码来解释带噪声的传感器数据并检测其变化
  演示了如何测量设备属性,例如方向和移动,以及类似相对高度这样的环境属性
  探究如何使用android开放附件(android open accessory,aoa)来访问外部传感器
  介绍近场通信(nfc)技术及其api
  提供图像和信号处理代码来检测摄像头和麦克风所捕获到的内容
  给出使用android语音识别和文本转语音api来创建可靠、用户友好、带语音功能的应用所需的所有组件

目录

第1部分 位置 务
第1章 android位置服务简介
1.1 用于确定位置的方法
1.1.1 gps提供者
1.1.2 网络提供者(network provider)
1.2 小结

第2章 确定设备当前位置
2.1 了解你的工具
2.1.1 locationmanager
2.1.2 location provider
2.1.3 location 13
2.1.4 criteria 13
2.1.5 locationlistener
2.2 设置android清单
2.3 确定合适的位置提供者
2.3.1 gps位置提供者
2.3.2 网络位置提供者
2.3.3 被动位置提供者
2.3.4 精确度与电池寿命
……

精彩书摘

  第1章Android位置服务简介
  本章内容:
  概述在Android中如何提供位置信息
  简单介绍GPS
  讨论在Android中使用A-GPS的原因
  概述网络位置提供者
  在移动开发领域,位置信息正变得越来越重要。之前和定位无关的应用利用位置信息提供了更丰富的用户体验。将最新的位置信息和简单的Web搜索引擎结合,就能让Android设备提供以前不可能实现的一系列功能。能够轻松地为应用检索和提供位置数据已经成为如今移动平台的一大主要特色。Android通过它的位置服务提供了这个功能。
  Android的位置服务提供访问设备定位设施的接口。位置信息可以广泛用于多种功能,并且可以使设备和运行其上的软件对周边有更好的了解。
  1.1 用于确定位置的方法
  Android使用不同的方法为应用提供位置信息。在Android中,这些设施称作位置提供者(location provider),每一个设施都有自己特有的优点和缺点。另外,因为每个位置提供者的独特性,要在不同的情况下以不同的方式使用它们。
  下面的小节会对获取位置的方法的工作原理给出更高层次的解释。虽然应用几乎无法控制提供者的工作过程,但是它可以决定使用哪个位置提供者。了解每个提供者如何工作,对于理解它的局限性和特点大有帮助。
  1.1.1 GPS提供者
  Global Positioning System(全球定位系统,GPS)使用一套环绕地球的卫星系统来帮助接收器(在这里就是一部Android手机)确定它的位置。术语GPS指的是整个GPS系统,包括了卫星、接收器以及用来监控和调整它的控制站。脱离这套系统,手机中的接收器就是毫无用处的。
  1. GPS的工作原理
  一般情况下,GPS接收器使用环绕地球的GPS卫星提供的信息来计算当前所处的位置。GPS系统包括27个围绕地球运行的卫星,它们会将信息传输到潜在的接收器。每一个卫星都遵循指定的轨道运动,保证至少在地球的任何位置、任何时间都有4个卫星是“可见”的。使用GPS来定位,必须确保“视线范围”内至少有4个卫星。图1-1展示了GPS卫星星座。
  来源: http://gps.gov/multimedia/images
  图1-1 GPS卫星星座
  星座中的每个GPS卫星都会持续地发送自己当前的位置信息(ephemeris data,星历数据)和历书数据(almanac data)。历书数据包含了星座中每个卫星的数据,其中包括轨道数据以及系统整体状态信息。换一种方式说,星历数据是单一卫星的数据,而历书数据是所有卫星的数据。每个卫星会同时发送这两种信息。虽然星历数据和历书数据都会为给定的卫星提供位置数据,但是星历数据保证了位置计算的准确度。
  为了计算位置,GPS接收器必须能确定它和多个卫星之间的距离。通过星历数据可以做到这一点。从卫星传回的数据里包括位置数据以及传输开始的时间。每个GPS卫星都有一个非常精确的计时机制,使之和其他的卫星在时间上保持同步。为了精确地计算位置,GPS卫星和GPS接收器的时钟必须高度同步。即使是最微小的时间差,也可能会导致位置计算产生较大的误差。
  通过传输开始时间,GPS接收器可以计算传输过程所花费的时间(接收器能够获取传输结束时间)。这个计算是建立在无线电波以真空中的光速来传输数据这一假设之上的(并不总是如此)。通过开始时间、结束时间以及恒定的光速,GPS接收器可以计算出自身和卫星之间的距离。
  ……

前言/序言

  Android是活的,它们可以定位自己,看、听以及理解对话。它们可以感知无线电信号并探测方向、移动以及环境属性。你的计算机能实现这一切吗?
  传感器是让Android设备区别于其他计算机的其中一个功能。如果没有传感器,Android设备只是一个动力不足、屏幕太小的Web浏览器,同时其输入机制也很笨拙。
  传感器还能让应用做一些很棒的事情。例如,传感器可以帮助用户摆脱缓慢的手动输入和操作,传感器还可以帮助用户做一些之前不可能做到的事。正因为如此,应用想要成功,结合传感器可能是必需的。
  传感器将继续成为Android平台的重要组成部分。随着Android设备硬件规格的提高,传感器的数量和质量也提高了。与此同时,用户会继续期待应用使用一些令人兴奋的新的传感器。因此,使用Android传感器是Android程序员必须掌握的一个至关重要的技能。本书将会为你提升该技能以及使用传感器开发出色的应用提供所需的知识和代码。
  Android传感器编程
  编写使用Android传感器的应用涉及多方面的内容,包括理解Android设备的感知能力、选择合适的传感器,以及实现一个可以获取并解读传感器数据的应用。
  Android的感知能力
  一台Android设备可以有多种传感器。本书使用的传感器定义结合了很多Android设备能力。在本书中,传感器指的是:
  一种可以捕获对设备和其外部环境的测量的能力。
  感知能力来源于Android设备的硬件能力以及对其有创造性的运用。这些能力可以直接使用来自可测量物理量的硬件的值,例如磁场传感器。也可以使用用户通常与之交互的硬件,例如摄像头和麦克风。某些能力甚至能使用一组硬件组合以及基于服务器的处理,例如语音识别。无论来源是什么,结果数据都可以通知应用设备状态和其目前的环境。
  本书介绍了在以下类型的传感器中如何编写应用来处理数据。
  位置传感器:使用包括GPS在内的多种传感器确定设备的位置。
  物理传感器:检测设备特定的属性,例如方向、加速度、旋转,以及光、磁场、气压等环境属性。
  NFC扫描器:检测近场通信(NFC)标签,并和其他带NFC功能的Android设备共享数据。
  摄像头;收集可视图像。
  麦克风:录制音频。
  语音识别:组合使用从麦克风录制的音频以及识别算法将音频转换为文本。
  外部传感器:使用Android开放外设(Android Open Accessory AOA)机制链接的传感器。
  选择感知任务
  理解传感器的工作原理有助于你了解应用的哪个任务可以受益于传感器相关的输入。它还有助于你解释在不同情况下传感器的表现,并了解传感器的局限性。例如
  .  位置:了解多种位置传感器的工作原理,如第1章所述,你就会预期设备在室内的精度会比较低。
  物理传感器:了解物理传感器的测量信息,如第5章所述,有助于你理解应用对传感器输出会做出的合理推测。
  使用API样板
  在任何应用中,请求传感器数据都需要类似的代码。每种数据都需要不同的样板。在很多种情况下,初始化API以及获取数据都不是很方便。本书提供的代码示例和库有助于让其更容易实现。API使用所涉及的一些难点示例包括如下。
  摄像头:在应用可以分析图像之前,它需要从摄像头获取图像。然而,使用设备摄像头需要处理设备旋转、硬件限制,并且正确地使用Camera和View对象。第12章和第13章介绍的抽象类用于处理这些细节。
  NFC:使用NFC涉及了解各个所需的步骤来读取和写入NFC标签,以及存入的数据内容。第11章阐释了完整的代码示例,该代码非常易于适配。
  收集传感器数据
  一旦应用可以初始化并获取传感器数据,它就需要利用API在应用运行过程中收集数据。数据的收集方式可以有很多种,取决于应用的使用方式。本书介绍了在不同任务下不同的数据收集方法。其中一些示例包括如下。
  位置:位置跟踪是位置传感器的常见用途。一些应用需要在应用执行其他任务时也能持久地跟踪位置。第3章介绍了几种方法来可靠地实现位置跟踪。
  语音识别:为了获取语音识别结果,应用除了运行语音识别器之外,还需要其他的组件。应用还需要允许用户激活语音,并协调用户说话的时机以及应用侦听的时机。第IV部分介绍了实现完整的语音命令所需的所有软件组件。
  解读传感器数据
  在应用收集了一些传感器数据之后,它需要分析数据来获取想要的效果。每个传感器都需要不同的数据分析算法。其中一些示例包括如下。
  物理传感器:解读物理传感器的数据涉及从原始数据到可用数据的转换计算,以及帮助检测变化和忽略噪声的算法。第Ⅱ部分介绍了原理。
  摄像头:处理摄像头的图像涉及建立一个图像处理管道。应用必须减小摄像头采集的大图像的尺寸到一个可管理的大小,否则会导致无法存入内存,或者处理速度过慢。而后应用需要以多种方式变换收集到的图像,从而检测图像中的某些东西。
  麦克风:分析音频数据涉及信号处理算法。第14章介绍了音量检测和频率估算算法。
  语音识别:执行语音命令涉及使用文本搜索方法来匹配命令单词和用户所说的话。第17章介绍了提高匹配成功率的一些方法。
  本书中的应用
  本书中呈现的应用根据特定的目的来使用传感器。这些应用提供了常见问题的实用代码组件。
  第3章:使用一个数据库和BroadcastReceiver来实现持久、可靠的位置跟踪。
  第4章:使用服务来实现高效的接近警报,节省电池寿命。
  第7章:使用多种物理传感器来确定设备是面朝下还是面朝上。
  第7章:使用旋转矢量传感器来实现增强现实应用所需的功能。
  第8章:使用加速度传感器来检测移动。
  第9章:使用气压计来检测高度。
  第10章:使用AOA从外部温度传感器收集数据。
  第11章:使用含有自定义数据的NFC标签来跟踪库存。
  第13章:使用摄像头来检测Android logo。
  第14章:使用麦克风通过检测大的响声和乐音来实现声控开关。
  第17章和第18章:使用语音识别和文本转语音来实现查询和操作食物数据库中数据的语音命令。
  Android高级编程
  本书适用于熟悉Android编程的开发人员。本书假设你已经理解了基础的Android概念,例如Activity和Intent,但是还没有使用过传感器相关的API。本书还假设你了解一些数学概念并充分阐释了所需了解的物理概念。
  此外,本书专注于传感器编程。这种专注使得有足够的空间来充分介绍如何处理每种数据,而不只是简单地解释API的使用。
  在传感器编程之外,本书介绍的技术适用于任何应用。例如,书中的章节展示了如何在各种任务中使用BroadcastReceiver、Service、AsyncTask以及数据库。
  开始感知
  应用可以利用传感器实现了不起的功能,这些功能都很独特并能节约用户的时间。Android的感知能力将会提高并且继续成为很多应用中重要的一部分。本书用你所需的知识和代码来武装你,帮助你开发出更强大的应用。
  Android Sensing Playground应用
  本书附带的应用称为Android Sensing Playground。该应用让你可以执行书中的大多数应用和示例代码,并利用playground来观察相关的API在不同参数设置下的工作状况。
  可以从Google Play下载该应用:https://play.google.com/store/apps/details?id=root.gast. playground。
  Great Android Sensing Toolkit(GAST)
  本书中的代码为开源项目Great Android Sensing Toolkit(GAST)的一部分。最新的更新和代码都可以从Github获取,链接为:https://github.com/gast-lib。
  如何下载本书的示例代码
  在读者学习本书中的示例时,可以手工输入所有的代码,也可以使用本书附带的源代码文件。本书使用的所有源代码都可以从本书合作站点http://www.wrox.com/和http://www.tupwk. com.cn/downpage上下载。登录到站点http://www.wrox.com/上,使用Search工具或书名列表就可以找到本书。接着单击本书细目页面上的Download Code链接,就可以获得所有的源代码。
  注释:
  许多图书的书名都很相似,所以通过ISBN查找本书是最简单的,本书的ISBN是978-1-118-18348-9。
  在下载了代码后,只需用自己喜欢的解压缩软件对它进行解压缩即可。另外,也可以进入http://www.wrox.com/dynamic/books/download.aspx上的Wrox代码下载主页,查看本书和其他Wrox图书的所有代码。
  勘误表
  尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果你在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。
  要在网站上找到本书的勘误表,可以登录http://www.wrox.com,通过Search工具或书名列表查找本书,然后在本书的细目页面上,单击Book Errata链接。在这个页面上可以查看Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是www.wrox.com/misc-pages/ booklist.shtml。
  如果在Book Errata页面上没有看到你找出的错误,请进入www.worx.com/contact/ techsupport.shtml,填写表单,发电子邮件,我们就会检查你的信息,如果是正确的,就在本书的勘误表中粘贴一个消息,我们将在本书的后续版本中采用。
  p2p.wrox.com
  P2P邮件列表是为作者和读者之间的讨论而建立的。读者可以在p2p.wrox.com上加入P2P论坛。该论坛是一个基于Web的系统,用于传送与Wrox图书相关的信息和相关技术,与其他读者和技术用户交流。该论坛提供了订阅功能,当论坛上有新帖子时,会给你发送你选择的主题。Wrox作者、编辑和其他业界专家和读者都会在这个论坛上进行讨论。
  在http://p2p.wrox.com上有许多不同的论坛,帮助读者阅读本书,在读者开发自己的应用程序时,也可以从这个论坛中获益。要加入这个论坛,必须执行下面的步骤:
  (1) 进入p2p.wrox.com,单击Register链接。
  (2) 阅读其内容,单击Agree按钮。
  (3) 提供加入论坛所需的信息及愿意提供的可选信息,单击Submit按钮。
  (4) 然后就可以收到一封电子邮件,其中的信息描述了如何验证账户,完成加入过程。
  提示:
  不加入P2P也可以阅读论坛上的信息,但只有加入论坛后,才能发送自己的信息。
  加入论坛后,就可以发送新信息,回应其他用户的帖子。可以随时在Web上阅读信息。如果希望某个论坛给自己发送新信息,可以在论坛列表中单击该论坛对应的Subscribe to this Forum图标。
  对于如何使用Wrox P2P的更多信息,可阅读P2P FAQ,了解论坛软件的工作原理,以及许多针对P2P和Wrox图书的常见问题解答。要阅读FAQ,可以单击任意P2P页面上的FAQ链接。