Android获取当前位置的经纬度
2017-03-08 18:15
405 查看
前言
有些APP只是想简单的获取当前位置的经纬度,不想使用第三方定位(百度,高德)。那么我这里就说说利用SDK自带的LocationManager 类来获取当前的经纬度。这里实现分别通过GPS或NetWork来获取当前设备的经纬度。1,因为GPS有时候信号弱会出现getLastKnownLocation为null,这时候我就采取网络来获取当前的位置。
主要代码如下:/** * 获取经纬度 * * @param context * @return */ private String getLngAndLat(Context context) { double latitude = 0.0; double longitude = 0.0; LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { //从gps获取经纬度 Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); } else {//当GPS信号弱没获取到位置的时候又从网络获取 return getLngAndLatWithNetwork(); } } else { //从网络获取经纬度 locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener); Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); } } return longitude + "," + latitude; } //从网络获取经纬度 public String getLngAndLatWithNetwork() { double latitude = 0.0; double longitude = 0.0; LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener); Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); } return longitude + "," + latitude; } LocationListener locationListener = new LocationListener() { // Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数 @Override public void onStatusChanged(String provider, int status, Bundle extras) { } // Provider被enable时触发此函数,比如GPS被打开 @Override public void onProviderEnabled(String provider) { } // Provider被disable时触发此函数,比如GPS被关闭 @Override public void onProviderDisabled(String provider) { } //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发 @Override public void onLocationChanged(Location location) { } };
2,记得在清单文件中加入以下权限
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
Demo地址:https://github.com/Alpha58/LocationDemo
相关文章推荐
- Android之获取当前位置的经纬度
- android通过高德地图定位sdk获取当前位置的经纬度(只是经纬度哦)
- 【总结备用】 Android中通过GPS或NetWork获取当前位置的经纬度
- 【Android 】获取当前位置的经纬度
- Android中通过GPS或NetWork获取当前位置的经纬度
- Android获取当前位置经纬度(非第三方地图集成)
- Android中通过GPS或NetWork获取当前位置的经纬度
- Android中通过GPS或NetWork获取当前位置的经纬度
- 百度Android定位SDK实现获取当前经纬度及位置
- Android中通过GPS或NetWork获取当前位置的经纬度
- android_最简单方法根据经纬度信息获取到当前的位置信息
- android定位:获取当前位置的经纬度
- Android中通过GPS或NetWork获取当前位置的经纬度
- (转载)百度Android定位SDK实现获取当前经纬度及位置
- Android获取当前位置的经纬度数据
- android中获取位置(一)--利用locationManager获取当前经纬度信息
- 百度Android定位SDK实现获取当前经纬度及位置
- Android中通过GPS或NetWork获取当前位置的经纬度
- Android根据已知的经纬度坐标获取当前位置
- Android中通过GPS或NetWork获取当前位置的经纬度