参考资源:android 4种定位原理及实现——1
android使用不同的方法为应用提供位置信息。
定位的方式有三种:GPS地位(A-GPSAssistedGPS:辅助全球卫星定位系统,或者是同步GPS(S-GPS)),网络定位,被动获取定位信息(应用不必显示从LocationManager请求位置更新信息,就能获取位置数据。即从其他应用中获得请求得到的位置信息)
这些信息成为信息提供者LocationProvider
Android中定义的位置提供者
- 网络定位NETWORK_PROVIDER
- GPS定位GPS_PROVIDER
- 被动定位PASSIVE_PROVIDER
组合定位FUSED_PROVIDER(这个是被隐藏的变量,不能直接使用,好像我都没有遇见过哦*~*)
GPS定位利用多个卫星至GPS接收器的距离,使用三角定位确定当前的位置,最少需要三个卫星才可以确定一个二维的位置(经度和纬度)。
如果和更多的卫星通信,GPS接收器可以确定如海拔信息(虽然海拔确定的不准确。。。。)等更多位置信息
优点:提供精确的位置数据
GPS缺点:定位时间较长,耗电,GPS接收器在看不到天空的地方无法使用,所以在室内定位出错
A-GPS:通过移动网络将GPS历书(星历的集合:接收到的卫星的位置信息的集合)和其他信息传输到移动设备。即基站代送信息到移动设备。这使得gps在室内 也可以使用
网络定位:
- 使用无线网络WiFi接入点提供位置信息---比GPS硬件更省电
1、每一个无线AP(路由器)都有一个全球唯一的MAC地址,并且一般来说无线AP在一段时间内不会移动;
2、设备在开启Wi-Fi的情况下,即可扫描并收集周围的AP信号,无论是否加密,是否已连接,甚至信号强度不足以显示在无线信号列表中,都可以获取到AP广播出来的MAC地址;
3、设备将这些能够标示AP的数据发送到位置服务器,服务器检索出每一个AP的地理位置,并结合每个信号的强弱程度,计算出设备的地理位置并返回到用户设备;
4、位置服务商要不断更新、补充自己的数据库,以保证数据的准确性。
基站定位
第一种基站定位和GPS类似使用三角定位。移动设备通过电磁波在三个基站中转所需时间计算出设备所在坐标(基站的位置是固定的)
第二种则是利用获取最近的基站的信息,其中包括基站 id,location area code、mobile country code、mobile network code和信号强度,将这些数据发送到google的定位web服务里,就能拿到当前所在的位置信息,误差一般在几十米到几百米之内。其中信号强度这个数据很重要。
被动定位
这个是在前两者基础上通过其他应用使用前两种方式传送位置数据到当前应用