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

arrow_back Aula 08 - Localização e Mapas

Localização

Obtendo a Localização

Para obtermos a localização de um usuário, precisamos requisitar ao Android acesso ao serviço que provê as aplicações com informações sobre a localização do usuário. Esse serviço é fornecido através do LocationManager e é obtido através de uma chamada ao método Context.getSystemService(Context.LOCATION_SERVICE). Através dessa chamada, obtemos uma instância do LocationManager, que é responsável pelas atualizações da localização do usuário. Vejamos na Listagem 1 como devemos implementar um código para receber a localização do usuário.

O código a seguir deve ser incluído dentro de seu método onCreate(). O Android pode solicitar, por padrão, que sejam feitos testes se as permissões necessárias estão liberadas pelo usuário ou não, através de ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION).

Listagem 1 - Utilizando o LocationManager

Os métodos são bastante explicativos e os comentários ajudam a definir a utilidade de cada um. O destaque vai para o método onLocationChanged, que é o responsável por notificar a aplicação de uma mudança na localização que tenha sido detectada pelo Manager.

Outro ponto importante a se notar são as chamadas à função requestLocationUpdates. Essa função é a responsável por pegar uma instância do LocationManager e indicar qual (ou quais, como no exemplo) serviços de localização aquela instância ouvirá. O primeiro parâmetro indica qual será esse serviço. No caso da utilização de ambos os serviços, como no exemplo, basta fazer duas chamadas ao método e ele se registrará em ambos os provedores de localização. O segundo parâmetro indica qual é o tempo que deve haver entre a requisição atual e a anterior para tornar um resultado notificável. Já o terceiro parâmetro indica a diferença de distância que há entre notificações, ignorando também as que ficarem abaixo da estipulada. Em casos como o do exemplo, nos quais ambos os parâmetros são configurados para zero, as atualizações devem ocorrer independente da distância e na maior taxa possível. Já o último parâmetro é o LocationListener responsável por prover os callbacks necessários.

Como qualquer outra funcionalidade que você utiliza do Android, antes de compilar a aplicação, é necessário adicionar ao Manifest a permissão necessária para aquela funcionalidade. No caso da utilização da localização do usuário, temos duas permissões que podem ser adicionadas, dependendo de qual provedor de localização a sua aplicação vai utilizar. No caso da utilização dos dois, basta adicionar a permissão de localização fina, que já inclui as duas. As permissões são:

android.permission.ACCESS_COARSE_LOCATION utilizada quando o provedor utilizado na aplicação é apenas o provedor de Network Location;

android.permission.ACCESS_FINE_LOCATION, utilizado quando a aplicação vai acessar o GPS e também no caso da aplicação utilizar os dois provedores de localização.

Agora que já vimos o básico de como adicionar localização à nossa aplicação, vamos ver brevemente algumas soluções conhecidas para os problemas citados na seção: "Problemas para se obter a localização do usuário".

Versão 5.3 - Todos os Direitos reservados