WifiMonotor.java

来源:互联网 发布:网络视讯赌博真假 编辑:程序博客网 时间:2024/06/10 01:22
package com.zimperium.zanti;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.IntentFilter;import android.net.wifi.ScanResult;import android.net.wifi.WifiConfiguration;import android.net.wifi.WifiManager;import android.os.Bundle;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Timer;import java.util.TimerTask;public class WifiMonitor extends al {    private static final ArrayList h = new ArrayList(Arrays.asList(new Integer[]{Integer.valueOf(0), Integer.valueOf(2412), Integer.valueOf(2417), Integer.valueOf(2422), Integer.valueOf(2427), Integer.valueOf(2432), Integer.valueOf(2437), Integer.valueOf(2442), Integer.valueOf(2447), Integer.valueOf(2452), Integer.valueOf(2457), Integer.valueOf(2462), Integer.valueOf(2467), Integer.valueOf(2472), Integer.valueOf(2484)}));    WifiManager a;    Timer b;    TimerTask c;    bz d;    ArrayList e = new ArrayList();    ListView f;    private BroadcastReceiver g = new br(this);    public void a() {        for (int i = 0; i < this.e.size(); i++) {            bv bvVar = (bv) this.e.get(i);            bvVar.b = 0;            this.e.set(i, bvVar);        }    }    public void a(String str, String str2, int i, String str3, int i2) {        bv bvVar;        bv bvVar2 = new bv();        int i3 = 0;        while (i3 < this.e.size()) {            bvVar = (bv) this.e.get(i3);            if (str2.equalsIgnoreCase(bvVar.f)) {                break;            }            i3++;        }        i3 = -1;        bvVar = bvVar2;        int i4 = R.drawable.wifi_monitor_flag_red;        if (str3.contains("WPA") || str3.contains("WEP")) {            i4 = R.drawable.wifi_monitor_flag_green;        }        bvVar.g = i4;        bvVar.a = str3;        bvVar.c = str;        bvVar.f = str2;        bvVar.e = i2;        bvVar.b = i;        if (str3.contains("WPA2")) {            bvVar.d = "WPA2";        } else if (str3.contains("WPA")) {            bvVar.d = "WPA";        } else if (str3.contains("WEP")) {            bvVar.d = "WEP";        } else {            bvVar.d = "OPEN";        }        if (i3 == -1) {            this.e.add(bvVar);        } else {            this.e.set(i3, bvVar);        }    }    public static int a(int i) {        return h.indexOf(Integer.valueOf(i));    }    public void b() {        try {            a();            List<ScanResult> scanResults = this.a.getScanResults();            if (scanResults != null) {                for (ScanResult scanResult : scanResults) {                    a(scanResult.SSID, scanResult.BSSID, WifiManager.calculateSignalLevel(scanResult.level, 46), scanResult.capabilities, scanResult.frequency);                }                this.d.notifyDataSetChanged();            }        } catch (Exception e) {            e.printStackTrace();        }    }    public void onResume() {        super.onResume();        try {            this.b.schedule(this.c, 0, 500);        } catch (Exception e) {        }        registerReceiver(this.g, new IntentFilter("android.net.wifi.SCAN_RESULTS"));        b();    }    public void finish() {        this.b.cancel();        super.finish();    }    public void onPause() {        super.onPause();        unregisterReceiver(this.g);    }    public void onCreate(Bundle bundle) {        super.onCreate(bundle);        getWindow().addFlags(128);        setContentView((int) R.layout.wifimon_list);        this.f = (ListView) findViewById(R.id.listview);        af.a((Activity) this, (int) R.string.wifi_networks, false);        ((TextView) findViewById(R.id.header)).setText(R.string.available_networks);        this.d = new bz(this, this, this.e);        this.f.setAdapter(this.d);        this.a = (WifiManager) getSystemService("wifi");        LinearLayout linearLayout = (LinearLayout) findViewById(R.id.wifi_disabled);        this.b = new Timer(true);        this.c = new bs(this, linearLayout);    }    void a(WifiManager wifiManager, WifiConfiguration wifiConfiguration, String str, String str2, String str3, String str4) {        boolean z;        if (str3.contains("WPA")) {            wifiConfiguration.preSharedKey = "\"" + str4 + "\"";        } else if (str3.contains("WEP")) {            wifiConfiguration.wepKeys[0] = "\"" + str4 + "\"";            wifiConfiguration.wepTxKeyIndex = 0;            wifiConfiguration.allowedKeyManagement.set(0);            wifiConfiguration.allowedGroupCiphers.set(0);        } else {            wifiConfiguration.allowedKeyManagement.set(0);            wifiConfiguration.allowedGroupCiphers.set(2);            wifiConfiguration.allowedAuthAlgorithms.set(0);            wifiConfiguration.allowedKeyManagement.set(0);        }        int addNetwork = wifiManager.addNetwork(wifiConfiguration);        for (WifiConfiguration wifiConfiguration2 : wifiManager.getConfiguredNetworks()) {            if (wifiConfiguration2.SSID != null && wifiConfiguration2.SSID.equals("\"" + str + "\"") && str2.equals(wifiConfiguration2.BSSID)) {                wifiManager.disconnect();                wifiManager.enableNetwork(wifiConfiguration2.networkId, true);                wifiManager.reconnect();                z = true;                break;            }        }        z = false;        if (!z) {            wifiManager.disconnect();            wifiManager.enableNetwork(addNetwork, true);            wifiManager.reconnect();        }        finish();    }}