GPS e serviços de geolocalização em aplicativos móveis — o que são e métodos para obter coordenadas

Autor: IT Sectr Publicado: 2026-03-22 Tempo de leitura: 8 min

GPS e serviços de geolocalização em aplicativos móveis são APIs para determinar a localização física de um dispositivo usando satélites, Wi-Fi e redes móveis. De acordo com o Google Android Location Guide (2025), mais de 60% dos aplicativos móveis usam dados de localização para personalizar conteúdo. O Fused Location Provider no Android combina várias fontes para melhorar a precisão e reduzir o consumo de energia.

Principais conclusões

  • GPS é um sistema global de navegação por satélite que fornece precisão de 3 a 5 metros em áreas abertas.
  • Serviços de geolocalização no Android e iOS fornecem APIs para obter coordenadas via GPS, Wi-Fi e torres de celular.
  • FusedLocationProviderClient no Android combina GPS, Wi-Fi e sensores para um equilíbrio ótimo entre precisão e consumo de energia.
  • CLLocationManager no iOS gerencia solicitações de geolocalização com configuração de precisão e modo em segundo plano.
  • Permissões de localização são divididas em “durante o uso” e “sempre” — a segunda requer justificativa adicional.

O que são GPS e serviços de geolocalização

GPS (Global Positioning System) é um sistema de navegação por satélite composto por 31 satélites ativos em órbita a uma altitude de aproximadamente 20.200 km. Em dispositivos móveis, o chip GPS recebe sinais dos satélites e calcula as coordenadas com base na trilateração — medição do tempo de viagem do sinal de vários satélites. Os serviços de geolocalização em sistemas operacionais móveis adicionam dados de pontos de acesso Wi-Fi e torres de celular ao GPS para posicionamento mais rápido (A-GPS) e melhor precisão em ambientes internos. De acordo com o GPS.gov (2024), a precisão do GPS civil é de 3 a 5 metros em condições de céu limpo e de até 15 metros em áreas urbanas densas.

Sistemas de satélites adicionais

Dispositivos móveis modernos suportam não apenas o sistema GPS americano, mas também outros sistemas globais de navegação por satélite: o GLONASS russo (24 satélites), o Galileo europeu (28 satélites) e o BeiDou chinês. O suporte a múltiplos sistemas simultaneamente melhora a precisão e a velocidade do posicionamento — o dispositivo pode usar até 40 satélites de diferentes sistemas para calcular sua posição. No iOS e Android, a seleção do sistema de satélites é feita automaticamente no nível do chip de hardware, e os desenvolvedores não precisam gerenciar isso.

Como funciona a determinação de localização

O processo de determinar a localização em um dispositivo móvel consiste em várias etapas: coleta de dados de fontes (satélites, Wi-Fi, células), filtragem e correção de erros, cálculo de coordenadas e entrega do resultado ao aplicativo. O sistema operacional gerencia esse processo por meio de um serviço de geolocalização unificado que otimiza todas as fontes para economizar bateria. Abaixo estão descritas as três principais fontes de dados de localização.

GPS e navegação por satélite

A navegação por satélite fornece a máxima precisão (3 a 5 metros), mas requer uma visão clara do céu. Em ambientes internos ou áreas urbanas densas, o sinal GPS pode ser enfraquecido ou completamente perdido. O tempo para a primeira fixação (TTFF) é de 30 a 60 segundos para uma inicialização a frio e de 5 a 10 segundos para uma inicialização a quente. O A-GPS (GPS Assistido) acelera a inicialização ao baixar dados de efemérides dos satélites pela internet em vez de esperar os dados dos satélites.

Posicionamento por Wi-Fi e torres de celular

O posicionamento Wi-Fi usa um banco de dados de endereços MAC de pontos de acesso com coordenadas conhecidas. A precisão é de 10 a 50 metros dentro da cobertura Wi-Fi. As torres de celular fornecem precisão de 100 metros a vários quilômetros, dependendo da densidade das torres. A combinação de todas as fontes (Fused Location) permite obter coordenadas com precisão razoável e consumo mínimo de energia — especialmente quando o chip GPS está desligado ou os sinais de satélite não estão disponíveis.

Provedores de localização no Android e iOS

