¿Cómo crear un GO autónomo para Wifi Direct en Android con ssid dedicado y contraseña?
Estoy tratando de crear una red WI-FI Direct con decir 3 Tablet PCs. Quiero ejecutar WiFi-Direct como servicio de fondo, con un dispositivo configurado como GO autónomo. ¿Podría alguien por favor decirme cómo se puede hacer esto en Android? También alguien me dice por favor cómo podemos fijar el SSID y la frase de paso dedicados de modo que cada vez que se agreguen los nuevos dispositivos a esta red, pueden buscar un ssid y un passphrase específicos para el establecimiento de la conexión durante la iniciación de la aplicación?
Estoy utilizando Android API de nivel 18 para mi desarrollo …
- Creación de un registro WiFi NDEF utilizando application / vnd.wfa.wsc en Android
- Android Ethernet y Wi-Fi al mismo tiempo
- Android: Escaneado de redes Wifi + Lista seleccionable
- Abrir la aplicación cuando se conecta con wifi
- Impresión Bluetooth y WIFI para Android
Gracias por adelantado …
- Descubrimiento del servicio directo Wifi de Android
- WiFi-Direct en JellyBean, WPA Suplicante desordenado
- Búsqueda de puntos de acceso Wi-Fi en Android mientras está en modo punto de acceso
- esperar hasta que el wifi esté conectado en android
- ¿Cómo conectar wifi android a adhoc wifi?
- Obtener estadísticas de tráfico wifi android
- Compruebe si la red ScanResult ya está configurada (existe en la lista getConfiguredNetworks ())
- WiFi Password: ¿cómo se almacena y dónde?
Así es como se crea un propietario de grupo autónomo, es decir, usando el siguiente código, puede establecer deliberadamente un dispositivo en red Wifi directa como propietario de un grupo
manager.createGroup(channel,new WifiP2pManager.ActionListener() { @Override public void onSuccess() { Toast.makeText(WiFiDirectActivity.this, "Group Created",Toast.LENGTH_SHORT).show(); } @Override public void onFailure(int reason) {} });
Puede utilizar este código en cualquier evento, como clic de botón, etc.
Para crear un grupo autónomo, sólo puede invocar el método createGroup()
desde su gestor. Con el fin de establecer ssid y passPhrase debe invocar los métodos ocultos de WifiP2pGroup clase setPassphrase y setNetworkName .
Para lograrlo, se utiliza la reflexión java. Intente el siguiente ejemplo.
Supongamos que WifiP2pGroup
agrupa su objeto actual.
Método
setPassPhraseMethod=group.getClass().getMethod("setPassphrase", new Class[ {String.class});
Y ahora invoca el método:
setPassPhraseMethod.invoke(group, "yourNewPassPrhase");
Espero que sea útil.
Bluemoon10 tenía casi razón. No puedo comentar todavía porque necesito 50 reputación: /. El config.groupOwnerIntent oscila entre 1-15, siendo 15 la intención más alta de ser propietario del grupo. Si 2 dispositivos intentan conectarse con ambas intenciones GO == 15, la llamada de conexión fallará. Si hay un vínculo de intención GO inferior a 15, los dispositivos coinciden en un bit de desempate y tendrán éxito. Así que si quieres que un dispositivo sea el propietario del grupo, tienes que asegurarte de que es el único que trata de serlo. Puede hacerlo con Service Discovery, es decir, si hay un servicio en ejecución, establezca su intención GO en 15 en el dispositivo con el servicio y 1 en el dispositivo de conexión. Sólo un dispositivo necesita llamar a conectar para iniciar la conexión.
Enlace al tutorial de Service Discovery: http://developer.android.com/training/connect-devices-wirelessly/nsd-wifi-direct.html
Normalmente, el propietario del grupo se decide por el protocolo WiFi Direct. Sin embargo, usted puede forzar su mano, utilizando la clase de configuración.
final WifiP2pConfig config = new WifiP2pConfig(); config.deviceAddress=myDeviceAddr; config.wps.setup = WpsInfo.PBC; config.groupOwnerIntent =15;
En este caso, creo que estoy en lo cierto al decir que 15 significa menos probable que se convierta en GO, se establece en cero, si desea que el dispositivo sea el GO. También esto podría ser donde se puede establecer pin etc echar un vistazo a WpsInfo. Esta información de configuración a continuación, pasó a su llamada de conexión.
mManager.connect(mChannel, config, new WifiP2pManager.ActionListener().
Espero que esto ayude.