Estoy trabajando en una aplicación de Android que permite a los no programadores programar un robot educativo usando un lenguaje de programación visual (basado en Blockly). Este robot ejecuta una máquina virtual lua y puede configurar su propia red wifi a la que me conectaré desde mi dispositivo Android.
Necesito enviar el código al robot y debo hacerlo desde la vista web de Android porque es importante que el usuario pueda seguir viendo el programa basado en bloques mientras el robot lo ejecuta y envía comentarios al dispositivo móvil (que resaltará los bloques de código que se ejecutan en tiempo real). Básicamente: necesito enviar y recibir datos desde el interior de una vista web de Android a través de un socket tcp sin formato usando mi propio protocolo de comunicación.
He estado buscando información sobre cómo solucionar esto. Hasta ahora he aprendido:
No encontré una manera de usar sockets tcp sin procesar dentro de la vista web.
Sin embargo, pude solucionar este problema vinculando una interfaz javascript a mi vista web que permite la comunicación entre la vista web y la interfaz (una clase Java), luego en la interfaz implementé el zócalo tcp fácilmente ya que es Java.
Información de la interfaz Javascript: https://developer.android.com/guide/webapps/webview.html#BindingJavaScript
La forma en que solía comunicarme desde Android a la vista web era definir una función javascript en el archivo js que se ejecuta dentro de mi vista web, llamémoslo "myJsFunction()", que se llamará usando el método loadurl() de WebView, así:
WebView myWebView = ...; myWebView.loadUrl("javascript:myJsFunction()");