LBS系统架构分析 1. LBS系统架构 GpsSatellite GpsStatu s (IGpsStatu sListener) LocationManager LocationListener (ILocationListener) LocationManagerServ ice (ILocationManager) LocationProv iderProx y LocationProv ider ILocationProv ider GpsLocationProv ider IGpsStatu sProv ider GeocodeProx y LocationProv iderInterface GeocodeProv ider IGeocodeProv ider GeoCoder LBS 系统分为三大部分: 1) 第一部分为LBS 客户端管理部分,主要提供给客户端应用使用,客户端应用调用此部分提供的功能进行位置定位。 LocationManager,提供给客户端应用调用,获取位置等信息,同时当有位置信息变化时通知客户端应用。 LocationListener ,提供给客户端应用注 册 使用,每 个 客户端应用对 应一个LocationListener,通过 LocationManager 注册到系统维护的一个位置服务的链表中,当系统中发现有位置信息变化或者其它信息变化时,会通过它通知客户端应用。 GpsStatus,提供给客户端应用获取 GPS 定位服务的状态。 GeoCoder,提供给客户端应用调用,获取地理编码信息。 2)第二部分为LBS 系统服务部分,开机时启动此服务 LocationManagerService,一方面负责处理LBS 客户端管理提供的定位等功能需求,另一方面启动提供定位功能的功能模块。 3)第三部分为LBS 的定位功能服务部分,完成定位服务模块的定位等动能。 GpsLocationProvider,提供GPS 定位服务,通过 GPS 底层模块获取位置信息及状态变化,通知 LBS 系统服务来获取位置信息及状态变化等。 LocationProviderProxy,提供网 路 定位服 务 ,会 通 过 ILocationProvider 调用LocationProvider 提供的定位功能。LocationProvider 只是提供了一个抽象的定位服务模块,并没有真正实现定位功能,需要用户去实现继承 LocationProvider 来完成此功能。 GeocodeProxy,提供地址编码服务,会通过 IGeocodeProvider 调用GeocodeProvider 提供的正反向地址编码功能。GeocodeProvider 只提供了一个抽象的反向地址编码服务模块,根据经纬度来获取地址信息,它并没有真正实现反向地址编码功能,需要用户去实现继承GeocodeProvider 来完成此功能。 2. LBS目录结构 (1) frameworks/base/services/java/com.android.server/LocationManager.java 提供的系统定位服务类。 (2) frameworks/base/services/jav...