web-dev-qa-db-fra.com

Android - Comment obtenir la position actuelle (latitude et longitude)?

J'utilise le code suivant pour obtenir l'emplacement actuel, à savoir (latitude et longitude), mais je n'obtiens pas l'emplacement actuel (latitude et longitude).

Quelqu'un sait pourquoi?

package com.ram.currentlocation;

import Android.app.Activity;    
import Android.content.Context;
import Android.location.Location;
import Android.location.LocationListener;
import Android.location.LocationManager;
import Android.os.Bundle;
import Android.widget.Toast;

public class Location_Gps extends Activity
{

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);

      /* Use the LocationManager class to obtain GPS locations */
      LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

      LocationListener mlocListener = new MyLocationListener();
      mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
    }

    /* Class My Location Listener */
    public class MyLocationListener implements LocationListener
    {

      @Override
      public void onLocationChanged(Location loc)
      {

        loc.getLatitude();
        loc.getLongitude();

        String Text = "My current location is: " +
        "Latitud = " + loc.getLatitude() +
        "Longitud = " + loc.getLongitude();

        Toast.makeText( getApplicationContext(), Text, Toast.LENGTH_SHORT).show();
      }

      @Override
      public void onProviderDisabled(String provider)
      {
        Toast.makeText( getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT ).show();
      }

      @Override
      public void onProviderEnabled(String provider)
      {
        Toast.makeText( getApplicationContext(), "Gps Enabled", Toast.LENGTH_SHORT).show();
      }

      @Override
      public void onStatusChanged(String provider, int status, Bundle extras)
      {

      }
    }
}

P.S .: J'utilise les autorisations suivantes dans le fichier manifest:

<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission Android:name="Android.permission.ACCESS_CORSE_LOCATION"/>
17
Jeeva

Vous avez une erreur dans votre fichier manifeste. Le bon est:

<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION"/>
25
evilone

Vous devez envoyer la correction d'emplacement à l'émulateur, car l'émulateur est un logiciel que vous devez fournir avec la correction d'emplacement.

Si vous utilisez Eclipse, accédez à

Window -> Show view -> Other

Sélectionnez Android et recherchez le contrôle de l'émulateur.
Après u voir la fenêtre de contrôle de l'émulateur, accédez aux commandes de localisation.
Comme vous le voyez sur la photo ci-dessous

sending loc fix

Après avoir envoyé le correctif loc, vous pouvez utiliser

Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

lm est LocationManager objet donc 90% du travail est fait;)

À votre santé!

5
Santosh Kumar

Dans votre manifeste Android manifeste avez-vous défini les autorisations?

Android.permission.ACCESS_FINE_LOCATION

En ce qui concerne uniquement les coordonnées (0,0), vous utilisez probablement l'émulateur. Si vous utilisez Eclipse, accédez au contrôle de l'émulateur et en bas, vous pouvez envoyer les fausses coordonnées à l'appareil

3
manno23

Vous n'utilisez pas l'autorisation appropriée. La bonne est:

<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />

Soit dit en passant, votre demande ne peut être satisfaite que par:

<using-permission Android:name="ACCESS_FINE_LOCATION" />

Il n'y a donc pas besoin de ACCESS_COARSE_LOCATION

1
Noman