Android定位原理做移动互联网就不太可能不碰手机端的开发
上周为了项目需要,俺也挽袖子抡胳膊开始写起了android程序,还好有java 基础,倒也上手快,写了几个小程序,主要都是关于定位方面的
网上也搜得到一些相关的文章和教程,但给出的例子效果不太好,而且感觉只有其表,却不明其理
因此写出此文,分享一些我的经验
虽然是以android为主,但是我想对其它平台的开发也应该有些帮助
这篇文章侧重于制定一个合理的定位方案
手机定位的方式先科普一些基础知识吧
最简单的手机定位方式当然是通过GPS模块(现在大部分的智能机应该都有了)
GPS方式准确度是最高的,但是它的缺点也非常明显:1 ,比较耗 电;2 ,绝大部分用户默认不开启GPS模块;3 ,从GPS模块启动到获取第一次定位数据,可能需要比较长的时间;4 ,室内几乎无法使用
这其中,缺点 2,3 都是比较致命的
需要指出的是,GPS走的是卫星通信的通道,在没有网络连接的情况下也能用
另外一种常见的定位方式是基站定位
大致思路 就是采集到手机上的基站ID 号(cellid )和其它的一些信息(MNC, MCC, LAC 等等),然后通过网络访问一些定位服务,获取并返回对应的经纬度 坐标
基站定位的精确度不如GPS,但好处是能够在室内用,只要网络通畅就行
还有Wifi 定位
和基站定位类似,这种方式是通过获取当前所用的wifi 的一些信息,然后访问网络上的定位服务以获得经纬度坐标
因为它和基站定位其实都需要使用网络,所以在Android也统称为Network方式
最后需要解释一点的是AGPS方式
很多人将它和基站定位混为一谈,但其实AGPS的本质仍然是GPS,只是它会使用基站信息对获取GPS进行辅助,然后还能对获取到的GPS结果进行修正,所以AGPS要比传统的GPS更快,准确度略高
Android提供的定位接口在写第一个程序之前