LocationManager mlocManager = (LocationManager) getSystemService (Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener);
//init();
}
/* Class My Location Listener */
public class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location loc)
{
//_pd.dismiss();
loc.getLatitude();
loc.getLongitude();
String Text = "My current location is: " +"Latitud = " + loc.getLatitude() +"Longitud =" + loc.getLongitude();
txtInfo.setText(Text);
Toast.makeText( getApplicationContext(),Text,Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderDisabled(String provider)
{
Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT ).show();
}
@Override
public void onProviderEnabled(String provider)
{
Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
{
}
}
это мой код.... SOmetimes я получаю gps-координаты, и иногда я не понимаю, почему это происходит?
Получение Geo Fix с использованием GPS требует длительного времени, поэтому вам необходимо переключиться между провайдером Wirless и GPS, чтобы надежно получить Geo. Хорошая идея сначала опросить беспроводную сеть и, если она не включена/доступна, а затем отказать провайдеру GPS.
Хорошая ссылка: Android-location-providers-gps-network-passive
Это связано с тем, что некоторые местоположения не показывают широту и долготу в android. Это не большая проблема, вы просто проверяете, что ваш lat и lng возвращает null или нет. Если он возвращает null, вы просто показываете простое сообщение, в этом месте нет lat и lng.