.
#3 Se puede hacer en Java, por poder lo puedes hacer donde querias.
Al final, si es API rest, la logica importante no lo tiene la aplicación si no el server. Así que Kotlin, o java, o lo que sea, solo tiene que hacer instrucciones muy basicas de "Llama a esto" "escucha este canal para cambios" "bajate los cambios de este sitio"
Ahora bien...mejor Kotlin
#6 El chaval quiere montarlo todo con java. Quieres explicarle tu como se haria con websockets?
Poder se puede hacer con api rest, otra cosa es que no sea tan efectivo
#7 no joe, no hice un chat en mi vida y me sorprendió, juraría que había protocolos más apropiados o algo, pero la verdad, si el rendimiento no es super problemático tiene que funcionar perfectamente ahora que lo pienso
No...no a todo.
Viendo que no vamos sobrados, con centrémonos.
Vamos a suponer, que lo hacemos básico, chats entre dos usuarios. Así que necesitaremos, tu aplicación de usuario, y una pequeña aplicación de servidor.
Una Api Rest a grandes rasgos, no es más que hacer llamadas como si un navegador se tratará, solo que en vez de devolver un html muy mono, pues te devuelve si todo a ido bien, o en este caso, que mensajes tiene un usuario.
Al final, en el servidor, tendrás un par de urls, a las que hacer llamadas para poder guardar un mensaje y poder leer los mensajes del usuario (Por ahora dejémoslo básico y ya la hacemos inteligente después)
De inicio, solo necesitas dos urls, una para leer los mensajes, y otra para añadir un mensaje.
La de añadir un mensaje le tienes que pasar tres campos, el usuario que envía, el usuario que recibe y el mensaje, y esas tres cosas, a una base de datos
La de leer el mensaje solo necesita el usuario que esté ahora mismo en la aplicación.
Por ahora déjala "Tonta" ya le darás luego vueltas para hacerla segura con sus contraseñas su cifrado y demás, pero pafa empezar, y saber por donde van los tiros, puedes empezar por tener una estructura como la de arriba.
Una aplicación de "web", ya sea en Php, Java o lo que más rabia te de, con dos urls, una para guardar y otra para leer, y conectada a una base de datos.
Alguno de por aquí le dará una embolia por ver que los usuarios con contraseña lo pongo como extra cuando es algo súper basico, pero te veo un pelin...perdido, entonces primero ciñete a hacer algo pelado, para ver un poco por donde va esto, y luego ya, una vez sepas...por donde da el aire por así decirlo, podrás y mejorándolo.
Por ahora, olvídate de la aplicación como tal, y piensa en el servidor con su base de datos y demás. Si te ves muy muy perdido, hay tutoriales de Laravel, framework de php, por decirte uno que sea súper sencillo de usar
Si no te sabes montar una API REST o utilizar web sockets no va a ser una "aplicación real" por que no la vas a tener online.
Como has dicho sabes utilizar SQLite, entonces haz una base de datos que tenga usuarios y chats y mensajes.
Un chat tiene 2 usuarios.
Un mensaje tiene un usuario, el mensaje, el timestamp o momento, y el chat al que corresponde.
Cuando te metes en la aplicación, utilizas el usuario y entras, lees la tabla de chats donde se encuentre el id del usuario, al entrar en un chat lees de la tabla de mensajes donde el id del chat sea el del chat donde estes metido y los devuelves por momento, al escribir un mensaje escribes en la tabla de mensajes con el id del chat, el id del usuario, el mensaje y el momento y vuelves a leer los mensajes del chat y lo reflejas en la aplicación.
Obviamente esto no tiene ningun sentido como aplicación real pero para clase supongo que te valdrá.
Si no... lo que te han dicho por arriba, te coges un framework de backend y diseñas una API REST
Una forma sencilla de implementar un chat lo más real posible es usar firebase. En google tienes miles de ejemplos https://www.google.com/search?q=firebase+chat&oq=firebase+chat&aqs=chrome..69i57j0l3.2685j0j7&sourceid=chrome-mobile&ie=UTF-8
Pero vamos a ver, hay mejores metodos de hacer un chat que una api rest, wtf?
La mejor comunicación para un chat es por sockets, dejad de confundir al chaval y si, en java existen los sockets, no es algo que solo tenga socket.io chicos xddd
Levanta un MySQL en tu ordenador, utiliza ngrok hacia el puerto de la base de datos.
Ahora desde el móvil puedes utilizar la dirección que te da ngrok para hacer llamadas a tu base de datos
Saludoss
#15 Te voy a hacer varias preguntas.
Te obligan a hacer algo por red? Es decir, cliente-servidor
Te obligan a tener tu aplicación servidor alojada en algún sitio?
Has dado sockets en java? Lo más sencillo si tienes que hacerlo tú es montarte una app que abre un ServerSocket y luego las app de andorid se conectan al puerto ese y listo. Tendrá que estar todo sobre la misma LAN claro. Si tienes que tenerla alojada en algún sitio pues incrementa un poco el trabajo (tampoco mucho, es subir la app al server, lanzarla y abrir puertos).
Es obligatorio el uso de bases de datos? Un chat puede ir sin base de datos perfectamente. Será en tiempo real y ya está.
Realmente necesitas hacer una app de android ha sido cosa tuya meterla?
Y dicho esto si no quieres utilizar XMPP o algún protocolo ya hecho pues tendrás que implementarte el protocolo y todo el tema de sockets dicho arriba
A ver, supongo que no vas a usar firebase porque tienes dispositivos sin play service, correcto?
Yo sé ti usaría lo siguiente:
Una db en un servidor para el login mediante peticiones, en la que tendrás que guardar el usuario y con quien está vinculado.
Socket.io para montarme un servidor de sockets y usar la librería de socket.io que está en java.
La app tiene que estar en la misma red local o tiene que ser a través de inet?
He leído que no te obligan a nada, entonces puedes usar wifi-direct, quizás hasta buscando un poco por GitHub te lo encuentres hecho.
#20 yo usaría amazon, pero yo al final soy desarrollador de android y supongo que alguien de backend te podrá recomendar algo más sencillo.
Con wifi-direct no vas a necesitar sockets para nada, lo malo es que vas a tener que meter la DB en la app o tirar una petición a un servidor y eso no sirve para simular una app real, es bastante cutre.
Yo monté a pelo un servidor de websockets en php para hacer un chat.
Después lo migramos a socket.io para facilitar las cosas.
#18 A ver, el problema es que piensas que las app de android se comunican entre ellas y no es así xD. Vas a necesitar una app para el servidor independiente de tu app android. Tu app del server puede ser un simple jar y ya está aunque necesitarás una BD ya que vas a tener gestión de usuarios.
Tienes miles de ejemplos en la red de aplicaciones de chat en java. Busca java chat tutorial que los tienes hasta en español. Tendrás que añadir el inicio de sesión que comprobará contra tu BD y el cliente en vez de ser un CLI o algo hecho con swing como te vendrá en los tutoriales, será la app Android pero la forma de conectar y demás será igual
Te digo que mires un tutorial que te lo de hecho para que empieces a trabajar sobre una base porque estás perdidísimo en apps cliente-servidor y no sabes como plantearlas. Esto no te lo tomes como un insulto porque nos ha ocurrido a todos (y nos ocurre cuando tocamos algo nuevo) y te digo, bajo mi opinión, la forma más rápida para que empieces a entender como funcionan y no te tires 3 días para montar un ServerSocket y conectarte a él cuanso son literalmente 5 líneas de código.
Hay tutoriales por ahí que montan cosas parecidas sin Firebase:
https://www.youtube.com/watch?v=gCj9Egt3yUI
https://dev.to/medaymentn/creating-a-realtime-chat-app-with-android--nodejs-and-socketio-4o55
https://www.titechglobal.com/build-a-chat-application-in-android-using-xmpp/