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,


No hay comentarios:

Publicar un comentario en la entrada