Les androïdes onStatusChanged ne fonctionne pas
Je suis en train de recevoir des notifications si le statut de GPS_PROVIDER changements. J'ai trouvé le code suivant ici (http://hejp.co.uk/android/android-gps-example/), mais je ne reçois pas les notifications.
- Droit maintenant, je suis dans un bâtiment et ne peut pas obtenir un signal GPS, donc n'aurais-je pas obtenir la notification de changement de Statut: Hors Service"?
- Quand est onStatusChanged appelée?
- Ce que je fais mal?
Merci,
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
/* This is called when the GPS status alters */
switch (status) {
case LocationProvider.OUT_OF_SERVICE:
Log.v(tag, "Status Changed: Out of Service");
Toast.makeText(this, "Status Changed: Out of Service",
Toast.LENGTH_SHORT).show();
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
Log.v(tag, "Status Changed: Temporarily Unavailable");
Toast.makeText(this, "Status Changed: Temporarily Unavailable",
Toast.LENGTH_SHORT).show();
break;
case LocationProvider.AVAILABLE:
Log.v(tag, "Status Changed: Available");
Toast.makeText(this, "Status Changed: Available",
Toast.LENGTH_SHORT).show();
break;
}
OriginalL'auteur thedeepfield | 2013-01-08
Vous devez vous connecter pour publier un commentaire.
Si votre GPS le statut ne change pas (par exemple, si vous êtes toujours à l'intérieur sans un GPS), tandis que l'application est en cours d'exécution, certains appareils ne déclenchent pas la
OnStatusChanged()
méthode.Si vous modifiez GPS statuts, tandis que l'application est en cours d'exécution (par exemple, vous êtes à l'intérieur et ne peut pas obtenir un correctif et puis marcher à l'extérieur et peut obtenir un correctif, ou vice-versa), puis le
OnStatusChanged()
méthode doit le feu sur tous les appareils.Si vous voulez un travail entièrement open-source de l'application pour l'utiliser comme un exemple, essayez de GPSTest (divulgation complète, de mon application):
GPSTest sur Google Play - https://play.google.com/store/apps/details?id=com.android.gpstest
Code Source pour GPSTest - https://github.com/barbeau/gpstest
Pour de plus amples informations sur le GPS qui est constamment mis à jour, même si votre appareil ne peut pas obtenir un correctif, vous pouvez enregistrer un
GPSStatus.Listener
.Dans votre Activité, mettre en œuvre
GpsStatus.Listener
, par exemple:Puis, dans votre activité de déclarer des variables de classe:
...et ajouter une méthode pour gérer la GPSStatus changements:
Puis dans
OnCreate()
de votre Activité pour vous inscrire à la GPSStatus.Auditeur:Dans le GPSTest application, la liste des satellites disponibles est indiqué sur l'écran à chaque GPSStatus.Auditeur de mise à jour, basé sur ce code:
https://github.com/barbeau/gpstest/blob/master/GPSTest/src/main/java/com/android/gpstest/GpsStatusFragment.java
De cette façon, vous allez recevoir des mises à jour actives sur l'état du GPS de système, même si votre téléphone ne peut pas obtenir un signal GPS (et, par conséquent, peut ne pas déclencher
OnStatusChanged
de l': LocationListener).Désolé, permettez-moi de clarifier, pour quiconque est à la recherche à de cette. La notification que j'ai reçu était d'avoir un verrouillage gps temporairement indisponible. PAS de pas de verrouillage gps (quand j'étais dans le bâtiment) pour avoir un verrouillage gps. En d'autres termes, je devais avoir un verrouillage GPS d'abord avant que je commencé à recevoir de tout changement de statut des notifications.
Désolé pour le peu de bosse mais comment pourrais-je utiliser votre solution de service d'arrière-plan? Je veux dire que j'ai: LocationListener en service d'arrière-plan qui n'a pas onCreate
Vous devriez toujours être en mesure d'enregistrer les GPSStatus.Auditeur
onCreate()
ouonStartCommand()
de votre Service. Fondamentalement, chaque fois que votre début de Service et d'exécuter du code, exécutez la mêmemService = getSystemService...
etmService.addGpsStatus...
les lignes qui sont dans la réponse ci-dessus.OriginalL'auteur Sean Barbeau
peut-être vous avez besoin de vérifier ce lien GpsStatus.Auditeur
cet écouteur est utilisé pour savoir quand l'état du GPS a changé.
et comme pour la méthode vous l'avez souligné, il est utilisé pour savoir quand le fournisseur a changé, comme mentionné dans la documentation : LocationListener
OriginalL'auteur Moh Sakkijha
J'ai travaillé sur le GPS pour depuis plusieurs semaine et ce que j'ai remarqué de mon test, il pourrait y avoir une possibilité d'obtenir les signaux GPS à l'intérieur d'un bâtiment. Si vous êtes dans un sous-sol de la zone, alors vous n'obtiendrez jamais. J'ai essayé à partir de mon domicile et 95% de temps de ma de la latitude et de la longitude toujours.
Vous ne pouvez pas contrôler cela. GpsLocationProvider utilise automatiquement assistée SUPL si il est un internet ou une connexion WiFi est disponible. La version autonome de cas est utilisée uniquement lorsque internet n'est pas accessible. Aidé de données à l'aide de verrouillage sur signal du satellite GPS. À l'intérieur des cas, vous pouvez voir 2-3 satellites (cela dépend de la qualité de votre chipset). En cas d'absence de signal de satellite peuvent être numérisés, vous ne pouvez pas obtenir un correctif.
Grâce,
Ramesh S
comment vous assurez-vous que vous navez pas recevoir le rappel de Service. Puisque vous êtes en montrant Toast et aussi de courte durée, il y a peut être une chance, il aurait montré et vous pourriez manquer.J'ai essayé similaire dans le passé et il a utilisé pour montrer le statut respectif Disponible lorsque je suis en mouvement et une fois arrivé dans un centre commercial ou dans mon bureau, il n'est pas Hors de service ou Non availablle.. je pense que vous pouvez vibrer à la fois de montrer le pain grillé, de sorte que vous pouvez rapidement regarder dans votre mboile pour l'état
OriginalL'auteur Ramesh Sangili