Especifique intervalos para o gerente de localização para transmitir a localização atual no Android
-
23-09-2019 - |
Pergunta
Existe alguma maneira de especificar os intervalos de tempo que o gerente de localização transmite o local atual?
Estou usando um método chamado StartListening:
public void startListening() {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
0,
0,
this
);
}
Obrigado
Solução
public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener, Looper looper)
Registre a atividade atual a ser notificada periodicamente pelo provedor nomeado. Periodicamente, o LocationListener fornecido será chamado com o local atual ou com atualizações de status.
Pode demorar um pouco para receber o local mais recente. Se for necessário um local imediato, os aplicativos poderão usar o método GetLastknownLocation (String).
Caso o provedor esteja desativado pelo usuário, as atualizações vão parar e o onProviderDisabled(String)
o método será chamado. Assim que o provedor estiver ativado novamente, o método OnProVideRenabled (String) será chamado e as atualizações de localização serão iniciadas novamente.
A frequência de notificação pode ser controlada usando o minTime
e minDistance
parâmetros. Se minTime
é maior que 0, o local de localização pode potencialmente descansar para minTime
milissegundos entre as atualizações de localização para economizar energia. Se minDistance
é maior que 0, um local só será transmitido se o dispositivo se mover por minDistance
metros. Para obter notificações o mais frequentemente possível, defina os dois parâmetros como 0.
Os serviços de fundo devem ter cuidado ao estabelecer um suficientemente alto minTime
para que o dispositivo não consuma muita energia, mantendo o GPS ou os rádios sem fio o tempo todo. Em particular, valores abaixo de 60000 mm não são recomendados.
O Looper fornecido é usado para implementar o mecanismo de retorno de chamada.
Parâmetros
- provedor o nome do provedor com o qual se registrar
- Printam o intervalo de tempo mínimo para notificações, em milissegundos. Esse campo é usado apenas como uma dica para economizar energia, e o tempo real entre as atualizações do local pode ser maior ou menor que esse valor.
- Mindistância O intervalo de distância mínimo para notificações, em metros
- O ouvinte A cujo método onLocationChanged (local) será chamado para cada atualização de local
- Looper um objeto Looper, cuja fila de mensagens será usada para implementar o mecanismo de retorno de chamada.
Joga
IllegalArgumentException
Se o provedor for nulo ou não existir
IllegalArgumentException
Se o ouvinte for nulo
IllegalArgumentException
Se Looper for nulo
SecurityException
Se nenhuma permissão adequada estiver presente para o provedor.
Outras dicas
Pentime: o intervalo de tempo mínimo para notificações, em milissegundos. Esse campo é usado apenas como uma dica para economizar energia, e o tempo real entre as atualizações do local pode ser maior ou menor que esse valor.
Mindistância: o intervalo de distância mínimo para notificações, em metros
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 9000, 500,locListener);
// 60000 é de 1 minuto e 100 é km
Acima, você tem 9000 (nove segundos) e 500, se o local tiver movido mais de 500 km