Android LocationManager fournisseur de réseau renvoie la valeur null
Je voulais faire ma coordonnées GPS à l'aide de l'Application Android. J'ai commencé à développer, et je peux obtenir les coordonnées GPS, mais ils ne sont pas exacts. Je voulais utiliser NETWORK_PROVIDER, mais l'Emplacement par ce fournisseur est toujours null. Plus intéressant, isProvicerEnabled renvoie la valeur true.
J'ai utilisé l'exemple de ce fil (meilleure réponse)
entrez description du lien ici
private void _getLocation() {
//Get the location manager
try {
boolean isGPSEnabled = false;
boolean isNetworkEnabled = false;
locationManager = (LocationManager) getApplicationContext().getSystemService(LOCATION_SERVICE);
Location location = null;
double latitude = -1;
double longitude = -1;
//getting GPS status
isGPSEnabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
//getting network status
isNetworkEnabled = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled) {
//no network provider is enabled
} else {
if (isNetworkEnabled) {
showToast("network");
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
1000,
0, this);
Log.d("Network", "Network Enabled");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
//if GPS Enabled get lat/long using GPS Services
else if (isGPSEnabled) {
showToast("gps");
if (location == null) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
1000,
0, this);
Log.d("GPS", "GPS Enabled");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
}
showToast("" + latitude + longitude);
} catch (Exception e) {
e.printStackTrace();
}
J'ai toutes les autorisations dans le manifeste
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
Je sais que le code est sale, mais pour l'instant c'est uniquement pour les tests. Dois-je raté quelque chose? J'ai trouvé des exemples similaires dans de nombreux endroits, et il semble assez simple, donc je suis un peu confus.
Mon téléphone fonctionne bien, le GPS et le réseau fonctionne très bien. Par exemple application Google Maps j'ai fonctionne bien. Des suggestions?
OriginalL'auteur Kamil Kłys | 2014-07-26
Vous devez vous connecter pour publier un commentaire.
Veuillez ne PAS utiliser ce code. Elle est mauvaise. Il a beaucoup d'erreurs. Aussi, getLastKnownLocation renvoie null si elle ne dispose pas d'un emplacement encore. Qui ce sera toujours le cas si personne sur le téléphone est à l'aide de requestUpdates.
Votre code est pris à partir d'une classe qui a été posté sur un fil très vieux ici appelé GPSTracker. J'ai essayé de tuer qui code pour mois - qu'il cause plus de problèmes qu'elle n'aide. Si vous voulez un meilleur exemple de code, essayez http://gabesechansoftware.com/location-tracking/ qui est un blog que j'ai écrit sur la façon dont le mauvais code. Il va vous montrer la bonne façon de le faire, et explique quel est le problème avec ce code.
Il est étrange que ce genre de mise en œuvre est utilisée dans de nombreux exemples. Je vais jeter un oeil sur les exemples que vous avez fournis. Merci les gars!
J'ai utilisé l'exemple de code à partir du premier lien (blog), et il ne fonctionne pas pour moi. J'utilise
start()
méthode, puisgetLocation()
lors d'un clic sur un bouton, mais il renvoie toujours null (ethasLocation()
renvoie false). D'autre part,getPossiblyStaleLocation()
fonctionne très bien. Ressemble peut-êtrerequestLocationUpdates()
ne fonctionne pas pour moi. Des idées?Si vous êtes à l'aide de GPS - êtes-vous à l'intérieur? Si oui, vous n'êtes probablement pas obtenir l'emplacement de verrouillage. Ne voyez-vous pas de GPS symbole, un clignotement du symbole GPS, ou d'un solide GPS symbole dans la barre de notification? Pas de symbole=problème, clignotant= le GPS est en marche, mais n'est pas verrouillé, solide signifie verrouillé et vous devez obtenir un emplacement.
Une façon de le tester si vous rencontrez des problèmes réels, c'est de télécharger une maquette de fournisseur d'emplacement et d'ajouter de la fantaisie de l'emplacement de l'autorisation à votre application. Cela vous permet de fausses données GPS, de sorte que vous pouvez faire un essai contrôlé. Il sera effectivement regarder juste comme le GPS, les données à l'application.
OriginalL'auteur Gabe Sechan