Em ambas as plataformas, os serviços de geolocalização são implementados através de APIs do sistema com diferentes graus de abstração. O Android usa o FusedLocationProviderClient do Google Play Services, o iOS usa o CLLocationManager do Core Location. Ambas as APIs permitem solicitar uma posição única ou assinar atualizações periódicas. Abaixo está um exemplo de obtenção de coordenadas no Android usando o Fused Location Provider em Kotlin.

Obtendo coordenadas no Android

kotlin
val fusedClient = LocationServices.getFusedLocationProviderClient(this)

val locationRequest = LocationRequest.Builder(
    Priority.PRIORITY_HIGH_ACCURACY
)
.setIntervalMillis(5000)
.setMinUpdateIntervalMillis(2000)
.build()

val locationCallback = object : LocationCallback() {
    override fun onLocationResult(result: LocationResult) {
        result.lastLocation?.let { location ->
            Log.d("Localização", "Lat: ${location.latitude}, Lng: ${location.longitude}")
        }
    }
}

if (checkLocationPermission()) {
    fusedClient.requestLocationUpdates(
        locationRequest, locationCallback,
        Looper.getMainLooper()
    )
}

No exemplo, o LocationRequest é configurado com PRIORITY_HIGH_ACCURACY — isso ativa o GPS para máxima precisão. setIntervalMillis define o intervalo de atualização desejado (5 segundos), setMinUpdateIntervalMillis define o intervalo mínimo (2 segundos). O callback onLocationResult é invocado cada vez que o sistema recebe novas coordenadas. É importante verificar a permissão antes de chamar requestLocationUpdates — caso contrário, o aplicativo travará com uma SecurityException.

Obtendo coordenadas no iOS

swift
import CoreLocation

let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()

// MARCA: - CLLocationManagerDelegate
func locationManager(
    _ manager: CLLocationManager,
    didUpdateLocations locations: [CLLocation]
) {
    guard let location = locations.last else { return }
    print("Location: \(location.coordinate.latitude), \(location.coordinate.longitude)")
}

No iOS, desiredAccuracy determina a precisão da solicitação: kCLLocationAccuracyBest usa todas as fontes disponíveis (GPS + Wi-Fi + células). Após solicitar a permissão através de requestWhenInUseAuthorization, o sistema mostra um diálogo ao usuário. O delegado didUpdateLocations recebe uma matriz de objetos CLLocation com coordenadas, altitude, velocidade e direção. Para parar as atualizações, chame stopUpdatingLocation para economizar bateria.

Solicitação de permissões de localização

O acesso à geolocalização requer permissão explícita do usuário em ambas as plataformas. No Android, são usadas as permissões ACCESS_FINE_LOCATION (GPS) e ACCESS_COARSE_LOCATION (Wi-Fi/células). A partir do Android 10, o acesso em segundo plano requer uma permissão separada ACCESS_BACKGROUND_LOCATION. No iOS, três níveis estão disponíveis: requestWhenInUseAuthorization (apenas quando o aplicativo está ativo), requestAlwaysAuthorization (em segundo plano) e carimbos de data/hora temporários para posicionamento preciso. A Apple exige uma descrição obrigatória no Info.plist: NSLocationWhenInUseUsageDescription ou NSLocationAlwaysAndWhenInUseUsageDescription. Sem essas chaves, a solicitação de permissão é ignorada.

Otimização do consumo de energia

O uso contínuo do GPS drena significativamente a bateria — até 30% por hora de operação contínua na máxima precisão. Para otimizar o consumo de energia, recomenda-se usar a geolocalização apenas quando necessário e interromper as atualizações quando o aplicativo entrar em segundo plano. No Android, o FusedLocationProviderClient alterna automaticamente entre GPS e fontes de rede dependendo da disponibilidade e prioridade da solicitação. No iOS, use o serviço de mudança significativa de localização (startMonitoringSignificantLocationChanges) para atualizações com consumo mínimo de energia — a precisão é menor (até 500 metros), mas a bateria quase não é gasta. Pratique também o processamento em lote: colete coordenadas em intervalos de 5 a 10 minutos e envie-as ao servidor em uma única solicitação via WorkManager no Android ou BGTaskScheduler no iOS. Reduzir a frequência de solicitações de 1 segundo para 30 segundos reduz o consumo de energia da geolocalização em 85%.

Casos de uso da geolocalização

