Android: comunicación entre dos dispositivos

¿Cuál es la mejor manera para que una aplicación de Android instalada en dos dispositivos se comunique entre sí? ¿Pueden los dispositivos conectarse directamente sin usar mensajes de texto?

Puede conectarlos a través de bluetooth usando BluetoothSockets. El sitio web para desarrolladores de Android tiene una documentación bastante buena sobre esto.

http://developer.android.com/guide/topics/wireless/bluetooth.html

O si prefieres (y tienes internet en ambos dispositivos), puedes usar Socket’s regulares.

http://developer.android.com/reference/java/net/ServerSocket.html para el lado del servidor http://developer.android.com/reference/java/net/Socket.html para el lado del cliente

Si tiene una gran cantidad de datos para transferir, los sockets de Internet tienen una mayor capacidad de datos y serán más rápidos. La otra ventaja es que no existe tal cosa como “fuera de rango”. Puede conectar los dos dispositivos donde esté disponible Internet, mientras que con bluetooth tienen que estar dentro del rango de bluetooth de cada uno

Tiene varias opciones, dependiendo de sus requisitos y configuración:

  • Si sus dispositivos están muy cerca uno del otro (hasta unos 10 metros), puede comunicarse utilizando Bluetooth, como sugirió Derek.
  • Si sus dispositivos están un poco más alejados, pero dentro del scope de Wi-Fi (hasta aproximadamente 100 metros), entonces pueden comunicarse entre sí mediante la API WiFi punto a punto, documentada aquí (parte de la API inalámbrica de Android). . Esto no requiere que esté presente un enrutador WiFi, y los dispositivos se encontrarán y se comunicarán directamente. Sin embargo, esto requiere Android 4.1 o superior.
  • La API inalámbrica de Android también funcionará si sus dispositivos están en la misma red local (es decir, usan el mismo enrutador WiFi), incluso si no están dentro del scope de la otra.
  • Si ninguna de estas opciones es viable / garantizada, entonces estoy de acuerdo con Derek en que la forma más fácil sería usar ServerSocket y Socket para crear una interfaz servidor / cliente a través de Internet. Aquí hay una aplicación de muestra que hace eso. El principal problema que puede encontrar es que si el servidor está sentado detrás de un NAT (como un enrutador de Internet doméstico), tendrá que configurar el NAT para reenviar los paquetes entrantes a su servidor Android.

puedes usar PubNub . maneja todas las redes y solo debería preocuparse por los mensajes. tiene una gran API para funcionar.

(Gracias a @Ian Jennings: ¿Podemos enviar datos desde un dispositivo Android a otro dispositivo Android directamente (p2p) sin un servidor en el medio? )

Depende de lo que estás haciendo. Si tiene un servidor, es posible que pueda enviarle un mensaje y que el otro dispositivo lo retire (suponiendo que ambos tengan instalada la aplicación). Creo que esta sería la forma más intuitiva (pero realmente depende de lo que estás comunicando).

Los mensajes de texto y el correo electrónico pueden funcionar, pero usted (o el usuario) necesita saber los números / correos electrónicos asociados con un dispositivo para hacer eso.

¡La API android NSD está hecha para hacer exactamente lo mismo que intentas lograr! ¡El ejemplo incluido con SDK es auto explicativo!

por favor, compruebe:

Ejemplo de Android NSD API

deberías echarle un vistazo a WifiDirect

Wi-Fi punto a punto (P2P) permite Android 4.0 (API nivel 14) o dispositivos posteriores con el hardware apropiado para conectarse directamente entre sí a través de Wi-Fi sin un punto de acceso intermedio.