Android通过手机GPS获取经纬度方法
16lz
2021-01-26
android 调用gps获取经纬度的方法大同小异,实则差不了多少。但是使用起来,有的方法看起来很冗杂,而且很不好用。下面为大家介绍中很简单的方法,而且是实时监听位置的变化。
首先定义:
private Location location;
private String locationProvider;private LocationManager locationManager;
然后再获取经纬度的时候直接调用getLocationInfo()这个方法,获取到location,就可以了。
private void getLocationInfo() { locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); // 获取所有可用的位置提供器 List providers = locationManager.getProviders(true); if (providers.contains(LocationManager.GPS_PROVIDER)) { // 如果是GPS locationProvider = LocationManager.GPS_PROVIDER; }// else if (providers.contains(LocationManager.NETWORK_PROVIDER)) {// // 如果是Network// locationProvider = LocationManager.NETWORK_PROVIDER;// } else { Toast.makeText(this, "没有可用的位置提供器", Toast.LENGTH_SHORT).show(); return; } // 获取Location Location location = locationManager.getLastKnownLocation(locationProvider); if (location != null) { // 不为空,显示地理位置经纬度 String jd =location.getLongitude(); String wd =location.getLatitude(); } else { ToastUtils.showToast(this, "GPS未定位到位置"); System.out.println("GPS未定位到位置,请查看是否打开了GPS ?"); } // 监视地理位置变化 locationManager.requestLocationUpdates(locationProvider, 2000, 1, locationListener); }
温馨提示:在android 5.0以后除了在AndroidManifest.xml里面申请权限之外,还要在调用方法之前去动态申请定位权限。
private void requestPermission() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_COARSE_LOCATION)) { ToastUtils.showToast(this, "您已经拒绝过一次了"); } ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, 0); }}
更多相关文章
- Android(安卓)lbs位置服务
- Android根据当前时间获取前面的时间日期,或者之后的时间日期
- 获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图
- Android(安卓)Handler消息机制中的ThreadLocal源码分析
- 获取手机的mac地址
- android 初始化时获得控件位置,宽高的属性
- Android(安卓)Task的应用
- android 中Bitmap 和 Drawable互换
- Android获取屏幕宽高新方法