如何获得Android的纬度和经度?

如何在android2.3.3中获取当前的纬度和经度?

我尝试遵循这个但我无法运行程序。

我的代码

LatView = (TextView)findViewById(R.id.LatText); LngView = (TextView)findViewById(R.id.LngText); LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); double longitude = location.getLongitude(); double latitude = location.getLatitude(); 

在android清单中我把它。

    

请帮忙。 谢谢。

这是我在我的应用程序中找到设备当前位置,它工作正常:

 public class MyLocationActivity extends Activity implements LocationListener { private LocationManager mgr; private String best; public static double myLocationLatitude; public static double myLocationLongitude; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mgr = (LocationManager) getSystemService(LOCATION_SERVICE); dumpProviders(); Criteria criteria = new Criteria(); best = mgr.getBestProvider(criteria, true); Log.d("best provider", best); Location location = mgr.getLastKnownLocation(best); dumpLocation(location); //may be some intent here } public void onLocationChanged(Location location) { // TODO Auto-generated method stub dumpLocation(location); } public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } @Override protected void onPause() { super.onPause(); mgr.removeUpdates(this); } @Override protected void onResume() { super.onResume(); mgr.requestLocationUpdates(best, 15000, 1, this); } private void dumpLocation(Location l) { if (l == null) { myLocationLatitude = 0.0; myLocationLongitude = 0.0; } else { myLocationLatitude = l.getLatitude(); myLocationLongitude = l.getLongitude(); } } private void dumpProviders() { List providers = mgr.getAllProviders(); for (String p : providers) { dumpProviders(p); } } private void dumpProviders(String s) { LocationProvider info = mgr.getProvider(s); StringBuilder builder = new StringBuilder(); builder.append("name: ").append(info.getName()); } } 

这里MyLocationLatitude和MyLocationLongitude给出了你需要的lat和long的值。

您需要检查最后一个位置是否为空,如果是,那么您向GPS提供商询问新位置,如下所示:

 public class Example extends Activity implements LocationListener { LocationManager mLocationManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Location location = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); if(location != null && location.getTime() > Calendar.getInstance().getTimeInMillis() - 2 * 60 * 1000) { // Do something with the recent location if it is less than two minutes old } else { // Request a new location if necessary mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); } } public void onLocationChanged(Location location) { if (location != null) { // Do something withthe current location // If you only want one location update un-comment this line //mLocationManager.removeUpdates(this); } } public void onProviderDisabled(String arg0) {} public void onProviderEnabled(String arg0) {} public void onStatusChanged(String arg0, int arg1, Bundle arg2) {} }