Por que o Android tem problemas para se lembrar da última localização conhecida?

12

Nunca consegui descobrir como o Android se lembra da sua última localização conhecida. Parece lembrar a localização de várias horas atrás, mas não alguns segundos atrás. Eu acho que é melhor dar um exemplo do que quero dizer.

Estive recentemente na área da baía. Eu estava usando mapas do Google no meu Android e, por acaso, eu estava no campus do Google em Mountain View. Eu estava usando mapas com o GPS ativado e, depois de um tempo, obtive uma trava de GPS adequada que eu costumava navegar pela área.

Quando voltei a São Francisco, mais tarde, estava usando-o para percorrer a cidade. Toda vez que eu ligava os mapas, ele colocava minha localização novamente em Mountain View. Cerca de 10 segundos depois, após o bloqueio do GPS, eu obtive minha localização real. Se eu desligasse e ligasse o telefone alguns segundos depois, acontecesse a mesma coisa - ele acha que estou em algum lugar que estava horas antes e depois entra em contato com minha localização real. Isso acontece o tempo todo - lembrando onde eu estava horas atrás, não onde estava alguns momentos atrás. Uma vez que estive em uma área por um certo período de tempo, isso agora se torna o novo "último local de conhecimento".

Por que, depois de obter um bloqueio GPS preciso, o Android não registra isso como o "último local conhecido" em vez de um anterior?

Tim
fonte

Respostas:

3

Não é uma resposta completa, mas algumas informações básicas:

  • Seu dispositivo pode ter mais de um provedor de localização, por exemplo, um baseado em GPS e outro baseado nas torres de telefonia móvel que ele pode ver.
  • O Android não tem uma única última posição conhecida. Cada provedor de local possui sua última posição conhecida.
  • Um local possui métricas adicionais, como precisão, quando foi gravado, o que foi gravado (por exemplo, possui um componente de altitude etc.)

Portanto, depende de qual provedor de localização o aplicativo usa e que pode depender ou até mudar com base em parâmetros dinâmicos. Por exemplo, na inicialização, ele poderia solicitar ao Android o provedor de localização mais rápido e depois mudar para o mais preciso para obter uma solução melhor gradualmente.

user4188
fonte
Esta é uma explicação concisa realmente boa. Obrigado.
Nick Dixon
Isso também faz sentido, pois quando estava de volta à cidade não tinha dados wifi / móveis. No campus do Google, havia wifi. Portanto, os mapas devem estar usando inicialmente a última localização conhecida "grossa" (ou seja, wifi) (que estava no Google) e, em seguida, quando o GPS disparou alguns segundos depois, ele é atualizado. Eu ainda pensaria que a localização conhecida por GPS teria sido uma leitura mais fresca / melhor.
Tim
esta resposta é mais como um comentário. e se a localização aproximada tiver menos prioridade, isso explicaria ainda menos por que o telefone retornou ao modo de exibição mais tarde.
Gcb 04/04/19
2

Entendo que o Android usa atualizações de localização de tipo granular e grosso e essas atualizações também podem ter métricas de qualidade diferentes. Pode ser que o aplicativo Google Maps não tenha sinal GPS e Wifi por tempo suficiente no seu novo local para ter uma qualidade alta o suficiente para ser o último local conhecido.

Os documentos do desenvolvedor em http://developer.android.com/guide/topics/location/obtaining-user-location.html fornecem alguns exemplos de modelos para obter locais de usuários que podem fornecer informações sobre como ele funciona. Mas acho que o Google Maps, e provavelmente outros mapas, fazem suas próprias coisas.

Andy Shinn
fonte