from:http://blog.sina.com.cn/s/blog_6ba1ab350100wsm5.html

 Android中LocationManager的提供了一系列方法来地理位置相关的问题,包括查询上一个已知位置;注册/注销来自某个 LocationProvider的周期性的位置更新;以及注册/注销接近某个坐标时对一个已定义Intent的触发等。今天我们就来看看Android 中LocatinManager的简单使用,以获取当前所在的位置为例。


首先,我们需要获取LocationManager的一个实例,这里需要注意的是他的实例只能通过下面这种方式来获取,直接实例化LocationManager是不被允许的。

Java代码
  1. LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  


得到了LocationManager的实例locatonManager以后,我们通过下面的语句来注册一个周期性的位置更新。
Java代码
  1. locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,   
  2.  10000, locationListener);  


这句代码告诉系统,我们需要从GPS获取位置信息,并且是每隔1000ms更新一次,并且不考虑位置的变化。最后一个参数是LocationListener的一个引用,我们必须要实现这个类。

Java代码
  1. private final LocationListener locationListener = new LocationListener() {   
  2.     public void onLocationChanged(Location location) { //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发   
  3.         // log it when the location changes   
  4.         if (location != null) {   
  5.             Log.i("SuperMap""Location changed : Lat: "  
  6.               + location.getLatitude() + " Lng: "  
  7.               + location.getLongitude());   
  8.         }   
  9.     }   
  10.   
  11.     public void onProviderDisabled(String provider) {   
  12.     // Provider被disable时触发此函数,比如GPS被关闭   
  13.     }   
  14.   
  15.     public void onProviderEnabled(String provider) {   
  16.     //  Provider被enable时触发此函数,比如GPS被打开   
  17.     }   
  18.   
  19.     public void onStatusChanged(String provider, int status, Bundle extras) {   
  20.     // Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数   
  21.     }   
  22. };  


以上的这些步骤一般应当在Activity的onCreate()阶段完成。

在成功注册了一个周期性坐标更新以后,我们就随时可以通过下面的方法来取得当前的坐标了。
Java代码
  1. Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);   
  2. double latitude = location.getLatitude();     //经度   
  3. double longitude = location.getLongitude(); //纬度   
  4. double altitude =  location.getAltitude();     //海拔  



不过这时候,如果你尝试去运行这个LocationSample的话程序启动时多半就会报错,因为我们没有设置GPS相关的权限,解决方法也相当简单,在AndroidManifest.xml中的block里添加下面这句即可解决权限的问题。详细的权限设置,请参考官方文档docs/reference/android/Manifest.permission.html
Java代码
  1. "android.permission.ACCESS_FINE_LOCATION" /> 

更多相关文章

  1. Android(安卓)Studio 中文乱码问题
  2. getevent工具和Android中inputevent的分析
  3. Android实现带动画效果的Tab Menu
  4. Android(安卓)GPS 定位的实现(1)
  5. Android之简易天气预报小应用(xml解析练手)
  6. android visible invisible和gone差异
  7. 初窥图像处理利器RenderScript
  8. 探索 Android(安卓)Q:位置权限
  9. Android(安卓)Scroller简单用法

随机推荐

  1. Android退出程序(二)——利用广播机制
  2. 面试经典题Handler机制回答
  3. android项目 添加
  4. android:windowSoftInputMode属性介绍
  5. Android传感器概述(五)
  6. Android的代码规范及阿里巴巴最新Java开
  7. Android动画效果Animation之Tween实现简
  8. 【转】关于做Android+J2ee系统集成开发的
  9. 安卓屏幕完美适配方案
  10. Android底部菜单的封装及重用