A geolocalização é usada em uma ampla gama de aplicativos móveis: desde navegadores até serviços de entrega. Os cenários mais comuns incluem exibir o usuário no mapa, publicidade geodirecionada, rastreamento de entregadores, geofencing para notificações push e rastreamento de atividade física. Cada cenário requer sua própria abordagem de precisão e frequência de atualização. Abaixo está uma tabela com recomendações de configuração para diferentes tipos de aplicativos.

Tipo de aplicativoPrecisãoIntervaloModo segundo plano
NavegadorHIGH (GPS)1-2 segSim
EntregaBALANCED (GPS+Wi-Fi)10-30 segSim
ClimaLOW (Wi-Fi/células)Uma vezNão
Rede socialBALANCEDAo abrirNão
FitnessHIGH (GPS)5-10 segSim

Ao projetar a funcionalidade de geolocalização, é importante considerar que os usuários podem revogar a permissão a qualquer momento através das configurações do sistema. O aplicativo deve lidar adequadamente com situações em que a geolocalização não está disponível e mostrar uma explicação clara do porquê a funcionalidade está limitada.

Geofencing (Cercas geográficas)

Geofencing é uma tecnologia para criar limites virtuais em um mapa. Quando esses limites são cruzados, o aplicativo recebe uma notificação. No Android, as cercas geográficas são implementadas através do GeofencingClient do Google Play Services, no iOS — através do CLCircularRegion do Core Location. Ao entrar ou sair de uma zona, o sistema desperta o aplicativo e envia um evento mesmo se o aplicativo estiver fechado ou minimizado. Isso é usado para notificações push ao se aproximar de uma loja, lembretes de tarefas baseados em localização e automação de dispositivos IoT. O número máximo de cercas geográficas é limitado: 100 no Android, 20 no iOS simultaneamente. O raio mínimo da zona é de 50 metros em ambas as plataformas — caso contrário, o sistema pode não disparar devido a imprecisões na determinação da localização. Ao entrar em uma zona, o sistema inicia um Intent no Android ou chama o delegado locationManager:didEnterRegion no iOS.

Perguntas frequentes

O que é GPS em dispositivos móveis?

O GPS em um smartphone é um receptor integrado de sinais do sistema de navegação por satélite que determina coordenadas com precisão de 3 a 5 metros. Os dispositivos também suportam GLONASS, Galileo e BeiDou para melhor precisão e velocidade de posicionamento.

Qual a diferença entre GPS e serviços de geolocalização?

GPS é apenas um método por satélite para determinar coordenadas. Os serviços de geolocalização combinam GPS, posicionamento Wi-Fi e dados de torres de celular para uma determinação de localização mais rápida e eficiente em termos energéticos, especialmente em ambientes internos.

Como solicitar permissão de localização no iOS?

Chame requestWhenInUseAuthorization() ou requestAlwaysAuthorization() em uma instância de CLLocationManager. Primeiro, adicione NSLocationWhenInUseUsageDescription ao Info.plist com uma explicação clara do porquê a geolocalização é necessária.

Como reduzir o consumo de energia do GPS em um aplicativo?

Use FusedLocationProviderClient no Android e o serviço de mudança significativa de localização no iOS. Aumente o intervalo entre solicitações para 10 a 30 segundos, desative as atualizações quando a tela estiver desligada e aplique o envio em lote de coordenadas ao servidor.

É possível obter localização sem GPS?

Sim, sem GPS você pode determinar a localização aproximada usando pontos de acesso Wi-Fi (precisão de 10 a 50 metros) ou torres de celular (precisão de 100 a 5000 metros). No Android, ACCESS_COARSE_LOCATION é usado para isso.

Resumo

  • GPS é um sistema de navegação por satélite com precisão de 3 a 5 metros, complementado por GLONASS, Galileo e BeiDou.
  • Serviços de geolocalização combinam GPS, Wi-Fi e torres de celular para determinação rápida e precisa de coordenadas.
  • Android usa FusedLocationProviderClient com LocationRequest para configurar precisão e intervalos de atualização.
  • iOS usa CLLocationManager com desiredAccuracy e o delegado didUpdateLocations para obter coordenadas.
  • Permissões são divididas em “durante o uso” e “sempre” — o acesso em segundo plano requer aprovação separada do usuário.
  • O consumo de energia do GPS pode ser reduzido em 85% aumentando o intervalo e usando mudanças significativas de localização.
  • Recomendação — escolha a precisão e o intervalo de atualização de acordo com o cenário: o navegador requer HIGH, o clima requer LOW.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também