Especifique intervalos para o gerente de localização para transmitir a localização atual no Android

StackOverflow https://stackoverflow.com/questions/2566079

  •  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

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top