Android之地理信息服务·Android的定位服务

地理信息服务

1 Android的定位服务

通过获取移动设备上的GPS信息,基站信息,Wifi信息等与当前位置修改的信息,用来判断用户所处的具体位置,位置信息用经纬度表示。

    定位服务是地理位置服务的基础。Android提供了多种定位手段。

定位服务框架

Android的位置信息,是通过不同的位置信息源来提供的,表示位置信息源的对象派生自LocationProvider。通过硬件收集信息,转换成位置信息。

    Android的位置信息服务LocationProviderService,用来管理所有的位置信息源,并通过这些信息源向请求者提供当前的位置信息。位置信息服务运行在系统核心进程的独立线程中,在服务初始化时,根据配置信息实例化系统中预设的定位信息源对象。

    调用组件可以使用LocationManager获取当前的位置信息,LocationManager.getLastKnownLocation获取最近一次系统进行定位保存的信息。如果需要获取最新的位置信息,则要请求更新并监听当前位置信息的变化LOcationListener

    更新并监听当前位置信息的变化一般在Activity.onResume进行。注销监听在Activity.onPause进行。

    位置信息变更事件的注册需要调用LocationManager.requestLocationUpdates函数。

 

位置信息源

定位服务依托于多个不同的位置信息源,每个位置信息源对象都在独立的线程中运行。与位置服务通过Socket通信,并传递位置信息。

扫描二维码关注公众号,回复: 668843 查看本文章

    最基本的位置信息源,是依托GPS信息来确定设备的位置。GSP的获取需要底层设备的支持,但受硬件约束和抗干扰差。因此Android提供了另一种定位服务。

    基于网络的定位服务。定位信息源对象会手机移动设备周边WIfi和基站信息,并通过网络发送至Google的定位服务。Google服务根据收集来的海量Wifi地址,基站地址和经纬度关系计算出当前的位置信息并返回用户。

 

定位的选择

选择位置信息源进行定位的依据是依照预设的标准,从众多定位信息源选择一个最好的提供定位。

利用LocationManager.getBestProvider得到name,再用LocationManager.getProvidename)得到LocationProvider

 

另一种方式是动态定位

猜你喜欢

转载自aoyouzi.iteye.com/blog/1995698