Code Monkey home page Code Monkey logo

android-wifiscan's Introduction

Android-WifiScan

logo

Funzionalità

L'applicazione si divide in due parti principali:

  • Scanner: permette di effettuare la scansione delle reti e salvarle nel database
  • Database Viewer: permette di visualizzare e gestire i dati registrati dalle scansioni

Scanner

Con il bottone SCAN si avvierà la scansione delle reti, è necessario:

  • Aver abilitato i permessi GPS (verranno chiesti comunque all'utente)
  • Avere il Wifi attivo (verrà abilitato automaticamente)
  • Avere il GPS attivo (l'applicazione non lo abiliterà in automatico)

Finita la scansione verrano mostrate a viedeo le reti trovate.
Tramite l'apposito bottone EDIT sarà possibile modificare la password della rete.

Nel mentre l'applicazione cercerà di prendere la posizione (con alta precisone) del dispositivo. Quando avrà finito il bottone SAVE verrà abilitato. Attenzione: questa operazione impiegherà un po di secondi.

Il bottone SAVE permette di salvare la scansione nel database.

In alto a destra c'è il menù con cui si potrà passare alla visualizzazione del database.

Database Viewer

Appena aperta questa vista tutti i dati salvati fin ora verranno mostrati a video.

Sarà possibile modificare la password di una rete effettuando un TAP sul campo PASSWORD.
Per eliminare una rete è sufficente effettuare un TAP prolungato sulla rete.

È anche possibile filtrare le reti per:

  • SSID
  • Posizione
  • SSID e Posizione

Attenzione: è richiesta una connessione ad internet funzionante per poter effettuare una ricerca per Posizione. Se non è presente una connessione ad internet funzionante verrà mostrata a video le Coordinate (latitudine e longitudine) invece che la posizione.

La ricerca per posizione offre la funzione Ricerca precisa che è possibile attivare anteponendo il carattere * alla posizione.

E.G.
* perugia oppure *perugia

La Ricerca precisa mostrerà solo le reti molto vicine alla posizione indicata.

E.G.
Se la stringa di ricerca è *milano verranno mostrate solo le reti vicino al centro di mialano e non tutti quelle che si trovano in provincia di Milano o nelle vicinanze di Milano.

Se non si utilizza la funzione Ricerca precisa (quindi omettendo il carattere *) verranno ordinate le reti in basa alla vicinazna dalla posizione inserita.

Con il menù in alto a destra è possibile esportare l'intero contenuto del database in CSV (verrà salvato nella cartella Download del dispositivo) o eliminare tutti i dati.

Importante

Ricordarsi di inserire una password per l'algoritmo AES modificando la variabile KEY nel file AESCrypt.java altrimenti la codifica/decodifica non avrà effetto.

android-wifiscan's People

Contributors

ncvescera avatar nicoloposta avatar tommasoromani avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

ansuman87

android-wifiscan's Issues

Cold Start di DbActivity troppo lento

Quando DbActivity viene aperta per la prima volta risulta abbastanza lenta e non viene mostrata l'animazione della RecyclerView.
Chiudendola e riaprendola altre volte il problema sembra non presentarsi (si dovrebbe trattare di un Hot Start quindi più veloce)

Cose da fare:

  • Capire perchè quando l'app viene aperta per la prima volta le animazioni in DbActivity sembra che non vengano fatte (invece in aperture successive funzionano normalmente)
  • Capire se i thread risolvono la situazione
  • Chiedere a StackOverflow e sperare in una risposta: Domanda
  • Capire se può essere utile il metodo protected void onStart() di ogni activity.
    {Sembra che non sia utile, sia con onStart() che con onRresume() il comportamento non sembra cambiare}

Alcuni link utili:

Possibili soluzioni:

  • Non mostrare i dati all'avvio e sarà compito dell'utente pigiare il bottone per farli caricare. È più semplice ma meno "elegante" e sicuramente funziona !
  • Creare un thread che aspetta 2 o 3 secondi (magari mostrando un'animazione di uno spinner) e poi passando in UI Mode andrà a chiedere i dati al database

Ricerca Precisa

Migliorare la query per la ricerca precisa (quella che si attiva anteponendo * alla stringa di ricerca per Posizione).

Qui di seguito un link utile di una domanda di stackOverflow: link

Una delle risposte suggerisce questo:

SELECT 
id, 
(
   3959 *
   acos(cos(radians(37)) * 
   cos(radians(lat)) * 
   cos(radians(lng) - 
   radians(-122)) + 
   sin(radians(37)) * 
   sin(radians(lat )))
) AS distance 
FROM markers 
HAVING distance < 28 
ORDER BY distance LIMIT 0, 20;

Sembra fattibile dato che non ci sono operazioni come POW() o SQRT() che non sono nativamente supportate da SQLite.

Aggiornamento:
Le funzioni trigonometriche non sono supportate da SQLite e per fare delle funzioni custom è mooolto difficile.
Conviene salvare le coordinate anche in forma "trigonometrica" (ciò applicare la funzione seno e coseno alle coordinate) così facendo possono essere utilizzate semplici operazioni (+, -, *) per la ricerca.
Oppure si può lasciare tutto com'era e far fare tutto il lavoro ad Android (potrebbe essere leggermente pesante (?))
Controllare questo: link

Cose da fare:

  • Implementare la query soprastante
  • Scegliere il metodo migliore da implementare
  • Testarla

Supposizione:
Potrebbe non dover più servire un'estrema precisione dato che è stata introdotta la PrecisionSearch e la nonPrecisionSearch

Esportazione Database in CSV

L'esportazione del database in CSV funziona ma utilizza funzioni vecchie.
Non dovrebbe esserci nessun problema, ma andrebbe controllato e aggiornato con le nuove funzionalità delle API di Android

(È stato un cancro farlo funzionare, aggiornarlo sarà anche peggio 😮 )

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.