J'ajoute quelques limitations dues à l’émulateur ;
- D'abord, il n'y a pas de WiFi sur l’émulateur
- Ensuite l'adresse IP de l’émulateur est TOUJOURS 10.0.2.15
- ensuite l'émulateur se trouve derrière un firewall virtuel qui fait de la NAT avec l'adresse IP de votre machine pour utiliser son adresse IP locale lorsqu'il part vers le réseau local
Donc, pour que le code présenté fonctionne aussi bien dans un vrai device que dans l’émulateur, il faut ruser un peu :
1/ Bien encadrer toutes les fonctions WiFi... et Dhcp... avec "if IsUseEmuletor()" afin de ne pas les utiliser dans l'émulateur (sinon, pointeur NULL ou exception)
2/ L'adresse IP de broadcast de la machine hôte ne peut pas être devinée, il faut donc la fixer en dure avec un code du genre :
1 2 3 4
| if(IsUseEmulator())
broadcast = "192.168.1.255";
else
broadcast = GetBroadcastAddress(); |
La fonction IsUseEmulator() pouvant être celle là par exemple :
boolean IsUseEmulator() { return "generic".equals(Build.BRAND); }
Partager