Я следую учебному пособию, в котором я разрабатываю такое приложение, как Uber. Когда кто-либо входит в приложение в качестве дайвера, должен вызываться метод onLocationResult, и в этом методе запись для драйвера помещается в таблицу Firebase с именем DriversAvailable. По какой-то причине эта таблица не создается в моей БД, и я почти уверен, что это так, потому что метод onLocationResult не вызывается. В моем методе onLocationResult есть переменная на переменную с именем customerID, если она пуста, тогда местоположение драйвера помещается в таблицу DriversAvailable. customerID будет пустым, пока клиент не войдет в систему и не нажмет «кнопку вызова Uber», поэтому, когда я тестирую это с двумя телефонами и регистрируюсь как драйвер, я должен видеть запись в DriversAvailable с указанием местоположения драйвера как ребенка.
LocationCallback Callback = new LocationCallback(){
@Override
public void onLocationResult(LocationResult locationResult) {
for(Location location : locationResult.getLocations()){
if(getApplicationContext()!=null){
if(!customerID.equals("") && mLastLocation!=null && location != null){
rideDistance += mLastLocation.distanceTo(location)/1000;
}
mLastLocation = location;
LatLng latLng = new LatLng(location.getLatitude(),location.getLongitude());
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
mMap.animateCamera(CameraUpdateFactory.zoomTo(11));
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference refAvailable = FirebaseDatabase.getInstance().getReference("DriversAvailable");
DatabaseReference refWorking = FirebaseDatabase.getInstance().getReference("DriversWorking");
GeoFire geoFireAvailable = new GeoFire(refAvailable);
GeoFire geoFireWorking = new GeoFire(refWorking);
switch (customerID){
case "":
geoFireWorking.removeLocation(userId);
geoFireAvailable.setLocation(userId, new GeoLocation(location.getLatitude(), location.getLongitude()));
break;
default:
geoFireAvailable.removeLocation(userId);
geoFireWorking.setLocation(userId, new GeoLocation(location.getLatitude(), location.getLongitude()));
break;
}
}
}
}
};