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:
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(??) 8O
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:
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.