24 de abril de 2012

Utilizando o GPS no Android

Um dos recursos mais utilizados no hardware de todos os smartphones é, com certeza, a geolocalização. Este recurso é tão utilizado que atualmente vários aplicativos utilizam dele, tanto em aplicativos sociais como Twitter até aplicativos de entretenimento como jogos.

Não sabem vocês como é simples a utilização deste recurso. Uma vez implementada a interface responsável pelo monitoramento de requisições na mudança de coordenadas (latitude e longitude) e com suas devidas permissões no AndroidManifest.xml, tudo está feito.

Então agora, basicamente precisamos implementar a interface LocationListener e criar algumas variáveis globais:
Feito isto, seremos obrigados a implementar também todos os métodos dessa interface, que são eles:
  • onLocationChanged(Location location): Toda vez que a posição no android sofrer modificações durante a consulta da requisição, este método é acionado. Perceba que recebemos como parâmetro uma Classe do tipo Location onde justamente nela contém nossa latitude e longitude.
  • onProviderDisabled(String provider): Uma vez que é feita a requisição de atualização das coordenadas do android, se o nosso provedor, ou provider (GPS ou NETWORK) não estiver habilitado, este método é acionado. Geralmente, nele iremos disponibilizar algum alert com opção para abrir a tela de configurações do GPS para ativa-lo.
  • onProviderEnabled(String provider): Preciso realmente explicar? =P
  • onStatusChanged(String provider, int status, Bundle extras): Se o provider de nossas requisições sofra alguma mudança em seu status em runtime, este método é acionado.

Nossa interface será a responsável pelo tratamento de eventos durante essas atualizações. E como faremos para iniciar ou parar essas atualizações? Muito fácil, iremos utilizar o conceito de "Ciclo de Vida" de uma Activity. Basicamente, no método onResume() iremos iniciar a requisição e no método onPause() iremos para-la. Entendeu? Não? Perceba que toda Activity possui um ciclo que vai do onCreate até o onDestroy, mas esses dois métodos apenas ocorrem uma vez e seu aplicativo pode sofrer pausas (como recebimento de ligações, msg's e etc) durante sua execução!


Percebemos que nossa Activity agora está em perfeito ciclo de vida junto com nosso listener das atualizações de coordenadas. Não podemos esquecer de remover os updates das coordenadas pois o GPS é um dos fatores que mais gasta a bateria do aparelho.

Em nosso próximo post iremos aprender à solicitar provider baseados em nossas necessidades, pois as vezes o GPS não é o melhor provider para fazermos as requisições de posição. Por isso, utilizares uma classe chamada Criteria...

Abraço.

2 comentários:

  1. Boa noite Felipe, apliquei o exemplo mais ele só pega a localização da rede wifi, da rede 3g da erro...sabe o pq??


    abç

    ResponderExcluir
  2. Antonio, tudo bom? Estranho porque funciona aqui normalmente. Verifica se todas as permissões estão no AndroidManifest.xml (e.g. INTERNET, COARSE_LOCATION e FINE_LOCATION)

    ResponderExcluir