Bonjour,
Voila j'ai créé une application qui permet de s'auto-connecté à un portail capacitif. Tout fonctionne correctement sauf une choses.
En faite j'aimerais savoir si le téléphone est déjà connecté au portail ou pas. Pour ce faire c'est relativement simple. Il me faut savoir si le téléphone à accès à internet. J'ai donc trouvé en cherchant plusieurs solution.
Celle première solution, ne fonctionne pas. En effet, la fonction me revoit true si je suis connecté à un réseau (qui n'est pas forcément connecté à internet). Ou alors est-ce moi qui l'utilise mal ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public boolean isConnectedOnInternet() { ConnectivityManager connManager = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE); NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); return wifi.isConnected() && wifi.isAvailable(); }
Cette solution fonctionne. Mais petit problème !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public boolean isConnectedOnInternet() { try { URL UrlTestConnection = new URL("http://www.google.com"); URLConnection connOk = UrlTestConnection.openConnection(); connOk.setConnectTimeout(3 * 1000); connOk.connect(); return true; } catch (IOException e) { return false; } }
Mon application se doit d'être réactif et détecter à la seconde près l’état du réseau et de la connexion à internet.
Pour ce faire, j'utilise un timer qui execute des tests toutes les secondes. Le 1er teste est de voir si on est connecté au réseau wifi qui demande une identification si cela est le cas, il nous faut savoir si on y est déjà identifié. il faut donc savoir si on peut avoir accès à internet et j'utilise alors la function isConnectedOnInternet(). Dans le meilleur des cas, elle ne s'exécutera que toutes les 3 secondes (car limite du timeout) mais le pire des cas est qu'elle s'exécute tout les secondes (mon timer de départ).
Je me pose alors plusieurs questions :
Il y a t'il une autre façon de faire plus "correcte" ?
Lorsque la connexion est ouverte (connOK.connect()) est ce que cette méthode "télécharge" toute la page google ou pas ? Autrement dis, est-ce que cela bouffe beaucoup de data ?
Je ne sais pas si tout est compréhensible. (J’espère que oui )
Je vous remercie d'avance pour vos réponses et vos conseils
Tibou36
Partager