安卓位置服务简介

  • Post author:
  • Post category:其他



位置服务(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) {//在定位功能硬件状态改变时被调用
      }
}



版权声明:本文为u014050188原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。