Existem 3 fornecedores de localização no Android.
Eles são:
gps -> (GPS, AGPS): Nome do provedor de localização GPS. Este provedor determina a localização usando satélites. Dependendo das condições, esse provedor pode demorar um pouco para retornar uma correção de local. Requer a permissão android.permission.ACCESS_FINE_LOCATION.
rede -> (AGPS, CellID, WiFi MACID): Nome do provedor de localização de rede. Este provedor determina a localização com base na disponibilidade de torre de celular e pontos de acesso Wi-Fi. Os resultados são recuperados por meio de uma pesquisa de rede. Requer uma das permissões android.permission.ACCESS_COARSE_LOCATION ou android.permission.ACCESS_FINE_LOCATION.
passivo -> (CellID, WiFi MACID): um provedor de localização especial para receber locais sem realmente iniciar uma correção de local. Esse provedor pode ser usado para receber passivamente atualizações de locais quando outros aplicativos ou serviços solicitá-los sem realmente solicitar os locais. Este provedor retornará locais gerados por outros fornecedores. Requer a permissão android.permission.ACCESS_FINE_LOCATION, embora se o GPS não estiver ativado, esse provedor poderá retornar apenas correções grosseiras. É o que o Android chama esses provedores de localização; no entanto, as tecnologias subjacentes para fazer essas coisas funcionarem são mapeadas para o conjunto específico de recursos fornecidos por hardware e telecomunicações (serviço de rede).
A melhor maneira é usar o provedor “rede” ou “passivo” primeiro e, em seguida, o fallback em “gps” e, dependendo da tarefa, alternar entre provedores. Isso abrange todos os casos e fornece um serviço de denominador comum mais baixo (no pior caso) e um ótimo serviço (no melhor caso).
Artigo Referência: Android Location Providers - gps, network, passive Por Nazmul Idris
Referência do código: https://stackoverflow.com/a/3145655/28557
-----------------------Atualizar-----------------------
Agora o Android tem provedor de localização fundida
O provedor de localização fundida gerencia de maneira inteligente a tecnologia de localização subjacente e fornece a melhor localização de acordo com suas necessidades. Simplifica as maneiras pelas quais os aplicativos obtêm a localização atual do usuário com maior precisão e menor consumo de energia
O provedor de localização fundida fornece três maneiras de buscar a localização
- Última localização: use quando quiser saber a localização atual uma vez.
- Solicitar local usando o Ouvinte: use quando o aplicativo estiver na tela / front-end e exigir local contínuo.
- Solicitar local usando intenção pendente: use quando o aplicativo for em segundo plano e exija a localização contínua.
Referências :
Site oficial: http://developer.android.com/google/play-services/location.html
Exemplo de provedor de localização fundida: GIT: https://github.com/kpbird/fused-location-provider-example
http://blog.lemberg.co.uk/fused-location-provider
-------------------------------------------------- ------