Ich möchte den aktualisierten Speicherort mit einem Intervall von 1 Minute bekommen, um den Marker auf der Karte und gleichzeitig, so dass die andere Anwendung meine sehen kann aktueller Standort, wenn ich mich bewege.So erhalten Sie den aktualisierten Standort mit einem Intervall von 1 Minute ANDROID
Also hier ist mein Code, aber traurig zu sagen, es wird den Standort nicht aktualisieren, auch wenn der Code bereits in der onLocationChanged
Methode ist. Aber ich bin mir nicht sicher, ob mein Code stimmt.
@Override
public void onLocationChanged(Location location) {
mLastLocation = location;
if (mCurrLocationMarker != null) {
mCurrLocationMarker.remove();
}
latlng = new LatLng(location.getLatitude(), location.getLongitude());
lat = String.valueOf(location.getLatitude());
lLong = String.valueOf(location.getLongitude());
driverID = pref.getString("driverID", "");
final Query userName = ref.orderByChild("username").equalTo(username);
userName.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapShot : dataSnapshot.getChildren()) {
if (!snapShot.child("latitude").equals(lat) || !snapShot.child("longitude").equals(lLong)) {
snapShot.getRef().child("latitude").setValue(lat);
snapShot.getRef().child("longitude").setValue(lLong);
snapShot.getRef().child("currentLocation").setValue(strOrigin);
Toast.makeText(MapsActivity.this, "old lat: " + snapShot.child("latitude").getValue().toString() + "\nnew lat: " + lat +
"\nold long: " + snapShot.child("longitude").getValue().toString() + "\nnew long: " + lLong, Toast.LENGTH_LONG).show();
}
}
markerOptions = new MarkerOptions();
markerOptions.position(latlng);
markerOptions.title("Current Location");
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA));
mCurrLocationMarker = mMap.addMarker(markerOptions);
//move map camera
mMap.moveCamera(CameraUpdateFactory.newLatLng(latlng));
mMap.animateCamera(CameraUpdateFactory.zoomTo(11));
}
@Override
public void onCancelled(FirebaseError firebaseError) {
Toast.makeText(MapsActivity.this, "on cancelled child latlng: " + firebaseError.getMessage(), Toast.LENGTH_SHORT).show();
}
});
Geocoder geocoder;
List<android.location.Address> addresses;
geocoder = new Geocoder(this, Locale.getDefault());
StringBuilder result = new StringBuilder();
try {
addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
if (addresses.size() > 0) {
Address address = addresses.get(0);
result.append(address.getAddressLine(0)).append(", ");
result.append(address.getLocality()).append(", ");
result.append(address.getCountryName());
}
strOrigin = result.toString();
Toast.makeText(MapsActivity.this, "origin" + strOrigin, Toast.LENGTH_SHORT).show();
// onSendOrigin(r);
} catch (IOException e) {
e.printStackTrace();
}
//stop location updates
if (mGoogleApiClient != null) {
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
}\
}
Postleitzahl von LocationRequest –
https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest –