lunes, 16 de julio de 2012

Geolocation en el Evento Start?

Muchas veces nos hemos encontrado con situaciones en aplicaciones de Smart Devices que queremos averiguar algo del dispositivo apenas entra a una pantalla. Lo que muchos hacemos es programarlo en el evento Start. Pero, como los eventos Start, Refresh y Load de los objetos SD son ejecutados en el servidor, esto no lo podemos hacer.

Un ejemplo es la ubicación geográfica del dispositivo. Se quiere tener cuando se "abre" una pantalla determinada, la ubicación del dispositivo.
Un tip que, en varios casos, sirvió para poder sortear esta limitación es calcular el la ubicación geográfica en el llamador para luego pasarla por parámetro al objeto llamado.

En el objeto llamador tenemos una acción con el siguiente evento asociado:


Event 'Call'
Composite
&GeolocationInfo = GeolocationAPI.GetMyLocation(0,0,false)
UsesGeoloc.Call(&GeolocationInfo.Location)
EndComposite
Endevent


Allí se calcula la posición actual y luego se llama al objeto que realmente la va a utilizar.
parm(in: &Geolocation)
En el objeto donde se quiere tener la ubicación geográfica del dispositivo se recibe por parámetro y listo.

Cosas a tener en cuenta:

a. En el Objeto UsesGeoloc tenemos la info disponible en el Evento Start ya que fue recibida por parámetro
b. La variable &Geolocation es de tipo Geolocation y la variable &GeolocationInfo es de tipo GeolocationInfo

Nota:
No solo sirve para información geografica sino para acceder a cualquier informacion de un dispositivo sin tener que ejecutar un evento de usuario desde la pantalla donde se necesita usar dicha información.


Recursos: Links de interés para completar este ejemplo:
http://wiki.gxtechnical.com/commwiki/servlet/hwiki?GeoLocation+-+GetMyLocation+Sample,
Esta el xpz para bajar disponible en: http://wiki.gxtechnical.com/commwiki/servlet/hwiki?File%3AExample+Geoloc+in+Start+for+blog,


1 comentario:

  1. Buenas tardes, en una app estamos guardando la ubicación geográfica del dispositivo. y usamos la misma API.
    Cuando los dispositivos tienen servicio de datos o Wifi funciona muy bien, pero en ciertos lugares que no hay servicio de datos ni Wifi solo funciona le gps, en esta instancia tenemos un problema: toma la ultima ubicación geográfica por datos o Wifi, ósea puedo estar en distintos lugares y siempre me guarda la misma ubicación geográfica conocida.
    Descargue una app de Google my tracks o mi ruta, la ejecute registra todo el recorrido aun estos casos de no tener datos ni Wifi, y por mi sorpresa mi app toma perfecto las ubicaciones geográficas.
    Pregunta. la función GetMyLocation actualiza la ubicación geográfica, la almacenada en el dispositivo y luego la lee? ¿O solo la lee?
    Si solo la lee, como puedo actualizar ubicación geográfica del dispositivo?

    Desde ya muchas gracias
    Rafael

    ResponderEliminar