Comment détecter lorsque l'utilisateur allume / éteint l'état GPS?
Je souhaite bloquer l'utilisateur de changer le WiFi, le GPS et le chargement de paramètres à partir de mon application. L'utilisateur n'a pas besoin d'/désactiver le WiFi et le GPS lors de l'exécution de mon application.(À partir de la barre de notification). Est-il BroadcastReceiver
existent pour écouter GPS on/off?
source d'informationauteur Devu Soman
Vous devez vous connecter pour publier un commentaire.
Bien que j'ai fait beaucoup de creuser et a constaté que
addGpsStatusListener(gpsStatusListener)
était dépréciée de l'API de 24. Et pour moi, ce n'était pas le même travail! Donc, voici une autre solution alternative à cela.Si dans votre application, vous voulez écouter le GPS de modification de l'état (je veux dire on/Off par l'utilisateur). À l'aide d'un Diffusion est sûrement la meilleure approche.
Mise en œuvre:
N'oubliez pas de vous inscrire et de se désinscrire de ce de manière efficace dans le Fragment/Activité du Cycle de vie.
Par exemple, si vous utilisez ce un
Fragment
de l'inscrire dans laonResume
et annuler l'inscription dans leonDestroy
. Aussi, si vous êtes dirigeant de l'utilisateur pour les paramètres pour activer l'Emplacement de l'Interrupteur, l'annulation de l'inscription dans leonStop
ne fonctionnera pas depuis, votre activité va àonPause
et le Fragment est arrêté.Bien il peut y avoir de nombreuses réponses à cette solution, mais c'est facile à gérer et à utiliser. Proposer vos solutions le cas échéant.
Vous pouvez écouter l'état du GPS avec un GpsStatus.Auditeur
et l'enregistrer avec le LocationManager.
Vous avez besoin d'avoir accès au contexte (par exemple dans une "Activité" ou "Application" de la classe).
Ce n'est pas possible. Vous ne pouvez pas contrôler ou limiter l'état du matériel sur votre caprice. Ce serait dangereux pour l'avoir dans l'Api et à juste titre donc pas une telle API existe.
Vous pouvez enregistrer un
BroadcastReceiver
pour écouter de laIntent
ActionPROVIDERS_CHANGED_ACTION
. Ce sera diffusée lors de la configuration de la localisation de changements de fournisseur. Vous pouvez consulter ce lien.Vous pouvez détecter le statut de GPS par la suite.
Regarder GpsStatus.Auditeur. Enregistrer avec locationManager.addGpsStatusListener(gpsStatusListener).
Vérifier SI lien pour une meilleure compréhension.
À partir de l'API 19 vous pouvez enregistrer un
BroadcastReceiver
pour l'écoute de l'intention à l'actionLocationManager.MODE_CHANGED_ACTION
Référence: https://developer.android.com/reference/android/location/LocationManager.html#MODE_CHANGED_ACTION
Vous pouvez obtenir de l'emplacement de la mode avec
Valeur renvoyée doit être l'un des suivants:
Vous ne pouvez pas utiliser GpsStatus.Écouteur pour ce faire. Vous devez utiliser récepteur de radiodiffusion. Utilisation LocationManager.PROVIDERS_CHANGE_ACTION. Ne pas utiliser l'Intention.ACTION_PROVIDER_CHANE.
Bonne chance !