一、位置服务概念
1.位置服务
位置服务(Location-Based Services,LBS),又称定位服务或基于位置的服务,融合了GPS定位、移动通信、导航等多种技术,提供了与个空间位置相关的综合应用服务。
2.GPS与网络位置提供器
Android平台支持提供位置服务的API,可以利用GPS(
Global Positioning System,
全球定位系统)和Network Location Provider(网络位置提供器)来获得用户的位置。
(1)GPS相对来说更精确,但它只能在户外工作,很费电,并且不能像用户期望的那样立即就能返回位置信息;
(2)Android的网络位置提供器使用手机发射塔和WI-FI信号来判断用户位置,在室内外都能工作、响应速度快、并且更加省点。如果想在应用程序中获得用户的位置,可以同时使用GPS和网络位置提供器,或者其中一种。通过定位服务可以获得当前设备的地理位置,应用程序可以定时请求更新设备当前的地理定位信息,从而达到实时监测的功能。
3.基本框架
二、提供位置服务的核心API
Android为支持位置服务,提供了android.location包,该包中包含了与位置信息密切相关的了和接口,主要有:LocationManager、LocationProvider、Location、LocationListener。
1.LocationManager类
(1)功能
定位管理者。该类是访问Android系统位置服务的入口,所有定位相关的服务、对象都将由该类的对象来产生。和其他服务一样,程序不能直接创建LocationManager对象,而是通过Context的getSystemService()方法来获取对象:
LocationManager locMg=getSystemService(Context.LOCATION_SERVICE);
(2)LocationManager中的常用方法
★ public String getBestProvider(Criteria criteria,boolean enabledOnly):根据指定条件返回最优的LocationProvider。其中criteria表示过滤条件,enabledOnly表示是否要求处于启用状态。
★public Location getLastKnowLocation(String provider):根据LocationProvider获取最近一次已经的Location对象。其中provider表示提供上次位置的LocationProvider名称。
★public LocationProvider getProvider(String name):根据名称返回LocationProvider对象。
★public List<String> getProviders(boolean enabledOnly):获取所有可用的LocationProvaider。
★public voidrequestLocationUpdates(String provider,long minTime,float minDistance,LocationListener listener):通过指定的LocationProvider周期性地获取定位信息,并触发listener所对应的触发器。