I am making a Capstone Project i badly needed help got stuck on this for a few days now, i want to send an location updates to Firebase when the user Clicks on a button. Обновления отправляются каждые 3 секунды при изменении местоположения . Но проблема в том, что он отправляет координаты только после нажатия кнопки, а не постоянно отправляет обновления при изменении местоположения. Вот мой код
Start = (Button) findViewById(R.id.btnLoc);
Stop = (Button) findViewById(R.id.btnStopSend);
mRef = new Firebase ("FIREBASE URL");
Start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Firebase busCoords = mRef.child("Location");
busCoords.setValue(location.getLatitude()+ ", "+location.getLongitude());
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
};
locationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
//noinspection MissingPermission
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,3000,1000,listener);
}
});
Stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(locationManager != null){
//noinspection MissingPermission
locationManager.removeUpdates(listener);
}
}
});
}
Используйте Geofire Api от firebase для получения обновлений местоположения. В вашем
onLocationChanged()
методе вы должны делать это так.Этот метод даст вам Латлонг каждый раз, когда он меняется.
Есть две вещи, которые я вижу, что происходит:
1) записывается только последнее записанное местоположение. Где вы имеете:
Вы должны положить:
Это приведет к перемещению каждого нового местоположения в качестве элемента списка в базу данных Firebase.
2) возможно, что расстояние между координатами также слишком велико:
Это предполагает расстояние по крайней мере 1000 метров, прежде чем он записывает другое местоположение. Вы можете рассмотреть вопрос об изменении этого на 2 или 3 метра в настоящее время во время тестирования.
Помогает ли это?