Mueva todos los marcadores en el mapa a su ubicación actual actualizada / nueva periódicamente a medida que los usuarios se mueven

Estoy desarrollando una aplicación de Android donde algunos usuarios abren la misma actividad desde sus dispositivos. Hay un mapa en esta actividad y cuando los usuarios abren esta actividad desde sus dispositivos, sus coordenadas de ubicación se obtienen de Firebase y se muestra un marcador basado en estas coordenadas en el mapa.

Aquí está mi código:

    acceptingUserReference.child(requestID).child(key).addListenerForSingleValueEvent(new ValueEventListener() {
                                @Override
                                public void onDataChange(DataSnapshot dataSnapshot) {

                                    if (dataSnapshot.getValue() != null) {
                                            final Map<String, String> newAcceptedUser = (Map<String, String>) dataSnapshot.getValue();

                                            nameOfP.add(newAcceptedUser.get("pName"));                      
                                            cLatP.add(newAcceptedUser.get("currentLat").trim());
                                            cLngP.add(newAcceptedUser.get("currentLng").trim());

                                            addMarkers();

                                            //Check map is loaded
                                            mMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
                                                @Override
                                                public void onMapLoaded() {
                                                     mMap.getUiSettings().setZoomControlsEnabled(true);
                                                    mMap.getUiSettings().setMapToolbarEnabled(true);
                                                    mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
                                                    mMap.setMaxZoomPreference(19.0f);  mMap.setMyLocationEnabled(true);

                                                }
                                            });
                                @Override
                                public void onCancelled(DatabaseError databaseError) {

                                }
                            });

Aqui estaaddMarkers() método:

public void addMarkers() {
        mMap.clear();
        venueMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(venueLat), Double.parseDouble(venueLng)));
        markersList.add(venueMarker);
        for (int i = 0; i < nameOfP.size(); i++) {
            p = mMap.addMarker(new MarkerOptions().position(new LatLng(Double.valueOf(cLatP.get(i)), Double.valueOf(cLngP.get(i)))).title(nameOfP.get(i).trim()).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
            markersList.add(pMarker);
        }
}

Aqui estaonLocationChanged():

@Override
public void onLocationChanged(Location location) {
    mCurrentLocation = location;
    currentLtAU = mCurrentLocation.getLatitude();
    currentLnAU = mCurrentLocation.getLongitude();
}

Los usuarios siguen avanzando hacia una ubicación específica.

Lo que quiero es para mover los marcadores respectivos a la nueva ubicación a medida que los usuarios se mueven para que todos puedan ver dónde están cada uno actualmente. Por favor, ayúdame a resolverlo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta