Я создаю систему отслеживания транспорта publi c в реальном времени, используя Android Studio и Firebase. Я создал кнопку переключения, на которой пользователь переключается, местоположение начнет отслеживаться. Проблема, с которой я столкнулся, заключается в том, что данные о местоположении отправляются в базу данных только один раз. Но для приложений местоположение отслеживается нормально.
Мне нужно каждый раз, когда обновление местоположения должно обновляться в базе данных. Это ошибка или ошибка в моем коде?
Это функция обратного вызова местоположения:
//Location Callback
locationCallback = new LocationCallback(){
@Override
public void onLocationResult(LocationResult locationResult) {
if(locationResult == null) {
return;
}
Location driverLocation = locationResult.getLastLocation();
Toast.makeText(DriverDetail.this, driverLocation.getLatitude()+", "+driverLocation.getLongitude()
, Toast.LENGTH_SHORT).show();
Log.d("Location Update: ", "onLocationResult: Location is: "
+driverLocation.getLatitude()+", "+driverLocation.getLongitude());
}
};
Это код кнопки переключения
locate_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View button) {
if (locate_btn.isChecked()) {
// The toggle is enabled
Toast.makeText(DriverDetail.this, "Start tracking location", Toast.LENGTH_SHORT).show();
final String value_lat = String.valueOf(driverLocation.getLatitude());
final String value_lng = String.valueOf(driverLocation.getLongitude());
getLocationUpdates();
ref.child(firebaseUser.getUid()).child("Latitude").setValue(value_lat);
ref.child(firebaseUser.getUid()).child("Longitude").setValue(value_lng);
}
else {
// The toggle is disabled
fusedLocationProviderClient.removeLocationUpdates(locationCallback);
Toast.makeText(DriverDetail.this, "Stop tracking location", Toast.LENGTH_SHORT).show();
}
}
});
Это запрос местоположения, который я установил.
//Update Location
private void getLocationUpdates(){
locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(5000);
locationRequest.setFastestInterval(3000);
fusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, Looper.getMainLooper());
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
}