Найти текущее местоположение широта и долгота

У меня проблема. Я хочу найти широту и долготу моего текущего местоположения в приложении Android. Мне просто нужно это, когда я стабильна с моим телефоном.

Мой код:

LocationManager locationManager; locationManager = (LocationManager)getSystemService (Context.LOCATION_SERVICE); Location location = locationManager.getLastKnownLocation (LocationManager.GPS_PROVIDER); locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER,0,0,(LocationListener) this); updateWithNewLocation(location); } private void updateWithNewLocation(Location location) { TextView myLocationText = (TextView)findViewById(R.id.myLocationText); String latLongString; if (location != null) { double lat = location.getLatitude(); double lng = location.getLongitude(); latLongString = "Lat:" + lat + "\nLong:" + lng; } else { latLongString = "No location found"; } myLocationText.setText("Your Current Position is:\n" + latLongString); } 

После запуска на эмуляторе я всегда нахожу «не найденное местоположение». Почему это так?

 public class GPSmap extends Activity { GeoPoint geoPoint; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LocationManager locManager; setContentView(R.layout.main); locManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE); locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 500.0f, locationListener); Location location = locManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); if (location != null) { double latitude = location.getLatitude(); double longitude = location.getLongitude(); } } private void updateWithNewLocation(Location location) { TextView myLocationText = (TextView) findViewById(R.id.text); String latLongString = ""; if (location != null) { double lat = location.getLatitude(); double lng = location.getLongitude(); latLongString = "Lat:" + lat + "\nLong:" + lng; } else { latLongString = "No location found"; } myLocationText.setText("Your Current Position is:\n" + latLongString); } private final LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { updateWithNewLocation(location); } public void onProviderDisabled(String provider) { updateWithNewLocation(null); } public void onProviderEnabled(String provider) {} public void onStatusChanged(String provider,int status,Bundle extras){} }; } 

Если вы будете использовать этот код, вы получите ответ.

GPS-радио не поддерживается постоянно, так как оно серьезно разряжает батарею. В тот момент, когда вы вызываете getLastKnownLocation() , радио, вероятно, выключено.

requestLocationUpdates() вам нужно выполнить requestLocationUpdates() , а затем дождаться, когда исправление будет requestLocationUpdates() ваш requestLocationUpdates() . В любое время после этого (пока вы не removeUpdates() ), getLastKnownLocation() должен вернуть null значение.

По умолчанию эмулятор может не иметь никакого связанного местоположения. Так что это не дает.

Чтобы отправить местоположение, перейдите на страницу DDMS в Eclipse и введите широту и долготу и нажмите «Отправить». Тогда вы сможете увидеть это в своем приложении.

Дайте мне знать, если у вас все еще есть проблемы.

У меня есть много учебников, но нашел это лучшее:

Использование Criteria и BestProvider

  /** PROCESS for Get Longitude and Latitude **/ locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); // getting GPS status isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); Log.d("msg", "GPS:"+isGPSEnabled); // check if GPS enabled if(isGPSEnabled){ /* longitude = 70.80079728674089; latitude = 22.29090332494221; */ Criteria criteria = new Criteria(); String provider = locationManager.getBestProvider(criteria, false); Location location = locationManager.getLastKnownLocation(provider); //new LoadPlaces().execute(); //Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); if(location != null) { longitude = location.getLongitude(); latitude = location.getLatitude(); Log.d("msg", "first lat long : "+latitude +" "+ longitude); //new LoadPlaces().execute(); }else { locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub longitude = location.getLongitude(); latitude = location.getLatitude(); Log.d("msg", "changed lat long : "+latitude +" "+ longitude); } }); } } else { showAlertforGPS(); }