Alguém sabe a interpretação adequada das medições de precisão retornadas por getAccuracy ()? Por exemplo, eles são calculados como:
Probabilidade de erro circular (ou seja, se bem entendi, raio de um círculo de confiança de 50%)?
Raio do círculo de confiança de 95%?
algo mais?
Além disso, quais são os cálculos reais que são usados e quanto podemos confiar neles? Depende da fonte da estimativa de localização (GPS x rede)?
Muito obrigado por qualquer conselho que você possa me dar.
Respostas:
Para responder a uma parte da pergunta, o número
the radius of 68% confidence,
significa que há 68% de chance de que a localização verdadeira esteja dentro daquele raio do ponto medido em metros. Supondo que os erros sejam normalmente distribuídos (o que, como dizem os documentos, não é necessariamente verdadeiro), isso significa que esse é um desvio padrão. Por exemplo, seLocation.getAccuracy
retorna 10, então há 68% de chance de que a verdadeira localização do dispositivo esteja dentro de 10 metros das coordenadas relatadas.http://developer.android.com/reference/android/location/Location.html#getAccuracy ()
fonte
A localização é uma tarefa complicada de fazer, quando você tem uma vida útil da bateria limitada e quando não há sinal de GPS em edifícios e em áreas com muitos edifícios grandes e etc. Mas o Android torna isso muito mais fácil. Ao solicitar um local, você só precisa especificar qual precisão você precisa.
Se você especificar que deseja um
accuracy
exemplo*100 meters*
, o Android tentará obter a localização e se puder obter uma localização com precisão de 70 metros, ele retornará para você, mas se o Android puder obter uma localização com precisão superior a 100 metros, seu aplicativo irá aguardar e não receberá nada até que haja um local com essa precisão.Normalmente, o Android obterá primeiro o Cell ID e depois o enviará para o servidor do Google, que mapeia esses Cell IDs e o servidor retornará uma latitude e longitude com uma precisão baixa para um exemplo de 1000 metros. A esta altura, o Android também tentará ver todas as redes WiFi na área e enviará informações sobre elas também para o servidor do Google e, se possível, o servidor do Google retornará um novo local com maior precisão para um exemplo de 800 metros.
Nesse momento, o GPS estará ligado. O dispositivo GPS precisa de pelo menos 30 segundos de uma inicialização a frio para obter uma posição, então, se puder, ele retornará a latitude e a longitude, mas novamente com uma precisão, que será a maior possível para um exemplo de 100 metros. Quanto mais tempo o GPS funcionar, melhor será a precisão.
Aviso importante: os primeiros dois métodos requerem uma conexão com a Internet. Se não houver conexão de dados, você terá que esperar pelo GPS, mas se o dispositivo estiver em um prédio, provavelmente você não obterá a localização.
fonte
A documentação sobre getAccuracy diz que retorna a precisão em metros. Eu imagino que isso significa que se você obtiver um valor de retorno de 60, você está em algum lugar em um círculo com um raio de 60 metros em torno da posição fornecida.
fonte
Pelo que posso ver com uma rápida olhada no código-fonte do Android, isso depende do hardware do dispositivo e do valor que ele escolhe retornar.
O
GpsLocationProvider.java
arquivo tem umreportLocation
método que é chamado pelo código nativo e passa a precisão como um valor. Assim, nenhum cálculo parece estar acontecendo no quadro, pelo menos.O qcom (que acredito ser da Qualcomm) GPS git repo está passando o
hor_unc_circular
parâmetro de precisão o que parece implicar que, pelo menos, essa implementação está usando CER.fonte
Se, conforme citado nos documentos, for uma precisão, a posição real do usuário está em algum lugar dentro de QUOTED_LOCATION +/- ACCURACY. Portanto, a precisão define um raio onde você poderia esperar que o usuário estivesse. O que os documentos não dizem é como você pode ter certeza de que o usuário está dentro do raio - o padrão é 95%, então acho que é isso.
fonte
Eu entendo que você está pedindo uma resposta definitiva em termos de probabilidade, mas acho que há duas coisas a serem consideradas aqui.
Em primeiro lugar, cabe ao provedor decidir o que deseja colocar neste valor, portanto, dependendo do provedor, pode ser apenas um palpite errado.
Em segundo lugar, pode ajudar pensar nisso como um problema potencial de arredondamento. Se estou tentando calcular sua localização com base em uma série de entradas, e algumas dessas entradas estão disponíveis apenas para um determinado número de dígitos significativos, então só é possível calcular uma localização com um determinado número de dígitos significativos.
Pense desta forma - o que é "cerca de" um mais "cerca de" cem. Provavelmente cerca de cem, porque a precisão de cem é provavelmente menor que a magnitude de 1. Se eu de repente disser que a resposta é cerca de 101, posso acabar sugerindo um nível de precisão que não existia. No entanto, se eu realmente especificar a precisão, posso dizer que 100 mais ou menos 10 mais 1 mais ou menos 0,1 é 101 mais ou menos 10. Entendo que isso geralmente se refere a algo como um nível de confiança de 95% ( erro padrão), mas, novamente, isso tudo assume que o provedor entende as estatísticas e não apenas adivinha.
fonte