Um requisito necessário para o funcionamento do SmartAd é saber a localização dos utilizadores num dado momento. Num cenário académico, não temos acesso a essas informações, e portanto o objectivo foi desenvolver uma aplicação que enviasse para um servidor a localização do utilizador. Esta aplicação foi desenvolvida para o sistema operativo Android.
Tomada a primeira decisão, foi necessário identificar o método de comunicação entre o dispositivo móvel e o servidor. A solução utilizada foi o Jabber, protocolo XMPP, pois através do mecanismo publish/subscriber permite processar as mensagens sempre que um utilizador muda de localização. Adicionalmente é um protocolo orientado a texto, e as mensagens trocadas são XML, sendo bastante fácil extender. A biblioteca utilizada para comunicação via XMPP foi a Smack [1]

A primeira dificuldade, foi encontrar a API no Android que permitisse notificar a aplicação sempre que o utilizador mudasse de localização. O Android têm esse suporte ao nivel do sistema operativo, e têm também uma API de alto nível, event-driven, que dispara sempre que o utilizador se move num determinado raio de acção (configuravel) [2] .
O segundo passo foi fazer a conexão ao servidor Jabber (gmail foi o escolhido). Definiu-se então o tipo de mensagens enviadas pelo daemon para o servidor identificando o telemóvel e a sua localização. Segue-se a mensagem, em formato XML:
<geo>
<location>
<latitude> LATITUDE_VALUE </latitude>
<longitude> LONGITUDE_VALUE </longitude>
</location>
<IMEI>IMEI_VALUE</IMEI>
</geo>
Por fim todo este serviço corre como um serviço background, conseguido à custa da extensão da classe Service da API do Android. Como auxilio a esta tarefa foi utilizado um post num blog em [3].
Segue-se a foto da aplicação a titulo ilustrativo:
[1] - www.igniterealtime.org/projects/smack/
[2] - http://developer.android.com/reference/a
[3] - http://mylifewithandroid.blogspot.com/20
. Contexto
. Ligação entre Sofia-Sip c...
. Android: Daemon de geo-lo...