0
votes

Android calcule le temps d'attente sur l'application de taxi

Android onlocationchanged renvoie une valeur différente même en l'absence de moment.

@Override
public void onLocationChanged(Location location) {
}


4 commentaires

Ajoutez plus de description pour faciliter la compréhension


Ce que je veux, c'est que je développe une application de taxi sur Android. lorsque l'application du conducteur se déplace, j'ai besoin de calculer la distance en temps réel et si le véhicule s'arrête, je dois calculer le temps d'attente.


@ayeshdon si vous voulez calculer le temps d'attente, peut-être que le moyen le plus simple de le faire est d'avoir un horodatage par défaut, et sur locationChanged, obtenez la différence entre l'horodatage initial et l'horodatage actuel. En outre, après cela, mettez à jour le paramètre initialTimestamp sur l'horodatage actuel.


Merci. mais lorsque le véhicule est à l'arrêt, une mise à jour de l'emplacement se produit. comment puis-je savoir clairement que le véhicule est arrêté


3 Réponses :


0
votes

Il s'agit d'un comportement attendu, la localisation fournie par le gestionnaire de localisation Android n'est pas précise à 100%, les localisations basées sur le réseau peuvent avoir une très mauvaise précision> 1000 m et dans ce cas, vous pouvez recevoir des lat / lon différents lorsque vous êtes stationnaire.

Nous définissons la précision horizontale comme le rayon de confiance de 68%. En d'autres termes, si vous dessinez un cercle centré à la latitude et à la longitude de cet emplacement, et avec un rayon égal à la précision, alors il y a une probabilité de 68% que l'emplacement réel soit à l'intérieur du cercle. Cette estimation de précision ne concerne que la précision horizontale et n'indique pas la précision du relèvement, de la vitesse ou de l'altitude si ceux-ci sont inclus dans cet emplacement.

https://developer.android.com/reference/android/location/Location.html#getAccuracy ()


1 commentaires

Ce que je veux, c'est que je développe une application de taxi sur Android. lorsque l'application du conducteur se déplace, j'ai besoin de calculer la distance en temps réel et si le véhicule s'arrête, je dois calculer le temps d'attente.



0
votes

Essayez le code ci-dessous

Pour obtenir la distance entre 2 emplacements

 public void startWaitTimer() {
            canceltimer();
            handlerTimer = null;
            handlerTimer = new Handler();
            handlerTimer.post(runnableTimer);
  }

    public void canceltimer() {
        if (handlerTimer != null) {
            handlerTimer.removeCallbacks(runnableTimer);
        }
    }


  public Runnable runnableTimer = new Runnable() {

        public void run() {
            try {
                MillisecondTime = MillisecondTime + 1000;

                UpdateTime = TimeBuff + MillisecondTime;

                Seconds = (int) (UpdateTime / 1000);

                tempSecond = Seconds;

                Minutes = Seconds / 60;

                Seconds = Seconds % 60;

                hourtime = Minutes / 60;

                MilliSeconds = (int) (UpdateTime % 1000);

                tvWaitingTime.setText(String.format(locale, "%02d", hourtime) + ":" + String.format(locale, "%02d", Minutes) + ":" + String.format(locale, "%02d", Seconds));

                handlerTimer.postDelayed(runnableTimer, 1000);

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
   };

calculez le temps d'attente quand vous le souhaitez

public static double distance(LatLng start, LatLng end){
      try {
          Location location1 = new Location("locationA");
          location1.setLatitude(start.latitude);
          location1.setLongitude(start.longitude);
          Location location2 = new Location("locationB");
          location2.setLatitude(end.latitude);
          location2.setLongitude(end.longitude);
          double distance = location1.distanceTo(location2);
          return distance;
       } catch (Exception e) {
          e.printStackTrace();
       }
     return 0;
  }


0 commentaires

0
votes

speed utilisée sur la charge utile de localisation.

La valeur de retour est le mètre par seconde

1,3 moyenne

If(payload.speed <= 1.3) {
     //used stopwatch for calculate total waiting time 
} else {
     //calculate distance
}

DONNEZ-MOI VOTRE FEEDBACK


0 commentaires