|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Ayuda al plantear desarrollo aplicación
Hola a todos!
Estoy empezando a hacer una aplicación y me surgen algunas dudas que espero que alguien me pueda ayudar a solventarlas. La cuestión es que, básicamente, en mi aplicación quiero tener un activity en el que se pueda rellenar un formulario y enviarlo a mi base de datos externa via servicio web en soap tantas veces como se quiera (una vez enviado se debe mostrar un mensaje de que se ha enviado y vaciar el formulario), pero a la vez tiene que tener funcionando el gps para que cada cierto tiempo (5-10 minutos) envíe posición del teléfono a la base de datos vía servicio web. Había pensado en una misma activity hacer ambas cosas, pero tener la parte de geolocalización en un hilo ( no sé si es correcto). Mis dudas surgen con el tema de los hilos, y son las siguientes: 1. Según he podido leer, para hacer llamadas soap se requiere crear un nuevo hilo. En tal caso, ¿Cómo podría yo pasar elementos del layout de mi pantalla al hilo o la inversa? ¿Se pueden pasar de forma conjunta? ¿Utilizo una única clase AsyncTask para enviar cualquier petición soap? 2. ¿Cómo gestiono el tema de que a la vez que se muestra el formulario que pueden rellenar los usuarios también esté mi LocationManager trabajando y enviando la posición del teléfono vía servicio web? No quiero que la posición se deje de enviar, me da igual que en vez de ser 5 minutos tarde algunos segundos de más. No sé si me he explicado bien y tampoco sé si mis preguntas pueden ser demasiado obvias, pero el caso es que quiero plantear bien la aplicación y ando algo perdido ![]() Espero que alguien me pueda ayudar, espero poder ayudar a alguien cuando vaya pillando experiencia. ![]() Gracias por adelantado y perdón por la parrafada!! |
|
#2
|
||||
|
||||
Primero de todo, ¿la posición GPS sólo se debe enviar cuando estés en la activity o en cualquier parte de la app? Si es lo primero lo puedes meter en un hilo aparte, si es lo 2º en un hilo aparte pero en un Service.
Para pasar elementos lo puedes hacer con un AsyncTask y pasar por el constructor o como parámetros del comando execute(...) los datos a enviar. Otra opción es que el AsyncTask sea una clase privada dentro de la activity con lo cual pueda acceder a los elementos de la interfaz que tengas. Un ejemplo del tema del AsyncTask, aquí se pasa en el constructor la activity con lo cual puedes coger los elementos de la interfaz con un activity.findViewById(): http://samir-mangroliya.blogspot.com...ask-class.html Un saludo. |
#3
|
||||
|
||||
Muchas gracias Arasthel!!
En principio sería siempre en la misma acitvity (si no cambio de opinión...jaja). He leído por ahí que realmente no hace falta crear hilos para gestionar temas de LocationManager...no sé si realmente es así o no. ¿Tu crearías un hilo en el que crearías el location Manager? Otra pregunta es si cuando haces "locationManager.getLastKnownLocation" recibes actualizaciones de posicion automáticamente o no? Yo necesito enviar cada 5 o 10 minutos una actualización de posición a una base de datos externa mediante webservice. ¿Me explico? No sé como podría gestionar esto para enviar los la lognitud y latitud a la BBDD. Lo de los parámetros del método execute() lo tenía en cuenta, pero creía que al crear la AsyncTask, aunque fuese una clase privada dentro del activity no podía acceder a los controles básicos tipo botones y demás.... Te agradezco enormemente la ayuda! ![]() Última edición por adrivid Día 13/06/14 a las 13:32:46. |
#4
|
||||
|
||||
Sinceramente, la última vez que trabajé con GPS fue hace mucho y no recuerdo bien cómo gestionaba todo esto.
Por lo visto no hace falta montarse un hilo para lo del GPS, puedes recibir los datos mediante un listener: http://www.androidhive.info/2012/07/...ager-tutorial Fíjate en el método onLocationChanged del enlace anterior, si lo quieres cada x minutos puedes sacar con System.currentTimeMilis() el momento en el que enviaste y que si no han pasado más de X milisegundos desde entonces no se vuelva a enviar. Sin embargo, para enviarlos sí necesitarás un hilo aparte o una librería como ION o similares que de fondo hagan la llamada al webservice por ti. Yo los enviaría como un JSON y que el webservice ya parsee y meta en la BD como necesite. Un saludo. |
#5
|
||||
|
||||
Gracias Arasthel.
Lo del hilo para hacer llamadas al webservice lo tenía claro. Lo haré mediante ksoap, aunque aún no sé bien bien como trabaja, ya que nunca lo he utilizado. Os iré contando. Por cierto...el link que me has pasado me aprece muy interesante, me vendrá de fábula. Muchas gracias!!! Última edición por adrivid Día 13/06/14 a las 15:28:46. |
![]() |
![]() |
||||||
|