《android传感器高级编程》译者序
翻看手机中的应用,就能发现大多数应用都已经使用了传感器。让微信彻底火起来的“附近的人”和“摇一摇”、碰一碰交换信息的Bump、各种运动记录app、神奇的“磁力探测仪”、火爆的游戏Temple Run……手机设备中的传感器让应用的可玩性大大增加,提供了各种创新的交互方式,以及在PC上很难实现的功能。在我看来,移动设备相对PC来说的主要优势在于随时随地的便携性,还有就是丰富的传感器。用好传感器,已经是手机应用开发的必修课。
可是开始听到本书书名时,对翻译本书并没有什么兴趣。我自己也写过一本Android开发方面的书,觉得介绍传感器编程的话,一个章节足以。可是在看了英文书后,发现本书并不是简单地介绍Android传感器API的调用,而是非常专业细致地介绍了Android传感器。这本书将教会你真正用好Android传感器。
首先,本书对传感器的介绍都非常深入。我一直认为,要真正用好一个东西,必须了解其原理。本书对传感器的原理都作了必要的解读,就拿第1章来说,相信大家都知道GPS的原理,但是你知道A-GPS吗?S-GPS呢?是否知道Wi-Fi定位和移动网络定位的原理呢?想要用好Android的定位服务,这些知识是必需的。我的一位朋友前几天还问我,他玩微信中“附近的人”,明明在杭州却老是定位在南京。其实原因就是他在使用Wi-Fi定位,而这个路由器在南京呆了6年,在Google的数据库中早就被定位在了南京的某地,Google并没有即时更新该数据库。如果微信考虑这种情况,相信可以对这种状况做一些特别的处理。
其次,本书的范围很广。与其说是介绍传感器,倒不如说是介绍如何充分利用Android设备的硬件能力。本书分4个部分,涵盖了定位的相关内容、各种物理传感器的介绍(包括重力传感器、加速计、磁强计等,还介绍了AOA和ADK),同时还包括了NFC、摄像头、图像处理、麦克风等,以及语音识别和文本转语音的内容。可以说,本书完全涵盖了Android的硬件设备能力,能够用来打造一个非常有趣的应用。运用好这些硬件,可以充分发挥Android设备智能和便携的特性。同时这也是相对Web 应用来说非常大的优势。书中甚至包括了最近火热的Arduino的使用介绍,读者可以尽情地创新创意。
再次,本书的示例非常丰富,并且很多都可以简单复用。书中有着大量的示例,大多都是作者对传感器使用的最佳实践,并且结合了实际的使用场景,而不是简单的demo。同时,作者提供了大量框架性的代码,读者都可以直接复用。通过这些示例,读者可以快速掌握这些传感器的用法。
在翻译本书的过程中,感谢我的家人,你们给了我最大的支持。感谢我的好朋友徐婷翻译了第六章,且对本书一丝不苟的校对,让行文更加通顺优美,在很多专业知识上也提供了宝贵的建议并对本书的第6章有所贡献,在整个翻译过程中给了我莫大的支持和鼓励。感谢我所有的朋友和同事,本书的完成少不了你们的鼓励和支持。感谢清华大学出版社的编辑给了足够的耐心,并给了我很多的建议和帮助,让我获益匪浅。
本书的翻译过程非常艰辛,可谓一波三折。在本书付梓之际,虽然高兴,却也多了几分惶恐。这也是我的第一本译作,自觉水平有限,而本书其实又由多个作者完成,语言风格迥异,虽然我已经尽了很大的努力,但是肯定难免会有一些错漏和偏颇之处。对于本书的任何想法和意见都欢迎发送邮件至notice520@gmail.com。
最后,希望本书能帮助各位开发人员打造更美、更有创意、更有趣的移动应用。
《android传感器高级编程》译者序的更多相关文章
- 《Python算法教程》译者序
在计算机的世界中,算法本质上是我们对某一个问题或者某一类问题的解决方案.也就是说,如果我们想用计算机来解决问题的话,就必须将问题的解决思路准确而完整地描述出来,同时计算机也要能理解这个描述.这需要我们 ...
- python算法介绍:希尔排序
python作为一种新的语言,在很多功能自然要比Java要好一些,也容易让人接受,而且不管您是成年人还是少儿都可以学习这个语言,今天就为大家来分享一个python算法教程之希尔排序,现在我们就来看看吧 ...
- Python快速教程 尾声(转)
原文地址: http://www.cnblogs.com/vamei/p/3603046.html 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留 ...
- python快速教程-vamei
2016年10月26日 12:00:53 今天开始着手python的学习,希望能高效快速的学完! Python基础(上)... 7 实验简介... 7 一.实验说明... 8 1. 环境登录... 8 ...
- Python 简明教程 ---10,Python 列表
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序 = 算法 + 数据结构 -- Nicklaus Wirth 目录 从这句话程序 = 算法 + ...
- Python快速教程 尾声
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 写了将近两年的Python快速教程,终于大概成形.这一系列文章,包括Python基 ...
- 改写《python基础教程》中的一个例子
一.前言 初学python,看<python基础教程>,第20章实现了将文本转化成html的功能.由于本人之前有DIY一个markdown转html的算法,所以对这个例子有兴趣.可仔细一看 ...
- 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...
- .Net程序员之Python基础教程学习----列表和元组 [First Day]
一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...
- 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇
始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...
随机推荐
- 一个程序说明标准i/O缓冲的效率
来瞧一个程序,了解一下标准I/O中的缓冲区对程序运行的影响: #include<stdio.h>#include<unistd.h> int main(){ char a[2] ...
- udp穿透简单讲解和实现(Java)
在上一小节中了解到了通过浏览器自带的Webrtc功能来实现P2P视频聊天.在HTML5还没有普及和制定Webrtc标准的前提下,如果要在手机里进行视频实时对话等包括其他功能的话,还是要自己实现,还比较 ...
- MeshCombineUtility.cs method `GetTriangleStrip' of type `UnityEngine.Mesh' could be found
1) Assets/Standard Assets/Scripts/MeshCombineUtility.cs(27,74): error CS1061: Type `UnityEngine.Mesh ...
- CSS选择器、优先级与匹配原理
为了分析Bootstrap源码,所以的先把CSS选择器相关的东东给巩固好 废话就不多说了 CSS 2.1 selectors, Part 1 计算指定选择器的优先级:重新认识CSS的权重 标签的权值为 ...
- C#连接Oracle简单教程
要点:本文主要介绍如何使用最简单的方法让C#操作Oracle数据库,不需要安装Oracle客户端之类的东西. 最近由于工作需要,要使用C#从SQLServer向Oracle导入数据.之前没有怎么接触过 ...
- bootstrap精简教程
bootstrap 的学习非常简单,并且它所提供的样式又非常精美.只要稍微简单的学习就可以制作出漂亮的页面. bootstrap中文网:http://v3.bootcss.com/ bootstrap ...
- Vue基础---->VueJS的使用(二)
组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.今天我们就来学习一 ...
- sql server 调用webservice
sql server版本2008以上,应该都可以 更改服务器配置 sp_configure ; GO RECONFIGURE; GO sp_configure ; GO RECONFIGURE; GO ...
- .Net魔法堂:史上最全的ActiveX开发教程——ActiveX与JS间交互篇
一.前言 经过上几篇的学习,现在我们已经掌握了ActiveX的整个开发过程,但要发挥ActiveX的真正威力,必须依靠JS.下面一起来学习吧! 二.JS调用ActiveX方法 只需在UserContr ...
- EncryptTransform
internal class EncryptTransform { //private const int c_MaxLengthOf_IV_DES = 4; //private const int ...