Localização somente pelo WIFI

975 views
Skip to first unread message

Victor Pinto

unread,
Feb 6, 2013, 11:18:25 AM2/6/13
to androidb...@googlegroups.com
Boa tarde senhores,
   Alguém sabe explicar como funciona a localização quando o dispositivo possui somente wifi ligado? Nada de GPS, nem 3G, nem chip tem o aparelho como que ele se localiza através da internet?. Imagino que seja da mesma maneira que é usado a localização para o Find My Mac, como se o ponto de instalação de internet estivesse mapeado em algum lugar.

[]`s

Maicon Strey

unread,
Feb 6, 2013, 11:28:16 AM2/6/13
to androidb...@googlegroups.com
Já foi tratado um assunto muito parecido por aqui. inclusive se não me engano o lucio maciel postou o código de uma classe pronta pra fazer algo nesse sentido. procura no histórico do grupo.


Maicon Strey
Novo Hamburgo - RS - Brasil
------------------
------------------
Linux user: #525086


2013/2/6 Victor Pinto <ovicto...@gmail.com>
Boa tarde senhores,
   Alguém sabe explicar como funciona a localização quando o dispositivo possui somente wifi ligado? Nada de GPS, nem 3G, nem chip tem o aparelho como que ele se localiza através da internet?. Imagino que seja da mesma maneira que é usado a localização para o Find My Mac, como se o ponto de instalação de internet estivesse mapeado em algum lugar.

[]`s

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Leonardo S

unread,
Feb 6, 2013, 11:39:24 AM2/6/13
to androidb...@googlegroups.com
Procurei e não encontrei.
Fiquei curioso, pq até que eu saiba as opções são PROVIDER_GPS e PROVIDER_NETWORK.

Como se diferenciar o network passive (que seria o cell-id) e o network active (que seria o wi-fi) ?
Tratando pela string do provider ? Parece uma solução razoável, mas nunca tentei.

Me corrigiam se estiver errado.

Lucas Xavier

unread,
Feb 6, 2013, 11:48:24 AM2/6/13
to androidb...@googlegroups.com
Victor, 

A localização somente pelo WIFI é razoavelmente melhor que utilizando somente o 3G, mas se utilizar em conjunto com o GPS fica melhor ainda.

Utiliza só o "PROVIDER_NETWORK", que ele vai usar ou 3G ou WIFI, o que tiver disponível.

--
Atenciosamente,

Lucas Xavier

Maicon Strey

unread,
Feb 6, 2013, 11:49:05 AM2/6/13
to androidb...@googlegroups.com
procuraste invertido. o correto é NETWORK_PROVIDER


Maicon Strey
Novo Hamburgo - RS - Brasil
------------------
------------------
Linux user: #525086


2013/2/6 Leonardo S <leonard...@gmail.com>

Victor Pinto

unread,
Feb 6, 2013, 11:58:05 AM2/6/13
to androidb...@googlegroups.com
Pessoal,
   Eu fiz uma classe que procura em todos os providers qual a melhor localização usando o método de isBestLocation que tem no site oficial, gerencia os callbacks de atualização e está tudo funcionando perfeito. 
   A minha dúvida é um pouco fora do Android, como que por um sinal de internet (GPS desabilitado) o Android sabe a localização dele? Eu estava achando que ele mandava para a internet a triangulação que ele fazia com as torres de celular, mas os testes que estou fazendo, é num celular sem chip e ele acha a localização.

Leonardo S

unread,
Feb 6, 2013, 1:09:32 PM2/6/13
to androidb...@googlegroups.com
Maicon,

Está falando deste email ?

Se for, ele só diz que configura um LocationListener para Wifi, sem maiores detalhes.
O código que ele passou se refere ao controle de Accuracy.

Leonardo S

unread,
Feb 6, 2013, 1:10:46 PM2/6/13
to androidb...@googlegroups.com

Bruno Albuquerque

unread,
Feb 6, 2013, 1:46:46 PM2/6/13
to androidb...@googlegroups.com
No caso médio, isso não é verdade. A localização por torres de telefonia sempre vai te dar uma posição razoavelmente próxima de onde você se encontra de verdade. Por WiFi a mesma pode falhar miseravelmente. Em especial se você estiver num luar que só tem um roteador WiFi e nenhuma outra rede ao alcance e, então, você pega esse roteador e levra pra uma outra cidade. O algoritmo usado vai inferir, erroneamente, que você se encontra no lugar onde estava antes (i.e. em outra cidade).
 

Lucas Xavier

unread,
Feb 6, 2013, 1:54:56 PM2/6/13
to androidb...@googlegroups.com
"Em especial se você estiver num luar que só tem um roteador WiFi e nenhuma outra rede ao alcance e, então, você pega esse roteador e levra pra uma outra cidade."

Isso é um caso médio??

--
Atenciosamente,

Lucas Xavier

Bruno Albuquerque

unread,
Feb 6, 2013, 2:17:14 PM2/6/13
to androidb...@googlegroups.com
Não, isso é um exemplo. O caso médio é o fato de que as torres de celulares tem posição fixa e nunca (ou muito raramente) movem de lugar. Suas posições também sempre são conhecidas.

No caso de wifi, não funciona no caso de mudança, não funciona no caso de alguns pontos de acesso terem mudado de lugar de forma considerável, não funciona quando um número suficiente de pontos de acesso está desligado por algum motivo,. Não funciona quando os SSIDs mudam e, mais relevante, não funciona quando ninguém chegou a conectar com o serviço de location com GPS ligado enquanto estava ao alcance daquele ponto de acesso.

-Bruno

Leonardo S

unread,
Feb 6, 2013, 3:45:50 PM2/6/13
to androidb...@googlegroups.com
Se a app precisa trabalhar com dados geográficos o mais preciso possível, nem deve levar em conta o Wi-fi. Os riscos são altos, pelo motivo que o Bruno falou.

Para não utilizar Wi-fi, baseado nos links que passei. Me parece que funciona a seguinte solução (não testei):

- Um listener com critério: energia alta e localização precisa para GPS.
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setPowerRequirement(Criteria.POWER_HIGH);

- E outro listener com critério: energia baixa e localização esparsa.
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
criteria.setPowerRequirement(Criteria.POWER_LOW);

Reply all
Reply to author
Forward
0 new messages