Gestion du Wi-Fi
- Récupération du WifiManager : Context.getSystemService(Context.WIFI_SERVICE)
-
Savoir si le Wi-Fi est activité : wifiManager.isWifiEnabled()
- setWifiEnabled() ne permet plus d'activer/désactiver le Wi-Fi depuis Android 10 ; l'opération doit être réalisée par l'utilisateur
-
Verrous Wi-Fi :
- createMulticastLock(String tag) : verrou pour recevoir les datagrammes multicast
-
WifiLock createWifiLock(String tag) : verrou pour ne pas mettre en sommeil la pile Wi-Fi
- wifiLock.acquire()
- wifiLock.release()
- WifiInfo getConnectionInfo() : informations sur la connexion courante (BSSID, SSID, RSSI, adresse IP, bande passante...)
- Randomisation des adresses MAC Wi-Fi depuis Android 10
- Accès à l'adresse MAC réelle (et numéro IMEI) uniquement possible avec la permission privilégiée READ_PRIVILEGED_PHONE_STATE (impossible depuis une application sans accès root)
Scan de connexions Wi-Fi
WifiManager manager = (WifiManager)getSystemService(Context.WIFI_SERVICE); List<ScanResult> scanResult = null; public void startScan() { BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { scanResult = manager.getScanResults(); unregisterReceiver(this); } }; registerReceiver(receiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); manager.startScan(); }
Permissions nécessaires pour réaliser un scan Wifi :
- CHANGE_WIFI_STATE et ACCESS_WIFI_STATE
- ACCESS_FINE_LOCATION (les points d'accès Wifi permettent de déduire la géolocalisation ; il s'agit d'une permission dangereuse)
P2P en Wi-Fi direct
- Wi-Fi direct : protocole facilitant l'interconnexion de machines en mode ad-hoc
- Annonce et découverte de services avec Bonjour et UPnP
-
Utilisation de WifiP2pManager
- Initialisation
- Enregistrement de services
- Découverte de pairs et services
- Connexion avec des pairs
- Exemples disponibles dans samples/WiFiDirectDemo