Variable löschen wenn der WLAN ist aus

  • 1 Antworten
  • Neuester Beitrag
Diskutiere Variable löschen wenn der WLAN ist aus im Android App Entwicklung im Bereich Betriebssysteme & Apps.
T

the_time

Ambitioniertes Mitglied
Hallo,
ich habe eine JSON file in raw ordner mit folgender Struktur.

PHP:
{
    "wifi": [
        {
            "ssid": "KD Privat",
            "route_number": 1
        },
        {
            "ssid": "KD WLAN Hotspot+",
            "route_number": 4
        }
    ]
}
ich benutze BroadcasteReiceiver um die stärkse WIFI access point zu erfassen und dann die dazugehörige route_number mit Gson zuzuordnen. Momentan habe ich das problem wenn ich die WLAN aus mache dann wird die zuletzt erfasste route_number an den Server mitgeschickt und nicht 0 oder auch wenn ich die App beende und die WLAN deaktiviere danach die app wieder starten dann hat route_number den wert 4 obwohl sie in diesem fall auch den 0 haben soll. Wie kann ich das errreichen
PHP:
public class MainActivity extends ActionBarActivity {

    int route_number;
    TextView textWifi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textWifi = (TextView) findViewById(R.id.textWifi);

        wifi_receiver = new BroadcastReceiverListener();
        WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        registerReceiver(wifi_receiver, new IntentFilter(
                WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
        wifi.startScan();
    }

    private class BroadcastReceiverListener extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {

            WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
            WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
            final List<ScanResult> results = wifiManager.getScanResults();

            if (updatedResults.size() > 0) {
                String ssid = deliverBestAccessPoint(updatedResults);
                // retrieve data from json String and parse it.
                route_number = parse_SSID(ssid);
                textWifi.setText(String.valueOf(route_number));
            } else {
                textWifi.setText("There is no WiFi in range.");

            }
        }

        private int parse_SSID(String ssid) {
            int route_number = 0;

            InputStream raw = getResources().openRawResource(R.raw.ssid_number);
            Reader rd = new BufferedReader(new InputStreamReader(raw));
            Gson gson = new Gson();
            WiFiJSONList obj = gson.fromJson(rd, WiFiJSONList.class);
            List<WifiJSON> wifijson = obj.getWifiList();
            Iterator<WifiJSON> iterator = wifijson.iterator();
            while (iterator.hasNext()) {
                WifiJSON wifielement = (WifiJSON) iterator.next();
                String ssid_name = wifielement.getSsid();

                if (ssid_name.equals(ssid)) {
                    route_number = wifielement.getRoute_number();
                }
            }
            return route_number;

        }

    }

    protected void onResume() {

        IntentFilter wifi = new IntentFilter();
        wifi.addAction(android.net.wifi.WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
        registerReceiver(wifi_receiver, wifi);

        super.onResume();
    }

    @Override
    protected void onPause() {
        unregisterReceiver(wifi_receiver);
        super.onPause();
    }

}
Schöne Grüße,
the_time
 
T

the_time

Ambitioniertes Mitglied
Es hat sich erledigt ich habe bloß in der onReceiver methof eine if bedingung gesetzte " if (wifi.isWifiEnabled()) {....}else{route_number = 0;}"