2012-02-09 14 views
17

En Android ICS, se proporciona API inalámbrica P2P (WiFi Direct).Autenticación automática para Android WiFi Direct

Traté de desarrollar una aplicación que pueda conectar 2 teléfonos a través de Wireless P2P automáticamente si la dirección MAC coincide.

Desde documentación del SDK, tengo a los siguientes pasos:

  1. Encienda Wi-Fi Direct a través de Ajustes.
  2. Inicializa la conexión P2P. - initialize()
  3. Descubre Peer. - discoverPeers()
  4. Ver si la dirección MAC coincide.
  5. Conéctese al Peer descubierto. - connect()

Una vez que se llama a la API connect(), el teléfono Farside mostrará una ventana de diálogo de Autenticación de conexión. (Dependiendo de WifiP2pConfig)

¿Hay alguna forma de conectarse automáticamente, sin tener Farside para abrir el cuadro de diálogo?

+0

Tengo el mismo problema, no sé por qué no implementaron una opción para eso en la Configuración. –

Respuesta

15

Parece que la automatización de los diálogos de autenticación no es posible, y esto hace que el enrutamiento p2p también sea imposible. En este momento, la clase WpsInfo (que se utiliza en la clase WifiP2pConfig que pasa a la función connect() de WifiP2pManager durante la conexión entre pares) solo muestra los cuadros de diálogo de autenticación de cuatro maneras: DISPLAY/KEYPAD/LABEL/PBC. Creo que PBC (configuración de botón) es el predeterminado y es a lo que se refiere. Las otras tres opciones requieren que el usuario ingrese un tipo de pin, lo que los hace aún más inutilizables para conexiones automatizadas. Tal vez si encontráramos el tipo de esta clase de diálogo de autenticación, podríamos automatizar el clic del botón "Aceptar".

Ojalá se pudiera agregar una nueva opción que le daría a la aplicación la capacidad de autenticar una conexión, en lugar de al usuario. Esta autenticación basada en el usuario parece que ha sido transferida desde la API de Bluetooth, y limita severamente la utilidad de wifi directo. Tal vez la gente de google podría ayudarnos?

+0

La autenticación automática es un riesgo de seguridad. Un atacante podría conectarse automáticamente a un teléfono "inocente" sin que los usuarios lo utilicen. – hengsti

1

Mientras tanto, la situación ha cambiado. Puede crear una conexión directa wifi totalmente automática usando creategroup() del WifiP2pManager y obtener la contraseña y el SSID generados aleatoriamente con en GroupInfoAvailable(), ver this description con example code.

Cuestiones relacionadas