getLastKnownLocation méthode renvoie toujours null
J'ai un problème de position fixe. J'utilise getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
mais toujours de retourner la valeur null, j'ai mis les autorisations de votre AndroidManifest.xml
.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
et activée dans les Paramètres --> Localisation et Sécurité --> localisation via le réseau.
TextView locationShow = (TextView) this.findViewById(R.id.location);
double latitude = 0.0, longitude = 0.0;
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
else {
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
if (location != null) {
Log.i("SuperMap", "Location changed : Lat: " + location.getLatitude() + " Lng: " +
location.getLongitude());
}
}
public void onProviderDisabled(String provider) {
}
public void onProviderEnabled(String provider) {
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
};
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0,
locationListener);
Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
locationShow.setText("经度:" + latitude + "纬度:" + longitude);
Je trouve que d'autres applications puissent montrer l'emplacement correctement, alors peut-être il ya quelque chose de mal avec mon code.
OriginalL'auteur peter_feng | 2011-07-28
Vous devez vous connecter pour publier un commentaire.
getLastKnownLocation()
donner le signal de mise en cache de l'emplacement.Vous essayez d'obtenir la mise en cache de l'emplacement du Fournisseur de Réseau. Vous devez attendre quelques minutes jusqu'à ce que vous obtenez valide d'un correctif. Depuis le Réseau du Fournisseur de cache est vide, vous êtes évidemment l'obtention d'un
null
.Bien sûr, vous devez utiliser le onLocationChanged méthode de l'emplacement de l'auditeur. L'obtention d'un valide fix prend du temps (quelques minutes)
public void onLocationChanged(Location location) { if (! = null) { Log.j'("SuperMap", "Emplacement changé : Lat:" + location.getLatitude() + "Lng:" + location.getLongitude()); latitude = emplacement.getLatitude(); longitude = emplacement.getLongitude(); locationShow.setText("经度:" + latitude + "纬度:" + longitude); } } je dois attendre plus de 10 minutes,mais encore ne parviennent pas à obtenir de la validité de la correction,c'est tellement étrange.
NetworkProvider exige que vous êtes connecté à internet.
merci beaucoup,je trouve qu'il ya quelque chose de mal avec google map ici en Chine.J'ai ouvert la carte de google,et il ne peut pas obtenir de la validité de la correction,trop.D'autres applications, utiliser d'autres carte,pas de google map.Merci beaucoup.
OriginalL'auteur Reno