2011-11-25 9 views
13

que desea iniciar una conexión de red local utilizando el incorporado en la zona Wi-Fi en los dispositivos Android. ¿Hay alguna manera de lograrlo? ¿Y cómo comunicarse entre dos dispositivos?Cómo iniciar una conexión de red local a través de programmically zona Wi-Fi en Android?

EDITAR: Quiero hacerlo de forma programática. Entonces puedo transferir mis propios datos entre dispositivos.

+0

Puede aclarar su pregunta. ¿Con qué te quieres conectar y cómo? ¿Quiere decir que desea conectar un dispositivo (como una PC) al punto de acceso wifi de su teléfono (es decir, a la conexión) automáticamente? – brianestey

+0

Quiero escribir una aplicación que se pueda comunicar entre varios dispositivos Android. (Creo que depende de un total de 6 dispositivos, ya que los puntos de acceso wifi tienen un límite máximo de 5 clientes). Por ejemplo, una sala de chat de subredes local. – shiami

+0

Entonces eso será un servidor y 5 clientes en la red. Y puede comunicarse como la estructura servidor-cliente. – shiami

Respuesta

5

No he hecho esto antes, por lo que mi respuesta es totalmente teórica.

Creo que lo que tiene que hacer es declarar un dispositivo en el servidor e iniciar su punto de acceso manualmente con un nombre conocido.

Start/stop built-in Wi-Fi/USB tethering from code? (Según esta pregunta, no puede iniciar el punto de acceso programáticamente).

vez que tenga el punto de acceso configurado, poner en marcha la aplicación de servidor y esperar a que las conexiones entrantes. La aplicación de servidor puede mostrarle la dirección IP o el nombre de host.

En los clientes, puede hacer una simple comprobación y ver si el nombre del punto de acceso está activo y conectarse automáticamente si lo encuentra. Vea este enlace para conectar a una red:

Using WifiManager to connect to a network

En cuanto a su segunda pregunta, la forma de comunicarse - que necesita para establecer una conexión entre los dispositivos. Para esto, necesita la dirección IP del servidor. Lo más simple sería mostrar la dirección IP en la IU del servidor y luego ingresarla manualmente en los clientes y presionar Conectar. Luego establecería una conexión con el servidor en un puerto conocido y puede enviar mensajes entre el cliente y el servidor.

Como referencia, encontré NanoHttpd, que es un servidor web para Android. Utiliza ServerSocket para escuchar las conexiones entrantes.

+2

¿Alguien realmente ha implementado esto, la comunicación con la parte del zócalo especialmente. – hrishikesh

+0

¿Puedes publicar algún código aquí si lo has implementado? –

0

Esto ayudará a iniciar. link1

+3

En caso de que el enlace se pudra en el futuro, debe incluir una esencia de lo que está escrito allí. – Reno

+1

Gracias, pero quiero hacerlo de forma programática. – shiami

3

respuestas posibles:

Antes de ICS y dispositivos que no enraizados

No hay manera de que pueda conectarse a un dispositivo a través de WiFi. No hay API para hacer. Bluetooth es su mejor opción o interacción del usuario.

Antes de ICS y dispositivos arraigados

No estoy seguro de si alguien cortó el código, pero cuando traté de hacer una conexión automática a un punto wifi me di cuenta:

  • El API es escondido dentro del SDK.
  • El método que hace la conexión comprueba el hilo que lo piden. Si no es el hilo del os, arroja una excepción.

Uso de ICS

Con ICS hay una nueva manera de conectar dispositivos a través de Wi-Fi llamados Wi-Fi Direct. Aquí hay un link con algunas demostraciones.

+1

Tal vez te esté malinterpretando, pero el [WifiManager] (http://developer.android.com/reference/android/net/wifi/WifiManager.html) ha existido desde API v1 y sus responsabilidades enumeradas incluyen configurar redes y establecer conexiones. Si quiere decir después de que están en la misma red y no pueden conectarse entre sí una vez en la misma red, eche un vistazo a [NanoHttpd] (http://elonen.iki.fi/code/nanohttpd/) que usa un ServerSocket para escuchar las conexiones entrantes. – brianestey

0

Si va a desarrollar su propia aplicación para todos y cada uno de los terminales (dispositivos), entonces creo que para usted la programación de socket hará el truco.

Sí, Android admite la programación de socket de la misma manera que la programación de socket java.

1ra. Tutoriales de programación del zócalo Java de Google y luego puede usar el mismo conocimiento en android.

Asimismo, no olvide incluir el permiso usos de Internet en el manifiesto, en realidad eso es algo, que se comió mi cerebro durante mucho tiempo :)

0

¿Quiere decir la comunicación entre dispositivos habilitados para Wi-Fi sin ningún tipo de servidor como p2p? si es así su wifi directo que es compatible con ICS mira esto http://developer.android.com/reference/android/net/wifi/p2p/package-summary.html

Antes de ICS no hay una API android estándar para wifi directo, aunque Galaxy S2 tiene wifi directo utiliza API patentadas que los desarrolladores de terceros no pueden usar.

+0

Quiero hacerlo con la estructura cliente-servidor. – shiami

0

I no sabe programmically crear wify LAN, pero puede crear wify LAN manualmente, entonces usted puede hacer java programa de TCP/UDP según lo dicho por brianestey

"En cuanto a su segunda pregunta, la forma de comunicarse - que necesita para establecer una conexión entre los dispositivos. Para esto, necesita la dirección IP del servidor. Lo más simple sería mostrar la dirección IP en la IU del servidor y luego ingresarla manualmente en los clientes y presionar Conectar. luego establece una conexión con el servidor en un puerto conocido y puedes enviar mensajes entre el cliente y el servidor ".

para la conexión manual de seguir los pasos

  • ajustes de la toma/ajustes de punto de acceso inalámbrico & redes/Wi-Fi portátil de uno cualquiera de los teléfonos

  • crear nuevo punto de acceso y activar la función Wi-Fi zona Wi-Fi desde allí

  • conectar el resto del dispositivo a la zona activa, incluido el PC

  • usted recibirá IP de cada dispositivo programmically (PC includig, pero no sé)

Cuestiones relacionadas