其实一般的方法就可以获取到经纬度,网上这样的例子也很多
方法一:
@SuppressLint("MissingPermission") private static Location getLastKnownLocation(Activity activity) { LocationManager mLocationManager = (LocationManager) activity.getApplicationContext().getSystemService(LOCATION_SERVICE); List<String> providers = mLocationManager.getProviders(true); Location bestLocation = null; for (String provider : providers) { Location l = mLocationManager.getLastKnownLocation(provider); if (l == null) { continue; } if (bestLocation == null || l.getAccuracy() < bestLocation.getAccuracy()) { bestLocation = l; } } return bestLocation; }
但是在一些做过手脚的Android系统设备就是不行,于是:
方法二:
@SuppressLint("MissingPermission") private static void getLastKnownLocation2(Activity activity) { LocationManager mLocationManager = (LocationManager) activity.getApplicationContext().getSystemService(LOCATION_SERVICE); mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 0, locationListener); mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 3000, 0, locationListener); }
private static LocationListener locationListener = new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle arg2) { Log.d("cyp", "onStatusChanged: "); } @Override public void onProviderEnabled(String provider) { Log.d("cyp", "onProviderEnabled: " + provider ); } @Override public void onProviderDisabled(String provider) { Log.d("cyp", "onProviderDisabled: " + provider); } @Override public void onLocationChanged(Location location) { //如果位置发生变化,重新显示 Log.d("cyp", "onLocationChanged:经度 "+location.getLongitude()+"纬度"+location.getLatitude()); //这边就是获取到的经纬度,测试估计要4到5分钟才能获取得到,耐心点等等吧 } };
这边直接获取代码 LocationUtil.java-Java文档类资源-CSDN下载