Я использую geoquery, чтобы при входе в область другого устройства данные загружались в базу данных Firebase. Проблема в том, что он не работает с onKeyExited при выходе из области (onKeyEntered работает только в первый раз, если он снова входит в область, он не работает). GeoQueryEventListener не обновляется автоматически?
есть идеи?
final DatabaseReference drivers = FirebaseDatabase.getInstance().getReference(pickup);
GeoFire gfDrivers = new GeoFire(drivers);
final GeoQuery geoQuery = gfDrivers.queryAtLocation(new GeoLocation(mLastLocation.getLatitude(), mLastLocation.getLongitude()), radius);
geoQuery.removeAllListeners();
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(String key, GeoLocation location) {
if (!DriverFound) {
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference tokens = db.getReference();
Token token = new Token(FirebaseInstanceId.getInstance().getToken());
tokens.child("TokensC").child(key).child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(token);
keyp= key;
DriverFound = true;
}
}
@Override
public void onKeyExited(String key) {
DriverFound = false;
DatabaseReference PaasajeroFinded = FirebaseDatabase.getInstance().getReference().child("TokensC").child(key).child(FirebaseAuth.getInstance().getCurrentUser().getUid());
PaasajeroFinded.removeValue();
}
@Override
public void onKeyMoved(String key, GeoLocation location) {
}
@Override
public void onGeoQueryReady() {
if (!DriverFound && radius < LIMIT) {
geoQuery.removeAllListeners();
if (keyp != null)
{
DatabaseReference PaasajeroFinded = FirebaseDatabase.getInstance().getReference().child("TokensC").child(macumba).child(FirebaseAuth.getInstance().getCurrentUser().getUid());
PaasajeroFinded.removeValue();
}
}
}
@Override
public void onGeoQueryError(DatabaseError error) {
}
});