IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Android Discussion :

GPS (ou pas) sur device ET activé (ou pas)


Sujet :

API standards et tierces Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut GPS (ou pas) sur device ET activé (ou pas)
    Hello & bonne année à tous déjà!

    Je voudrais pourvoir déterminer:
    1.) si un GPS est bien présent sur un device
    2.) et si oui, est-il activé (ou pas)?

    Pour ce faire j'ai essayé plusieurs fonctions, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    	public static boolean isGpsEnabled(Context context) 
    	{
    	    ContentResolver cr = context.getContentResolver();
    	    String providersAllowed = Settings.Secure.getString(cr, Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
    	    return providersAllowed != null && providersAllowed.length() > 0;
    	}
    	public static boolean hasGPSDevice(Context context)
        {
    	    final LocationManager mgr = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
    	    if ( mgr == null ) return false;
    	    final List<String> providers = mgr.getAllProviders();
    	    if ( providers == null ) return false;
    	    return providers.contains(LocationManager.GPS_PROVIDER);
        }
    	public static boolean existGPSOnDevice(Context mContext)
    	{
    		PackageManager packageManager = mContext.getPackageManager();
    		boolean  hasGPS = packageManager.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS);
    		return hasGPS;
    	}
    Le problème étant qu'elles fonctionnent bien sur ma galaxy tab (4.1.1)....... et pas du tout sur nexus 7 (4.1.2).
    -> en fait elles renvoient systématiquement TRUE sur la nexus
    -> même qd je désactive le GPS!
    -> et le pire c que la nexus me ramène qd même des data, même en mettant le gps OFF(??)

    Une idée pour tester à la fois la présence physique d'une puce gps & le fait que la fct soit activée ou pas?

    Pour le moment, ce qui marche c'est ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	public static boolean existGPS(Context c)
    	{
        	String provider = Settings.Secure.getString(c.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
    		if (Fonctions.wildCardMatch(provider, "*gps*")) return true;
    		else											return false;
    	}
    mais bon, une recherche de "gps" dans la string, ça fait un peu bricolage à mes yeux.....

    Merci.

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Alors j'ai de très lointains souvenirs concernant cela...

    Il me semble que pour tester si le "GPS" est enabled c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    final LocationManager manager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );
    manager.isProviderEnabled( LocationManager.GPS_PROVIDER )
    Et pour savoir si il y a un GPS device:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    final LocationManager manager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );
    manager.getAllProviders()
    Ce qui correspond a ta fonction "hasGPSDevice()"
    Et rechercher la chaine LocationManager.GPS_PROVIDER

    Désactiver le GPS n'empêchera pas la désactivation du location-manager. On peut même recevoir des localisations avec granularité fine selon les réseaux wi-fi environnants !

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Remarque, maintenant que j'y pense, le fait de savoir s'il y a une puce ou pas sur le device n'est pas vital puisque l'idée c'est d'afficher/cacher un bouton de géoloc.

    Il suffit de tester si GPS activé ou pas finalement.
    -> s'il ne l'est pas, on se fout de savoir s'il y a une puce, on cache le bouton
    -> s'il l'est, il y en a forcément une, donc on l'affiche

    Non?

    Et pour "ma" fct existGPS(), bricolage alors, ou pas?

    Parce que je voudrais vraiment un truc qui réagisse au ON/OFF du GPS........ parce que je sais déjà que mon boss (dont je t'ai déjà parlé 12 625 fois ...........) va faire ce test là!

    Et, pour lui, s'il désactive le GPS et que le bouton de géoloc s'affiche qd même, ça n'ira pas!

  4. #4
    Membre actif Avatar de IsiTech
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Janvier 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Janvier 2012
    Messages : 105
    Points : 270
    Points
    270
    Par défaut
    Citation Envoyé par steph68b Voir le message
    Remarque, maintenant que j'y pense, le fait de savoir s'il y a une puce ou pas sur le device n'est pas vital puisque l'idée c'est d'afficher/cacher un bouton de géoloc.

    Il suffit de tester si GPS activé ou pas finalement.
    -> s'il ne l'est pas, on se fout de savoir s'il y a une puce, on cache le bouton
    -> s'il l'est, il y en a forcément une, donc on l'affiche

    Non?
    De manière générale je dirais non. Je n'active pas mon GPS si je n'en ai pas besoin, donc si l'application ne me fait pas comprendre qu'elle peut utiliser le GPS pour me proposer un service, je (et l'utilisateur) ne le saura jamais.

    Je pense qu'afficher le bouton grisé, et sur un clic inviter l'utilisateur a activer son GPS si celui ci est désactivé serait préférable.

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Je suis bien d'accord avec toi, et je pense qu'on est 98% à penser comme ça.
    Bien pour ça que j'ai proposé exactement le grisage plutôt que la suppression.

    Mais mon boss lui est sur une autre planète.........................

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Citation Envoyé par steph68b Voir le message
    Je suis bien d'accord avec toi, et je pense qu'on est 98% à penser comme ça.
    Bien pour ça que j'ai proposé exactement le grisage plutôt que la suppression.

    Mais mon boss lui est sur une autre planète.........................
    Demande Nicroman s'il a encore des cheveux, à force d'écouter "mes" questions...................

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Boot sur la partition D et pas sur C!
    Par poche dans le forum Windows Vista
    Réponses: 2
    Dernier message: 03/09/2007, 10h56
  2. execution sur l'emulateur mais non pas sur le Pocket PC
    Par inter_amine dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 08/06/2007, 09h35
  3. Réponses: 6
    Dernier message: 19/02/2007, 15h50
  4. Réponses: 4
    Dernier message: 30/08/2006, 08h37
  5. [Tomcat]Fonctionne sur Tomcat 3.2.1, pas sur 4.1.27
    Par lujayne dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 07/08/2003, 09h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo