Jestem nowym koderem Androida i mam problem z żądaniem aktualizacji mojej lokalizacji.Jak to działa - requestLocationUpdates() + LocationRequest/Listener
Pracuję z samouczkami od http://developer.android.com/training/location/receive-location-updates.html.
Moja aplikacja może obsługiwać wyjątki, uzyskiwać odpowiednio szerokość i długość geograficzną, a geocoder może obsłużyć wyświetlanie adresu. Ale pytam o lokalizację tylko raz - lub kiedy zmiany lokalizacji. Chciałbym robić odstępy czasowe. Teraz zacząłem wdrażaniu kod z tutoriali i wygląda na to, że:
public class MainActivity extends Activity implements
GooglePlayServicesClient.ConnectionCallbacks,
GooglePlayServicesClient.OnConnectionFailedListener,
LocationListener {
private static final int MILLISECONDS_PER_SECOND = 1000;
public static final int UPDATE_INTERVAL_IN_SECONDS = 5;
private static final long UPDATE_INTERVAL =
MILLISECONDS_PER_SECOND * UPDATE_INTERVAL_IN_SECONDS;
private static final int FASTEST_INTERVAL_IN_SECONDS = 1;
private static final long FASTEST_INTERVAL =
MILLISECONDS_PER_SECOND * FASTEST_INTERVAL_IN_SECONDS;
private TextView tvStatus;
private TextView tvLatitude;
private TextView tvLongitude;
LocationRequest mLocationRequest;
LocationClient mLocationClient;
Location mCurrentLocation;
boolean bNetworkEnabled;
boolean bGPSEnabled;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvStatus = (TextView)findViewById(R.id.tvStatus);
tvLatitude = (TextView)findViewById(R.id.tvLatitude);
tvLongitude = (TextView)findViewById(R.id.tvLongitude);
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(UPDATE_INTERVAL);
mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
mLocationClient = new LocationClient(this, this, this);
checkProviders();
}
Więc nie są już wdrażane i interwały prośba lokalizacja. Ale w linku podałem przed komentarzem, który powinienem użyć gdzieś requestLocationUpdates()
(prawdopodobnie onCreate()
, onStart()
i usunięcie żądania na onStop()
), ale mam z tym problem. Tak więc, Eclipse pokazuje mi 3 metody:
requestLocationUpdates(LocationRequest request, LocationListener listener)
requestLocationUpdates(LocationRequest request, PendingIntent CallbackIntent)
requestLocationUpdates(LocationRequest request, LocationListener listener, Looper looper)
Tak więc pierwsza myślę, że jest najbardziej odpowiednia w tym miejscu. Co powinienem umieścić w gnieździe LocationListener
? Proszę o pomoc z niewielkim wyjaśnieniem, jak to działa.
Dokładnie to, co zepsułem.Dziękuję Ci. :) –
Więc wiem, że 'requestLocationUpdates' zwróci Location to PendingIntent, ale gdzie mogę uzyskać dostęp do zwróconej lokalizacji? – geckob
Aby wywołać to żądanie, musisz zaimplementować klasę LocationUpdates. Ta implementacja ma metodę OnLocationChanged (lokalizacja lokalizacji). Tutaj uzyskujesz dostęp do zwróconej lokalizacji. klasa publiczna MyLocationListener implementuje LocationListener {...} – Totalys