Próbuję najpierw wygenerować lokalizację za pośrednictwem dostawcy GPS, jeśli otrzymam wartość null generowaną przez operatora sieci. Mój problem polega na tym, że dostawca sieci dwa razy generuje tę samą lokalizację. Wysyłam informacje do bazy danych i wysyła tę samą lokalizację w tym samym czasie (te same sekundy!). Oto kod:Dostawca sieci generuje 2 kopie lokalizacji
gpsLocation = requestUpdatesFromProvider(LocationManager.GPS_PROVIDER, R.string.not_support_gps);
networkLocation = requestUpdatesFromProvider(LocationManager.NETWORK_PROVIDER, R.string.not_support_gps);
// Update the UI immediately if a location is obtained.
if (gpsLocation != null)
updateUILocation(gpsLocation);
else
updateUILocation(networkLocation);
Oto requestUpdateFromProvider:
private Location requestUpdatesFromProvider(final String provider, final int errorResId)
{
Location location = null;
if (mLocationManager.isProviderEnabled(provider))
{
mLocationManager.requestLocationUpdates(provider, TEN_SECONDS, TEN_METERS*2, listener);
location = mLocationManager.getLastKnownLocation(provider);
}
else
{
Toast.makeText(this, errorResId, Toast.LENGTH_LONG).show();
}
return location;
}
Oto updateUILocation:
private void updateUILocation(Location location)
{
// We're sending the update to a handler which then updates the UI with the new location.
Message.obtain(mHandler,
UPDATE_LATLNG,
location.getLatitude() + ", " + location.getLongitude()).sendToTarget();
// Bypass reverse-geocoding only if the Geocoder service is available on the device.
if (mGeocoderAvailable)
doReverseGeocoding(location);
}
Oto obsługi:
mHandler = new Handler()
{
public void handleMessage(Message msg)
{
if(msg.what == UPDATE_ADDRESS) //UPDATE_ADDRESS = 1
{
LocationService.this.address = (String) msg.obj; // update a string that show the user address
new SendLocation(LocationService.this.id,(String)msg.obj);//send the info to the db.
}
}
};
SendLocation robi to, co powinien zrobić poprawnie, więc nie powinieneś zwracać na to uwagi.
EDIT
Zapomniałem powiedzieć, że pierwszy kawałek kodu jest metoda zwana od konstruktora.