Android使用Google提供的地图实现定位时LocationListener的各个方法
16lz
2021-01-24
from:http://blog.sina.com.cn/s/blog_6ba1ab350100wsm5.html
Android中LocationManager的提供了一系列方法来地理位置相关的问题,包括查询上一个已知位置;注册/注销来自某个 LocationProvider的周期性的位置更新;以及注册/注销接近某个坐标时对一个已定义Intent的触发等。今天我们就来看看Android 中LocatinManager的简单使用,以获取当前所在的位置为例。
首先,我们需要获取LocationManager的一个实例,这里需要注意的是他的实例只能通过下面这种方式来获取,直接实例化LocationManager是不被允许的。
Java代码
- LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
得到了LocationManager的实例locatonManager以后,我们通过下面的语句来注册一个周期性的位置更新。
Java代码
- locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
- 1000, 0, locationListener);
这句代码告诉系统,我们需要从GPS获取位置信息,并且是每隔1000ms更新一次,并且不考虑位置的变化。最后一个参数是LocationListener的一个引用,我们必须要实现这个类。
Java代码
- private final LocationListener locationListener = new LocationListener() {
- public void onLocationChanged(Location location) { //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
- // log it when the location changes
- if (location != null) {
- Log.i("SuperMap", "Location changed : Lat: "
- + location.getLatitude() + " Lng: "
- + location.getLongitude());
- }
- }
- public void onProviderDisabled(String provider) {
- // Provider被disable时触发此函数,比如GPS被关闭
- }
- public void onProviderEnabled(String provider) {
- // Provider被enable时触发此函数,比如GPS被打开
- }
- public void onStatusChanged(String provider, int status, Bundle extras) {
- // Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
- }
- };
以上的这些步骤一般应当在Activity的onCreate()阶段完成。
在成功注册了一个周期性坐标更新以后,我们就随时可以通过下面的方法来取得当前的坐标了。
Java代码
- Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
- double latitude = location.getLatitude(); //经度
- double longitude = location.getLongitude(); //纬度
- double altitude = location.getAltitude(); //海拔
Java代码
-
"android.permission.ACCESS_FINE_LOCATION" />
更多相关文章
- Android(安卓)Studio 中文乱码问题
- getevent工具和Android中inputevent的分析
- Android实现带动画效果的Tab Menu
- Android(安卓)GPS 定位的实现(1)
- Android之简易天气预报小应用(xml解析练手)
- android visible invisible和gone差异
- 初窥图像处理利器RenderScript
- 探索 Android(安卓)Q:位置权限
- Android(安卓)Scroller简单用法