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 ??
Posso recomendar duas abordagens possíveis:
LocationRequest locReq = LocationRequest.create();
locReq.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
Posso recomendar duas abordagens possíveis:
- 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)
- 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;
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: