Home Menu

Menu



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  
Viejo 05/11/12, 11:12:20
Avatar de superroko2
superroko2 superroko2 no está en línea
Miembro del foro
Mensajes: 93
 
Fecha de registro: oct 2012
Mensajes: 93
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Dudas con el GPS

Buenas

Estoy desarrollando una aplicación que actualmente tiene tres Activities:

1) Pantalla de logueo que conecta con una BD en MySQL externa.
2) Pantalla que detecta el GPS, obtiene la latitud y longitud actual, envía esos datos a un PHP y recibe unos resultados (varios pares de latitud-longitud). Esto lo hace con AsyncTask.
3) Dibuja los pares de latitud-longitud obtenidos anteriormente en un MapActivity.


El problema: Es que la aplicación está bastante tiempo pensando (AsyncTask) mientras no recibe los datos necesarios del GPS (OnLocationChanged).

Propuesta: Que solo abrir la aplicación, mientras vayas logueandote ya vaya detectando el GPS. Si cuando te has logueado y pasas a la siguiente Activity ya tiene la señal obtenida, la trata directamente. Si no, entonces si te salga el ProgressDialog y siga intentando detectar una señal.

·Aunque pueda parecer absurda, la Activity central es imprescindible, porque aparte de detectar el GPS (que lo podría hacer la propia MapActivity), muestra unos resultados y necesita la interacción del usuario antes de pasar a la MapActivity.

·Tenía pensado hacer:

- Juntar las dos primeras Activities todo en una, y en vez de tener dos Activities, tener dos layouts y cuando se haya logueado y tenga que pasar a mostrar los datos, simplemente cambié el layout (SetContentView).

El problema es que no sé si eso es buena idea? Eso se puede hacer? Se hace? Es muy ineficiente?

Que opináis? Que otras soluciones se os ocurren?

Gracias.
Responder Con Cita


  #2  
Viejo 05/11/12, 11:35:02
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Pon el código en la pantalla de Login, usa un flag para indicar si has obtenido la posición en el OnLocationChanged. En la segunda Activity consulta ese flag, y si está activo consulta la posición con getLastKnownLocation usando un LocationManager.

Si no está activo entonces puedes usar un AsyncTask que consulte el flag y cuando esté activo obtenga el getLastKnownLocation.

Lo del flag te lo digo porque puede ser que la posición que te de getLastKnownLocation no esté actualizada, así te aseguras que será la última desde que abriste el programa.
Responder Con Cita
  #3  
Viejo 05/11/12, 12:07:26
Avatar de superroko2
superroko2 superroko2 no está en línea
Miembro del foro
Mensajes: 93
 
Fecha de registro: oct 2012
Mensajes: 93
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Nunca usé flags, me puedes pasar algún enlace con algún pequeño ejemplo o explicación? Gracias.
Responder Con Cita
  #4  
Viejo 05/11/12, 12:17:16
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Un flag es sólo un valor booleano que te dice si algo ha ocurrido o no. Lo único que tienes que hacer es en el OnLocationChanged poner un booleano a True y luego después consultarlo en la otra Activity.

Obviamente debes tener acceso a ese booleano desde las 2 Activities.
Responder Con Cita
  #5  
Viejo 05/11/12, 12:26:23
Avatar de superroko2
superroko2 superroko2 no está en línea
Miembro del foro
Mensajes: 93
 
Fecha de registro: oct 2012
Mensajes: 93
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por kriogeN Ver Mensaje
Obviamente debes tener acceso a ese booleano desde las 2 Activities.
Ostias, vale vale. El otro día un compañero también me hablaba de flags en otro campo fuera de Android y me empezaba a perder. Nunca me habían introducido ese termino como tal.

Lo de acceder con ese booleano desde las dos Activities, hay algún método distinto que pasar dicho booleano por Bundle?

Un saludo ;)
Responder Con Cita
  #6  
Viejo 10/11/12, 01:28:38
Avatar de dann41
dann41 dann41 no está en línea
Miembro del foro
Mensajes: 37
 
Fecha de registro: ene 2009
Localización: Barcelona
Mensajes: 37
Modelo de smartphone: HTC One S
Tu operador: Pepephone
Mencionado: 0 comentarios
Tagged: 0 hilos
Si el flag se encuentra en el listener es tan fácil como crear un método para obtener el valor.
Si desde alguna actividad no tienes acceso al listener podrías utilizar el patrón singleton para obtener la instancia del listener y acto seguido consultar ese flag. O declarar el flag cómo público y estático y acceder a él directamente.


FotoPuzzle de DGL Apps. Disfruta de tus ratos muertos.
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 22:13:41 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007