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:
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).
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; }
-> 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:
mais bon, une recherche de "gps" dans la string, ça fait un peu bricolage à mes yeux.....
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; }
Merci.
Partager