LocationManager requestLocationUpdates ne fonctionne pas
Je vais essayer d'obtenir l'emplacement actuel dans android à l'aide de LocationManager et: LocationListener comme décrit à http://developer.android.com/guide/topics/location/obtaining-user-location.html
Cependant, onLocationChanged méthode de l': LocationListener n'est jamais appelée. J'ai utilisé un vrai téléphone android /également utilisé l'émulateur et la simulation de l'emplacement modifié à l'aide de telnet, comme décrit dans le lien ci-dessus.
Voici mon code:
public class MyActivity extends Activity {
@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 CustomLocationListener(
getApplicationContext());
//Location Providers
String locationProvider = LocationManager.NETWORK_PROVIDER;
//LocationProvider locationProvider = LocationManager.GPS_PROVIDER;
mlocManager
.requestLocationUpdates(locationProvider, 0, 0, mlocListener);
}
}
et mon: LocationListener:
public class CustomLocationListener implements LocationListener {
private Context m_context;
public CustomLocationListener(Context context) {
m_context = context;
}
@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
String Text = latitude + " " + longitude;
Toast.makeText(m_context, Text, Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderDisabled(String provider) {
//TODO
}
@Override
public void onProviderEnabled(String provider) {
//TODO
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {}
}
Donc onLocationChanged n'est jamais appelée.
Quelqu'un peut-il voir le problème??
Merci beaucoup
Avez-vous activé les services GPS sur votre téléphone et vous l'avez confirmé que vous devriez avoir un emplacement? (Quelques minutes d'attente n'est pas une confirmation, si vous êtes dans une mauvaise zone de service de 30 minutes peut-être pas assez...)
Dois demander: avez-vous les autorisations de position spécifié dans le manifeste?
oui, j'ai ajouté de l'autorisation dans le manifeste
je comprend que NETWORK_PROVIDER doens pas utiliser de gps du téléphone
Je suis désolé, j'ai lu votre question mal. Comme vous le savez, l'emplacement Réseau n'a pas besoin du service GPS activé, il faut le Fournisseur de Réseau activé. Un peu de chance, la résolution de votre problème? Votre code ici a l'air bien.
Dois demander: avez-vous les autorisations de position spécifié dans le manifeste?
oui, j'ai ajouté de l'autorisation dans le manifeste
je comprend que NETWORK_PROVIDER doens pas utiliser de gps du téléphone
Je suis désolé, j'ai lu votre question mal. Comme vous le savez, l'emplacement Réseau n'a pas besoin du service GPS activé, il faut le Fournisseur de Réseau activé. Un peu de chance, la résolution de votre problème? Votre code ici a l'air bien.
OriginalL'auteur Dan Dinu | 2012-06-06
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également laisser votre téléphone à déterminer le meilleur fournisseur au lieu de juste mettre
Essayez plutôt ceci:
Aussi, avez-vous testé en déplaçant votre appareil à un nouvel endroit? Sinon, le "onlocationchanged" événement ne peut pas le feu. Lorsque j'ai été figurant ça il y a quelques années, j'ai mis quelques "toast" de m'informer de mes coordonnées lat/long que je marchais autour du bloc pour vérifier l'événement était de tir.
J'ai toujours développer avec un appareil, mais il semble que vous pouvez simuler l'emplacement dans un émulateur si vous suivez le lien de Dan Dinu d'origine de la question ci-dessus. Allez tout en bas de cet article et de voir "Utilisation de la "géo" de commande dans l'émulateur de la console".
déplacement de mon appareil à un nouvel emplacement résolu le problème! Merci
OriginalL'auteur CircuitBreaker716
Cela ressemble à Android Bug 57707 pour moi.
Si elle l'est, le redémarrage de l'appareil devrait aider, au moins pour un temps.
Ou vous pouvez utiliser la Google Play Services de l'Emplacement de l'API.
En utilisant à la fois le Wifi, le GPS et le Réseau de positionnement, les Google Play Services de l'Emplacement de l'API permet de masquer le fait que le positionnement du Réseau est brisée; qui ne sera évident quand vous avez ni de GPS, ni de Wifi disponible.
OriginalL'auteur Johan Walles
Assurez-vous que les services de localisation sont activés dans les Paramètres. Vous pouvez également utiliser
isProviderEnabled()
pour vérifier si le fournisseur que vous avez choisi de travailler. Et vous assurer que vous avez la GROSSIÈRE ou FINE des autorisations dans votre manifeste.Aussi, assurez-vous que vous faites des tests sur un périphérique. Emplacement réseau ne fonctionne pas dans l'émulateur, et le GPS ne fonctionne que si vous utilisez l'outil de simulation d'injecter de nouveaux points de données.
isProviderEnabled()
ne fonctionne pas comme annoncé. Voir: stackoverflow.com/questions/10154937/... et stackoverflow.com/questions/16748300/...OriginalL'auteur Devunwired
J'ai été confronté à un problème similaire.
Try replacing getApplication() with MainAvtivity.this
Aussi, assurez-vous de garder les autorisations pour à la fois FINES et GROSSIÈRES endroits. Si votre cible API est plus que de 23, vous devez gérer les autorisations à partir du code java aussi.
OriginalL'auteur Akhil Ghatiki