TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Geolocalização Desenvolvida

Por:   •  7/10/2016  •  Resenha  •  1.595 Palavras (7 Páginas)  •  315 Visualizações

Página 1 de 7

TUTORIAL – Android – Geolocalização

Postado 20 de setembro de 2012 por Renan Drabach 

Se você deseja explorar os serviços de geolocalização para sua aplicação Android é bem simples começar. Neste tutorial apresentaremos as ferramentas básicas que a API do Android disponibiliza para enriquecer seu aplicativo.

Os serviços de localização que o Android disponibiliza para as suas aplicações são acessíveis através das classes do pacote android.location. O componente central deste framework de localização é o serviço de sistema LocationManager que fornece a API responsável por determinar a localização geográfica.

Assim como outros serviços de sistema, não é possível instanciar diretamente o LocationManager. A utilização dele deverá ser a partir de uma requisição da sua instância pelo sistema da seguinte forma:

  1. LocationManager locationManager =
  2.         (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

 

Este método retornará uma instância de um LocationManager que permitirá que sua aplicação faça 3 coisas:

1. Consultar a lista de todos os LocationProviders para o último local conhecido do usuário;

2. Registrar e desregistrar atualizações periódicas da localização do usuário através de um provider (especificado por um critério ou nome);

3. Registrar e desregistrar um determinado Intent para ser disparado se o dispositivo entrar nas proximidades de certa latitude/longitude (especificada pelo raio em metros).

Na maioria dos casos os LocationProviders disponíveis serão:

LocationProvider

Fonte

Descrição

Precisão

Consumo de bateria

GPS_PROVIDER

GPS, AGPS

Utiliza o receptor GPS do dispositivo para determinar a localização via satélites

2-20m

Alto

NETWORK_PROVIDER

AGPS, CellID, WiFi MACID

Utiliza a rede móvel ou Wi-Fi para determinar a melhor localização

60-500m

Médio-baixo

PASSIVE_PROVIDER

CellID, WiFi MACID

Permite participar de atualizações da localização através de outros componentes para preservar a energia da bateria

~1,6km

Baixo

Quer saber quais são os providers disponíveis?

Então utilize o método android.location.LocationManager.getAllProviders() que retornará uma lista dos nomes de todos os providers conhecidos, incluídos aqueles que não possuem permissão de acesso e os atualmente desabilitados.

  1. List matchingProviders = locationManager.getAllProviders();

 

Permissões de usuário

Para receber as atualizações de geolocalizações é necessário adicionar no AndroidManifest algumas permissões, dependendo do LocationProvider a ser utilizado:

android.permission

LocationProvider

ACCESS_FINE_LOCATION

GPS_PROVIDER
NETWORK_PROVIDER
PASSIVE_PROVIDER

ACCESS_COARSE_LOCATION

NETWORK_PROVIDER

Requisitando atualizações de localização

Para realizar a captura dos dados de localização será necessário registrar um listener para receber essas atualizações e repassá-las à aplicação. Deverá ser chamado o método requestLocationUpdates passando o nome do Location Provider e o LocationListener que é responsável por implementar os métodos que serão chamados quando mudar a localização do usuário ou o status do serviço. Para demonstar melhor será apresentado o trecho de código correspondente:

  1. // Adquire a referência ao Location Manager
  2. LocationManager locationManager = (LocationManager) this
  3.                 .getSystemService(Context.LOCATION_SERVICE);
  4.  
  5. // Define o listener que responde às atualizações de localização
  6. LocationListener locationListener = new LocationListener() {
  7.  
  8.         @Override
  9.         public void onLocationChanged(Location location) {
  10.                 // Chamado quando uma nova localização é encontrada
  11.  
  12.                 location.getLatitude();// Latitude coletada
  13.                 location.getLongitude();// Longitude coletada
  14.         }
  15.  
  16.         @Override
  17.         public void onStatusChanged(String provider, int status, Bundle extras) { }
  18.  
  19.         @Override
  20.         public void onProviderEnabled(String provider) { }
  21.  
  22.         @Override
  23.         public void onProviderDisabled(String provider) { }
  24. };
  25.  
  26. // Registra o listener com o Location Manager desejado para receber as atualizações
  27. locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0,         0, locationListener);

 

Para que a aplicação não gere um consumo demasiado de energia da bateria, podemos remover o listener para evitar que fique recebendo atualizações.

  1. locationManager.removeUpdates(locationListener);

 

Existem algumas formas de melhorar e agilizar a captura de informações de localização pela sua aplicação. Utilizando o objeto Criteria, por exemplo, é uma maneira de obter o melhor provider.

  1. // Define um critério para selecionar o location provider
  2. Criteria criteria = new Criteria();
  3. provider = locationManager.getBestProvider(criteria, false);
  4.  
  5. // Retorna a localização com a data da última localização conhecida
  6. Location location = locationManager.getLastKnownLocation(provider);

 

Você quer utilizar um locationProvider mas ele está desabilitado?

Se, por exemplo, a sua aplicação precisa utilizar dados do GPS para obter uma localização mais precisa, é possível testar se ela está disponível através do método isProviderEnabled(). Caso esteja desabilitada poderá ser feita uma requisição ao usuário através de um novo Intent para habilitá-la. Observe o código a seguir:

...

Baixar como (para membros premium)  txt (11.1 Kb)   pdf (205.7 Kb)   docx (18.5 Kb)  
Continuar por mais 6 páginas »
Disponível apenas no TrabalhosGratuitos.com