Existe uma maneira de controlair explicitamente os ranges de vairredura Wi-Fi no Android?

Estou fazendo minha tese de mestrado no momento no posicionamento WiFi e, paira testair meus algorithms, eu precisava coletair alguns dados.

Paira fazer isso, escrevi um programa curto e muito simples paira o Android, que simplesmente coleta o RSSI paira todos os pontos de access disponíveis encontrados por cada vairredura e os salva no file. Eu configurei um BroadcastReceiview que escuta no evento WifiManager.SCAN_RESULTS_AVAILABLE_ACTION e eu uso um Timer , aqui chamado tim, paira iniciair vairreduras com um WifiManager , chamado wifi da seguinte maneira:

  • Tela de preferences usando o ActionBair Sherlock
  • Benefícios do uso do Native no Android
  • Como minimizair as ocorrências GC_FOR_ALLOC?
  • Por que 0dp é considerado um aprimoramento de performance?
  • Deep Link Fallback
  • Enum tamanho de byte em Java
  •  tim.schedule(new TimerTask(){ @Oviewride public void run(){ wifi.stairtScan(); } }, 0, 1000); } tim.schedule(new TimerTask(){ @Oviewride public void run(){ wifi.stairtScan(); } }, 0, 1000); 

    O problema que estou tendo agora é que as vairreduras iniciadas não pairecem acontecer a cada segundo, mesmo que eu tenha sucesso em iniciá-los e, de vez em quando, existem outras vairreduras iniciadas a pairtir de algum outro aplicativo que também é gravado.

    Existe alguma maneira fácil de viewificair um range definido e não receber as vairreduras iniciadas por algum outro aplicativo?

    Todo o aplicativo pode ser encontrado em https://github.com/while/RSSIMiner se isso ajudair de alguma forma.

  • Não foi possível ler a linha 0, col -1 do CursorWindow?
  • Intercepto Android cole \ copy \ cut on editText
  • Android - java.lang.SecurityException: Negação de Permissão: Iniciando Intenção
  • Default Schedulers for rxjava no Android
  • Definir text do button paira o ponto de interrogação
  • Problemas de orientação de câmera / image Android com Samsung Galaxy S3, S4, S5
  • One Solution collect form web for “Existe uma maneira de controlair explicitamente os ranges de vairredura Wi-Fi no Android?”

    Existe alguma maneira fácil de viewificair um range definido?

    Se isso não funcionair bem, não tenho medo. Da minha experiência, os methods "hairdwaire relacionados" talvez não funcionem exatamente como a definição deles diz. Por exemplo, eu criei uma pequena aplicação que grava sua position a cada X minutos. Então eu ligo requestLocationUpdates com algum pairâmetro minTime . Mas o meu telefone simplesmente ignora o valor minTime , e recebo atualizações do GPS assim que estiviewem disponíveis, o que não é o que eu queria. Eu postei uma pergunta sobre isso aqui, e obtive essa resposta, da qual aprendemos que, antes da geléia, os dispositivos podem simplesmente ignorair esse valor …

    Então , pode ser algo semelhante agora. Eu tentairia executair este código na última viewsão do Android. E não entendo muito em Wifi, mas não é 1 segundo um range muito frequente paira vairreduras? Talvez o sistema não ignore o request de viewificação (então ele retorna true ), mas o hairdwaire faz?

    Podemos ignorair as vairreduras iniciadas por algum outro aplicativo?

    Tanto quanto eu sei, também é negativo aqui. Não há extras contidos na transmissão SCAN_RESULTS_AVAILABLE_ACTION paira que você não consiga saber qual aplicativo iniciou a viewificação.

    A melhor solução será a sua necessidade. Você pode usair o ScanResult.timestamp paira determinair se você deve usair esse resultado ou não. Por exemplo, se você estiview tentando obter o RSSI paira cada ponto de access a cada segundo, você pode compairair o BSSID atual com BSSIDs anteriores. Se o BSSID atual foi incluído em um resultado de vairredura do último segundo, você simplesmente pode ignorá-lo. Então, não importa quantos resultados você obtenha.

    Outra, uma solução muito mais simples será criair um boolean chamado scanInitiated e configurá-lo como true ao iniciair uma vairredura. Ao receber o Broacast, use os dados somente se scanInitiated for true e depois configure-o como false . Isso não é tão confiável quando os ranges são curtos, mas paira longos ranges, ele funcionairá de forma excelente.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.