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"/>
Vous avez une erreur dans votre fichier manifeste. Le bon est:
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION"/>
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
Après avoir envoyé le correctif loc, vous pouvez utiliser
Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Où lm
est LocationManager
objet donc 90% du travail est fait;)
À votre santé!
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
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