安卓位置服务简介

位置服务(Location-Based Services,LBS),又称定位服务或基于位置的服务,融合了GPS定位、移动通信、导航等多种技术,提供与空间位置相关的综合应用服务。

Android平台支持提供位置服务的API,在开发过程中主要用到LocationManager和LocationProviders对象。

LocationManager可以用来获取当前的位置,追踪设备的移动路线,或设定敏感区域,在进入或离开敏感区域时设备会发出特定警报;

获取LocationManage的方法:

LocationManager LocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

然后有两种定位方法:有GPS_PROVIDER(使用GPS定位,利用卫星提供精确的位置信息,需要android.permissions.ACCESS_FINE_LOCATION用户权限)和NETWORK_PROVIDER(使用网络定位,利用基站或WiFi访问的提供近似的位置信息,需要具有如下权限:
android.permission.ACCESS_COARSE_LOCATION或android.permission.ACCESS_FINE_LOCATION),然后才能调用下面方法获取当前位置:

Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double lat = location.getLatitude();//纬度
double lng = location.getLongitude();//经度

它还提供了一种便捷、高效的位置监视方法locationManager.requestLocationUpdates(provider, 2000, 10, locationListener),可以根据位置的距离变化和时间间隔设定,产生位置改变事件的条件,这样可以避免因微小的距离变化而产生大量的位置改变事件;

第1个参数是定位的方法,GPS定位或网络定位
第2个参数是产生位置改变事件的时间间隔,单位为微秒
第3个参数是距离条件,单位是米
第4个参数是回调函数,用于处理位置改变事件

locationManager.requestLocationUpdates(provider, 2000, 10, locationListener); 

LocationListener的代码如下:

 LocationListener locationListener = new LocationListener(){
       public void onLocationChanged(Location location) {//在位置改变时被调用
       }
      public void onProviderDisabled(String provider) {//在用户禁用具有定位功能的硬件时被调用
       }
       public void onProviderEnabled(String provider) {//在用户启用具有定位功能的硬件时被调用
       }
        public void onStatusChanged(String provider, int status, Bundle extras) {//在定位功能硬件状态改变时被调用
      }
}

你可能感兴趣的:(android)