Proposta per app WiFi

darkmiao

Nuovo Utente
9 Gen 2015
4
0
0
Salve ho una domanda da porvi. Stavo pensando ad un'app che che fornisca per ogni wifi disponibile (non solo quello con cui sono collegato) in zona l'effettiva potenza del segnale e non la classica scaletta "a tacche", suggerendo magari la posizione meno dannosa per la salute...una cosa da poco insomma...è fattibile un'app così?
 

narc0x

Utente Attivo
10 Ott 2008
128
2
18
Ho cambiato il topic del tuo post, e' un po' troppo generico.

Per la tua app...cosa vorresti sapere precisamente ? Fattibilita' ? Budget ? Codice ? Cosa ?

P.S. La wifi ancora non e' stato dimostrato che faccia male..forse bisogna tenere sotto controllo le onde elettromagnetiche. Ma ti basti pensare che una wifi produce circa 100 milliwatt di potenza e un forno a microonde produce circa 1.000 watt..e con tutte le norme di sicurezza di oggi, questi ultimi sono ancora in circolazione. (scusate per l'off-topic)
 

darkmiao

Nuovo Utente
9 Gen 2015
4
0
0
Ti ringrazio della risposta narc0x. Allora, premetto di essere un novellino della programmazione e di volermi cimentare nella realizzazione di un'app non troppo complessa. Aldilà dell'aspetto salutare conoscere l'effettiva potenza in ricezione di un router wifi potrebbe anche suggerire la posizione migliore dove installarlo o dove posizionarsi. In effetti non dovrebbe fare quasi niente in più del sistema operativo quando legge i wifi e fornisce la potenza con una scala a tacche...vorrei che l'app fornisse invece che una scala, l'effettiva potenza dei wifi disponibili che se non erro viene fornita in -db, giusto?
 

narc0x

Utente Attivo
10 Ott 2008
128
2
18
Si, prendendo come esempio le API di android hai a disposizione una classe WifiManager e un metodo per ricevere il livello del segnale trasmesso.

La documentazione per questa classe la puoi leggere qui http://developer.android.com/reference/android/net/wifi/WifiManager.htm

Per darti un'idea, ti incollo uno snippet preso da stackoverflow per mostrare un piccolo grafico a barre del segnale wi-fi. Senza entrare nei particolari degli eventi onReceive e la registrazione di essi, ecco il codice:

Codice:
registerReceiver(new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            final WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
            int state = wifi.getWifiState();
            if(state == WifiManager.WIFI_STATE_ENABLED) {
                List<ScanResult> results = wifi.getScanResults();

                for (ScanResult result : results) {
                    if(result.BSSID.equals(wifi.getConnectionInfo().getBSSID())) {
                        int level = WifiManager.calculateSignalLevel(wifi.getConnectionInfo().getRssi(),
                                result.level);
                        int difference = level * 100 / result.level;
                        int signalStrangth= 0;
                        if(difference >= 100)
                            signalStrangth = 4;
                        else if(difference >= 75)
                            signalStrangth = 3;
                        else if(difference >= 50)
                            signalStrangth = 2;
                        else if(difference >= 25)
                            signalStrangth = 1;
                        tv.setText(tv.getText() + "\nDifference :" + difference + " signal state:" + signalStrangth);

                    }

                }
            }
        }
    }, new IntentFilter(WifiManager.RSSI_CHANGED_ACTION));