GPS - Prise de la distance,du temps lors de l'exécution et de la marche
j'ai une situation où j'ai besoin d'utiliser le GPS de la technique.
j'ai besoin de trouver la distance entre deux points lorsque la personne est en marche.
Lorsque la personne commence à marcher, il va cliquer sur Start button
et quand il s'arrête, il clique sur stop button
après cela, il devrait lui montrer
1.le temps pris
2.La Distance parcourue en Km.
3.d'où à où(nom) par exemple: de a à b
Ai-je besoin de google maps pour cela?
J'ai vu le code ici lien pour obtenir l'emplacement actuel qui me donne de la latitude, de la longitude.
s'il vous plaît aider comment faire pour aller avec ce
**
Édité:
**
C'est le code, je suis en utilisant
private EditText editTextShowLocation;
private Button buttonGetLocation;
private ProgressBar progress;
private LocationManager locManager;
private LocationListener locListener = new MyLocationListener();
private boolean gps_enabled = false;
private boolean network_enabled = false;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editTextShowLocation = (EditText) findViewById(R.id.editTextShowLocation);
progress = (ProgressBar) findViewById(R.id.progressBar1);
progress.setVisibility(View.GONE);
buttonGetLocation = (Button) findViewById(R.id.buttonGetLocation);
buttonGetLocation.setOnClickListener(this);
locManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
}
@Override
public void onClick(View v) {
progress.setVisibility(View.VISIBLE);
//exceptions will be thrown if provider is not permitted.
try {
gps_enabled = locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
} catch (Exception ex) {
}
try {
network_enabled = locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
} catch (Exception ex) {
}
//don't start listeners if no provider is enabled
if (!gps_enabled && !network_enabled) {
AlertDialog.Builder builder = new Builder(this);
builder.setTitle("Attention!");
builder.setMessage("Sorry, location is not determined. Please enable location providers");
builder.setPositiveButton("OK", this);
builder.setNeutralButton("Cancel", this);
builder.create().show();
progress.setVisibility(View.GONE);
}
if (gps_enabled) {
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener);
}
if (network_enabled) {
locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locListener);
}
}
class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location location) {
if (location != null) {
//This needs to stop getting the location data and save the battery power.
locManager.removeUpdates(locListener);
String londitude = "Londitude: " + location.getLongitude();
String latitude = "Latitude: " + location.getLatitude();
String altitiude = "Altitiude: " + location.getAltitude();
String accuracy = "Accuracy: " + location.getAccuracy();
String time = "Time: " + location.getTime();
editTextShowLocation.setText(londitude + "\n" + latitude + "\n" + altitiude + "\n" + accuracy + "\n" + time);
progress.setVisibility(View.GONE);
}
}
@Override
public void onProviderDisabled(String provider) {
//TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
//TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
//TODO Auto-generated method stub
}
}
@Override
public void onClick(DialogInterface dialog, int which) {
if(which == DialogInterface.BUTTON_NEUTRAL){
editTextShowLocation.setText("Sorry, location is not determined. To fix this please enable location providers");
}else if (which == DialogInterface.BUTTON_POSITIVE) {
startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
}
}
C'est de la Longitude la Latitude dont je suis saisie de emulator control.
En cela, je suis en entrant manuellement les détails de la longitude et de la latitude
en allant à window->showview->other->emulator control
pour les essais dans l'émulateur
mais ce que je besoin est, je vais avoir deux edittext où je entrer le nom du lieu(A) et (B)
il devrait me donner la distance
s'il vous plaît aider
OriginalL'auteur Goofy | 2012-03-12
Vous devez vous connecter pour publier un commentaire.
essayez d'utiliser Google Matrice de Distance Api
https://developers.google.com/maps/documentation/distancematrix/
OriginalL'auteur Satish
Vous pouvez utiliser currentTimeinMillis() pour obtenir de début et heure de fin de votre voyage.
Vous pouvez ensuite utiliser les formules explique ici pour trouver la distance et enfin, vous devrez utiliser un service de géocodage inverse comme Nominatim pour être en mesure d'obtenir l'adresse d'un lieu de vos coordonnées GPS.
Cela étant dit, la formule de la distance, vous obtiendrez la distance entre un point et l'autre, de ne pas le déplacement lui-même. Si ce n'est pas ce dont vous avez besoin, mais vous voulez que la distance réelle parcourue, vous aurez besoin de calculer cette valeur à un intervalle de temps plus court.
OriginalL'auteur npinti
Vous pouvez trouver la distance entre deux points(en termes de latitude et de longitude) par l'utilisation des La Trigonométrie Sphérique
Venir à l'heure de faire usage de simples objets date et de comparer les startTime et endTime.
(OU)
Vous pouvez obtenir la distance approximative à l'aide de code ci-dessous
Veuillez voir mon edit
OriginalL'auteur Sai mukesh
Pour obtenir la distance entre 2points(A à B) il existe une fonction appelée distanceTo dans android.
Par exemple
double distance = startLocation.distanceTo(finishLocation)/1000;
Pour le temps pris comme npinti dit que vous pouvez utiliser currentTimeinMillis() ou vous pouvez également utiliser la Minuterie et de l'afficher à l'utilisateur lorsqu'il clique sur le bouton démarrer. C'est un peu comme un chronomètre.
Édité
Place Un - New York
Place B - Paris
Dans ce cas, vous devez d'abord convertir la chaîne en position(j'.e vous avez besoin de latitude, & longitude). Pour cela, vous devez utiliser le concept de Géocodage.
Après cela, vous pouvez calculer la distance entre le distanceTo méthode.
Espérons que cela va aider....
Plz voir la modifier.
android-codage.blogspot.dans/2011/07/... se référer à ce lien...belle explication avec démo pour obtenir l'emplacement de chaîne.....
merci l'homme c'est ce dont j'avais besoin.Mais j'ai aussi besoin de savoir si je peux réaliser ce genre? j'ai deux boutons et de Démarrer et d'Arrêter quand il clique sur démarrer, nous devons obtenir de l'emplacement actuel avec lat et long et quand je clique sur arrêter de nouveau j'ai besoin d'obtenir la position actuelle avec le lat et long et donc que je peux calculez la distance sans entrer dans les lieux de nom
Oui, vous pouvez le faire. Cliquez sur le bouton, vous appelez la méthode pour obtenir de l'emplacement actuel. De cette façon, vous pouvez le faire.
OriginalL'auteur
Je suppose que la question est l'une de marche..
Êtes-vous marcher dans les rues, ou comme l'oiseau?
Si c'est des rues, et votre connecté au net, utilisez l'api google.. Il calcule le routage basé sur deux points et renvoie les données XML.. Doit être assez facile à comprendre.
Si c'est à vol d'oiseau.. eh bien, il suffit de faire (a*a) + (b*b) = (c*c) c'est de loin la plus facile..
Vous pourriez avoir votre utilisateur appuyez sur pour de grands virages.. Ou vous pouvez garder un praticable en cours d'exécution toutes les 10 secondes à partir de quand ils ont frappé démarrer, et tracer les points. Encore un*a+b*b=c*c mais tout un tas d'étapes.
Bien sûr, vous devez l'exécuter dans un service.. Et étant donné le choix, j'irais avec cette option. Vous pouvez régler le temps de cycle en fonction de la vitesse de déplacement. Plus rapide serait plus petites pauses.
Il nécessite moins sur votre dataplan.
MODIFIER
Ah.. je vois ce que vous cherchez. Ce n'est pas ce que j'ai pensé que vous demandaient.
Simplifier.. convertir lat/long pour GPS. et puis faire un simple calcul sur le dernier point stockées
merci de m'aider avec cette question stackoverflow.com/questions/9664587/...
OriginalL'auteur baash05