Cursos / Informática para Internet / Dispositivos Móveis / Aula

arrow_back Aula 08 - Localização e Mapas

Localização

Otimizando Aplicações com Acesso à Localização

Ao desenvolver aplicações que se utilizam da localização do usuário, podemos enfrentar diversos problemas, como os citados na subseção anterior. Esses problemas, apesar de serem consideravelmente complicados, possuem soluções plausíveis e de fácil implementação. Basta que tenhamos um plano para desenvolvê-las. Comecemos com o fluxo básico para obtenção da localização do usuário.

Após iniciar a aplicação, o primeiro aspecto a se perceber está relacionado à inicialização dos serviços de localização. Esse registro não precisa ser feito logo na inicialização, mas deve ser feito antes de qualquer chamada relacionada à localização. Escolha quais deverão ser os provedores utilizados e registre o Listener para responder a eventos que aconteçam neles. Esse passo é simples e foi discutido na subseção anterior.

Em seguida, é importante manter uma melhor estimativa do local possível. Isso pode ser feito através de critérios de tempo e precisão. Por exemplo, se uma informação de localização for mais nova que a outra e, porém, vier com uma precisão menor, pode valer a pena manter a informação antiga como sendo a válida, já que tinha uma precisão melhor. No entanto, caso a informação que tenha a melhor precisão comece a ficar muito antiga, é melhor arriscar e passar a mostrar baseado na menos precisa, pois isso ajuda a acompanhar o usuário, caso esteja se movendo. Não há uma métrica exata para isso e deve partir do desenvolvedor definir quanto é velho demais e quanto é uma perda de precisão considerável.

Depois de ter obtido a informação com precisão e em tempo adequado, deve-se parar imediatamente o serviço de localização, pois, como foi dito anteriormente, esses serviços são extremamente custosos no que diz respeito ao consumo de bateria. Após parar esse serviço, a última localização obtida deverá ser utilizada para futuras referências, até que haja a necessidade novamente de se obter uma nova localização. Também é importante usar essa última localização como base, caso seja necessário iniciar o serviço novamente. Como leva um tempo para os serviços iniciarem novamente, utilizar o último valor que havia sido adquirido, caso tenha sido adquirido há um tempo relativamente pequeno, pode acelerar a inicialização geral da aplicação.

Agora que já vimos o fluxo por completo, vamos discutir um pouco mais partes específicas.

  • Quando começar a buscar a localização?

    Esse é um ponto importante em uma aplicação que usa a localização. Nunca é demais ressaltar a importância de só manter as atualizações de localização ativas quando forem necessárias, a fim de economizar bateria. Porém, lembre-se que à medida que o tempo passa, as requisições costumam ficar mais precisas, então, é importante através de testes, tentativas e erros, encontrar o balanço entre precisão e tempo ativo dos provedores de localização. De qualquer maneira, a busca deve ser inicializada juntamente com a aplicação, ou quando os dados forem necessários pela primeira vez e se manter ativa pelo tempo que for necessário apenas.

  • Utilizando a última posição conhecida

    Como já dissemos, o tempo que leva até o serviço de localização começar a mandar informações para o Listener pode ser grande demais para que o usuário aguarde. Para contornar esse problema, o LocationManager tem o método getLastKnownLocation, que é responsável por retornar rapidamente a última posição conhecida do usuário. Utilizando esse artifício é possível inicializar sua aplicação baseada nessa posição enquanto as atualizações não começam a chegar.

  • Decidindo quando parar de receber a localização

    Aqui, mais uma vez, enfrentamos o mesmo problema relacionado à bateria. Se mantivermos a recepção de dados do provedor de localização ativa por muito tempo, faremos com que a bateria acabe muito rapidamente, o que não irá agradar nenhum usuário. O problema aqui é um pouco menor, pois é mais fácil saber quando é possível parar o serviço do que quando começá-lo adequadamente. Para parar o serviço de localização no seu aplicativo, basta tirar o registro do Listener, utilizando o método do LocationManager removeUpdates, passando o seu Listener.

Versão 5.3 - Todos os Direitos reservados