Android_guides: Não obtendo atualizações de localização quando o GPS está desligado

Criado em 27 abr. 2020  ·  5Comentários  ·  Fonte: codepath/android_guides

Em um serviço de primeiro plano, estou usando FusedLocationProviderClient para solicitar atualizações de localização. Estou usando o serviço de primeiro plano porque quero atualizações de localização mesmo quando o aplicativo está fechado. até agora tudo bem. está funcionando. Mas o problema é que, se o GPS estiver desligado, não recebo a chamada onLocationResult () de volta. Como lidar com esse problema ?? Antes de iniciar o serviço, o local estava ativado e recebi alguns retornos de chamada no método onLocationResult (). Depois de algum tempo, o usuário desligou o GPS, depois disso eu não estou recebendo a chamada onLocationResult () de volta. Alguma ideia de como lidar com esse problema ??

Todos 5 comentários

Posso recomendar duas abordagens possíveis:

  1. Verifique ou altere as configurações de prioridade de solicitação de local para usar
    PRIORITY_BALANCED_POWER_ACCURACY (usa qualquer serviço disponível) em vez de PRIORITY_HIGH_ACCURACY que responde principalmente em GPS de acordo com o Google.
    Por exemplo
    LocationRequest locReq = LocationRequest.create(); locReq.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
  1. Implemente um receptor de transmissão para mudanças no estado do GPS e faça uma nova solicitação de localização usando outro provedor de serviços de localização, por exemplo, rede ou Wi-Fi se o GPS estiver desligado

Posso recomendar duas abordagens possíveis:

  1. Verifique ou altere as configurações de prioridade de solicitação de local para usar
    PRIORITY_BALANCED_POWER_ACCURACY (usa qualquer serviço disponível) em vez de PRIORITY_HIGH_ACCURACY que responde principalmente em GPS de acordo com o Google.
    Por exemplo
    LocationRequest locReq = LocationRequest.create(); locReq.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
  2. Implemente um receptor de transmissão para mudanças no estado do GPS e faça uma nova solicitação de localização usando outro provedor de serviços de localização, por exemplo, rede ou Wi-Fi se o GPS estiver desligado

Já implementei ambas as abordagens. Na segunda abordagem, em vez de iniciar uma nova solicitação de localização, estou apenas enviando uma notificação de áudio para o usuário ligar o GPS. Se eu fizer uma nova solicitação de localização usando outro provedor de serviços de localização, ele ligará automaticamente o GPS ou solicitará que o usuário LIGUE O GPS ??

Outros provedores de localização não devem solicitar ao usuário para ligar o GPS e ele não ligará o GPS automaticamente, a permissão de tempo de execução é necessária.
Depende de seus requisitos;

  • Se for como um rastreador, notificar o usuário para ligar o GPS é a melhor opção
  • Se você não precisa de uma localização de uso precisa, ou seja, você só precisa de uma localização em toda a cidade, o WiFi ou os provedores de rede devem fazer, a advertência é menos precisa.
  • Outra opção é ligar para a API de localização de terceiros se o GPS estiver desligado e você ainda precisar de atualizações de localização.

Outros provedores de localização não devem solicitar ao usuário para ligar o GPS e ele não ligará o GPS automaticamente, a permissão de tempo de execução é necessária.
Depende de seus requisitos;

  • Se for como um rastreador, notificar o usuário para ligar o GPS é a melhor opção
  • Se você não precisa de uma localização de uso precisa, ou seja, você só precisa de uma localização em toda a cidade, o WiFi ou os provedores de rede devem fazer, a advertência é menos precisa.
  • Outra opção é ligar para a API de localização de terceiros se o GPS estiver desligado e você ainda precisar de atualizações de localização.

Sim, é um rastreador. Portanto, estou notificando o usuário para ligar o GPS. Você pode fornecer mais detalhes sobre a última opção, chamando APIs de localização de terceiros. Quais APIs de localização de terceiros estão disponíveis e o que você usou?

Há muitas opções, mas fiz uma pesquisa rápida para você dar o pontapé inicial na sua pesquisa 😉.
Veja abaixo os links.
Eu tentei a api openweathermap.org antes e estava tudo bem.
A maior parte da API de localização de terceiros usa o endereço IP do dispositivo do usuário para fazer a mágica, então pode não ser preciso também.
https://ipfind.com/
https://www.google.com/amp/s/rapidapi.com/blog/ip-geolocation-api/amp/

Adendo:

  1. Quando o GPS estiver desligado, salve a localização do último usuário localmente, de preferência use a preferência compartilhada com uma chave relativa, por exemplo, Gps_LastLocation
  2. Compare o local recém-obtido de quaisquer outros provedores além do GPS, com o último local salvo.
  3. Se os mesmos dias felizes não notificarem o usuário para confirmar o novo local. É muito trabalho, mas é o que farei como retrocesso.
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

betorobson picture betorobson  ·  71Comentários

savekirk picture savekirk  ·  8Comentários

nesquena picture nesquena  ·  4Comentários

debpedrano picture debpedrano  ·  8Comentários

nesquena picture nesquena  ·  11Comentários