注意事项:先注册一个locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
1000, 0, locationListener); 在成功注册了一个周期性坐标更新以后,我们就随时可以通过下面的方法来取得当前的坐标了,要不然就会有loc空指针
Android中LocationManager的提供了一系列方法来地理位置相关的问题,包括查询上一个已知位置;注册/注销来自某个 LocationProvider的周期性的位置更新;以及注册/注销接近某个坐标时对一个已定义Intent的触发等。今天我们就来看看Android 中LocatinManager的简单使用,以获取当前所在的位置为例。
首先,我们需要获取LocationManager的一个实例,这里需要注意的是他的实例只能通过下面这种方式来获取,直接实例化LocationManager是不被允许的。
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
得到了LocationManager的实例locatonManager以后,我们通过下面的语句来注册一个周期性的位置更新。
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
1000, 0, locationListener);
这句代码告诉系统,我们需要从GPS获取位置信息,并且是每隔1000ms更新一次,并且不考虑位置的变化。最后一个参数是LocationListener的一个引用,我们必须要实现这个类。
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()阶段完成。
在成功注册了一个周期性坐标更新以后,我们就随时可以通过下面的方法来取得当前的坐标了。
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double latitude = location.getLatitude(); //经度
double longitude = location.getLongitude(); //纬度
double altitude = location.getAltitude(); //海拔
不过这时候,如果你尝试去运行这个LocationSample的话程序启动时多半就会报错,因为我们没有设置GPS相关的权限,解决方法也相当简单,在 AndroidManifest.xml中的block里添加下面这句即可解决权限的问题。详细的权限设置,请参考官方文档docs/reference /android /Manifest.permission.html
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
分享到:
相关推荐
微信小程序 地图定位 地图定位 (源代码+截图)微信小程序 地图定位 地图定位 (源代码+截图)微信小程序 地图定位 地图定位 (源代码+截图)微信小程序 地图定位 地图定位 (源代码+截图)微信小程序 地图定位 地图...
微信小程序 小程序地图定位 (源码)微信小程序 小程序地图定位 (源码)微信小程序 小程序地图定位 (源码)微信小程序 小程序地图定位 (源码)微信小程序 小程序地图定位 (源码)微信小程序 小程序地图定位 (源码)微信小...
微信小程序源码-地图定位(地图定位,滴滴作业),亲测好用,可放心使用。微信小程序源码-地图定位(地图定位,滴滴作业),亲测好用,可放心使用。微信小程序源码-地图定位(地图定位,滴滴作业),亲测好用,可...
(微信小程序毕业设计)地图定位(附源码+截图).zip(微信小程序毕业设计)地图定位(附源码+截图).zip(微信小程序毕业设计)地图定位(附源码+截图).zip(微信小程序毕业设计)地图定位(附源码+截图).zip(微信小程序毕业设计)...
C#中winform开发的地图定位-Google地图定位
百度地图定位百度地图定位百度地图定位百度地图定位百度地图定位百度地图定位百度地图定位百度地图定位百度地图定位百度地图定位百度地图定位百度地图定位百度地图定位百度地图定位百度地图定位百度地图定位百度地图...
高德地图定位SDK
最简单的百度地图定位器,最小化利用百度地图定位SDK,最最简单的一个定位实例
使用h5,js,百度api实现百度地图定位; 显示当前所在位置; 显示打卡范围; 计算与打卡地点距离。
小程序源码 小程序地图定位 (代码+截图)小程序源码 小程序地图定位 (代码+截图)小程序源码 小程序地图定位 (代码+截图)小程序源码 小程序地图定位 (代码+截图)小程序源码 小程序地图定位 (代码+截图)小程序源码 小...
asp.net百度地图定位asp.net百度地图定位
调用百度地图定位同时获取经纬度,应该要更改成自己的百度地图key值,还有手机别忘了开权限,打开GPS
极速IP地图定位器,定位IP,地图上显示
纠正高德地图定位位置偏差案例,只需要自己在高德开发中心申请的key替换到我的key,一运行就会弹出alert(经纬度)
用Qt4,使用百度地图api写的,地图定位显示,单个点定位,多个点连线定位。主要是这些功能,更多的可以自己完善
Delphi XE10加载百度地图定位SDK...其实也就是在Delphi中使用第三方jar包, 以及第三方jar包所需要的so文件
flutter + SpringBoot + MySql 实现高德地图定位获取位置信息插入数据库并计算出经纬度之间的距离
地图定位的小程序,可以学到微信地图组件的使用,快速集成到自己的项目中
微信小程序 地图定位 滴滴作业 (源代码+截图)微信小程序 地图定位 滴滴作业 (源代码+截图)微信小程序 地图定位 滴滴作业 (源代码+截图)微信小程序 地图定位 滴滴作业 (源代码+截图)微信小程序 地图定位 滴滴...