如何在Android中获取位置信息

  介绍

如何在Android中获取位置信息吗?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1。位置服务的简介:位置服务,英文翻译为定位服务,缩写为磅,又称为定位服务或基于位置的服务,融合了GPS定位,移动通信,导航等多种技术,提供与空间位置相关的综合应用服务,基于位置的服务发展很迅速,涉及商务,医疗,工作和生活的各个方面,为用户提供定位,追踪和敏感区域警告等一系列服务。比如谷歌地图,百度地图,都需要通过位置服务。

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

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

(2)。LocationProviders则是提供定位功能的组件集合,集合中的每种组件以不同的技术提供设备的当前位置,区别在于定位的精度,速度和成本等方面。

3。接下来将讲述一个如何实现获取位置的经纬度,并且如果位置改变,如何通过位置的改变,经纬度也发生变化的例子,这里以LocationManager对象为例:

(1)首先,第一步,获取LocationManager对象,可以通过调用android.app.Activity.getSystemService()函数获取,代码如下:

String  serviceString =, Context.LOCATION_SERVICE;//,获取的是位置服务   LocationManager  LocationManager =, (LocationManager), getSystemService (serviceString);//,调用getSystemService()方法来获取LocationManager对象

其中的LOCATION_SERVICE是Android支持的系统级服务,控制位置等设备的更新。

(2)。在获取到LocationManager对象后,还需要指定LocationManager的定位方法,然后才能够调用LocationManager.getLastKnowLocation()方法获取当前位置,目前LocationManager主要有两种定位方法

GPS定位:可以提供更加精确的位置信息,但定位速度和质量受到卫星数量和环境情况的影响,需要android.permissions。ACCESS_FINE_LOCATION用户权限。

网络定位:提供的位置信息精度差,但速度较GPS定位要迅速,利用基站或WiFi访问的提供近似的位置信息,需要具有如下权限:android.permission。ACCESS_COARSE_LOCATION或android.permission.ACCESS_FINE_LOCATION .

注:(使用GPS定位和网络定位的LocationManager类的静态常量不一样,GPS定位的LocationManager类的静态常量为:GPS_PROVIDER,网络定位的LocationManager类的静态常量为:NETWORK_PROVIDER,这两个静态常量在获取当前位置时要用的到。)

下面以使用GPS定位为例,获取位置信息代码如下:

String  provider =, LocationManager.GPS_PROVIDER;//,指定LocationManager的定位方法   位置的位置=,locationManager.getLastKnownLocation(提供者);//,调用getLastKnownLocation()方法获取当前的位置信息

(3)。通过调用中位置的getLatitude()和getLonggitude()方法可以分别获取位置信息中的纬度和经度,代码如下:

double  lat =, location.getLatitude();//获取纬度   double  lng =, location.getLongitude();//获取经度

, (4)。在很多提供定位服务的应用程序中,不仅需要获取当前的位置信息,还需要监视位置的变化,在位置改变时调用特定的处理方法,其中LocationManager提供了一种便捷,高效的位置监视方法requestLocationUpdates(),可以根据位置的距离变化和时间间隔设定,产生位置改变事件的条件,这样可以避免因微小的距离变化而产生大量的位置改变事件,LocationManager中设定监听位置变化的代码如下:

locationManager.requestLocationUpdates(供应商,2000年,10日locationListener);//,产生位置改变事件的条件设定为距离改变10米,时间间隔为2秒,设定监听位置变化

接下来介绍上面这行代码的各个参数,第一个参数是我们之前指定LocationManager的定位方法,GPS定位或网络定位,第二个参数指的是产生位置改变事件的时间间隔,单位为微秒,第三个参数指的是距离条件,单位为米,第四个参数是回调函数,用于处理位置改变事件,即设置LocationListener监听器。总的来说,那一行代码将产生位置改变事件的条件设定为距离改变10米,时间间隔为2秒。

(5)。实现locationListener的代码如下:

private  final  LocationListener  LocationListener =, new  locationListener (), {   ,   @Override才能   public 才能;void  onLocationChanged(位置位置),{   ,,//,TODO  Auto-generated  method 存根   ,,,,   ,,}   ,   @Override才能   public 才能;void  onProviderDisabled (String  arg0), {   ,,//,TODO  Auto-generated  method 存根   ,,,,   ,,}   ,   @Override才能   public 才能;void  onProviderEnabled (String  arg0), {   ,,//,TODO  Auto-generated  method 存根   ,,,,   ,,}   ,   @Override才能   public 才能;void  onStatusChanged (String  arg0, int  __arg1、, Bundle 最长),{   ,,//,TODO  Auto-generated  method 存根   ,   ,,}   ,   ,},

如何在Android中获取位置信息