added wifi scanner to wifi settings page
authorpk910 <philipp@pk910.de>
Fri, 5 Feb 2016 20:29:46 +0000 (21:29 +0100)
committerpk910 <philipp@pk910.de>
Fri, 5 Feb 2016 20:29:46 +0000 (21:29 +0100)
app/src/main/AndroidManifest.xml
app/src/main/java/de/dhbwloe/campusapp/fragments/WifiSettings.java
app/src/main/res/layout/fragment_wifi_settings.xml
app/src/main/res/values/strings.xml

index fe7a3d806832eab18bfc41eb77c51dd90f52df08..4923c3b21460f57ec4d22dad91dd8654547025fd 100644 (file)
@@ -5,7 +5,9 @@
     <uses-permission android:name="android.permission.NFC" />
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 
     <uses-feature
         android:name="android.hardware.nfc"
index fceca54869de7be2dcd55218aa419dd62426ead7..a9bd972e6f71527e980944b9203d86b6379cdc27 100644 (file)
@@ -3,19 +3,32 @@ package de.dhbwloe.campusapp.fragments;
 
 import android.annotation.TargetApi;
 import android.app.ActionBar;
+import android.app.Activity;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.res.Resources;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.net.wifi.ScanResult;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiEnterpriseConfig;
+import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
 import android.os.Build;
 import android.os.Bundle;
 import android.support.design.widget.TabLayout;
 import android.support.v4.app.Fragment;
 import android.util.Base64;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.EditText;
+import android.widget.RelativeLayout;
+import android.widget.TableRow;
 import android.widget.TextView;
 
 import java.io.ByteArrayInputStream;
@@ -25,7 +38,9 @@ import java.lang.reflect.Field;
 import java.security.cert.CertificateException;
 import java.security.cert.CertificateFactory;
 import java.security.cert.X509Certificate;
+import java.util.List;
 
+import de.dhbwloe.campusapp.CampusAppContext;
 import de.dhbwloe.campusapp.CampusAppFragment;
 import de.dhbwloe.campusapp.R;
 import de.dhbwloe.campusapp.search.SearchIndices;
@@ -36,7 +51,7 @@ import de.dhbwloe.campusapp.search.SearchIndices;
 public class WifiSettings extends CampusAppFragment {
     /* implement this for search results ;) */
     public static SearchIndices[] GetSearchIndices() {
-        return new SearchIndices[] {
+        return new SearchIndices[]{
                 new SearchIndices("WifiSettings", true) {{
                     setUpdateTime(1);
                     setTarget("#WifiSettings");
@@ -53,13 +68,14 @@ public class WifiSettings extends CampusAppFragment {
         WIFI_AUTHTYPE_WPA,
         WIFI_AUTHTYPE_WPA_ENTERPRISE,
     };
+
     private class WifiNetworkSettingsSet {
         String name;
         String ssid;
         WifiNetworkAuthenticationTypes authType;
         int[] authAlgorithms;
-        int   eapMethod;
-        int   phase2Method;
+        int eapMethod;
+        int phase2Method;
 
         String caCertStr;
         String caName;
@@ -69,6 +85,7 @@ public class WifiSettings extends CampusAppFragment {
         String password;
 
         TabLayout.Tab tab;
+        boolean isInScanResult = false;
 
         public WifiNetworkSettingsSet(String name, String ssid, WifiNetworkAuthenticationTypes authType) {
             this.name = name;
@@ -110,16 +127,33 @@ public class WifiSettings extends CampusAppFragment {
         }
 
         public X509Certificate generateCertificate() throws CertificateException, IOException {
-            byte [] decoded = Base64.decode(caCertStr.replaceAll("-----BEGIN CERTIFICATE-----", "").replaceAll("-----END CERTIFICATE-----", ""), Base64.DEFAULT);
-            return (X509Certificate)CertificateFactory.getInstance("X.509").generateCertificate(new ByteArrayInputStream(decoded));
+            byte[] decoded = Base64.decode(caCertStr.replaceAll("-----BEGIN CERTIFICATE-----", "").replaceAll("-----END CERTIFICATE-----", ""), Base64.DEFAULT);
+            return (X509Certificate) CertificateFactory.getInstance("X.509").generateCertificate(new ByteArrayInputStream(decoded));
         }
     }
 
     private View view;
     private TabLayout tablayout;
     private WifiNetworkSettingsSet[] wifiPresets;
-    private WifiManager wifimanager;
+    private WifiManager wifiManager;
+    private ConnectivityManager connectivityManager;
     private int selectedNetworkIndex = 0;
+    private boolean networkScanned = false;
+    private BroadcastReceiver wifiStateReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context arg0, Intent arg1) {
+            NetworkInfo networkInfo = (NetworkInfo) arg1.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
+            if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
+                updateWifiState();
+            }
+        }
+    };
+    private BroadcastReceiver wifiScanReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context arg0, Intent arg1) {
+            updateWifiScanState();
+        }
+    };
 
     private void loadDhbwWifiDefinitions() {
         int numOfNetworks = 3;
@@ -222,8 +256,8 @@ public class WifiSettings extends CampusAppFragment {
                 wifiConfig.enterpriseConfig = enterpriseConfig;
                 break;
         }
-        int networkId = wifimanager.addNetwork(wifiConfig);
-        wifimanager.enableNetwork(networkId, true);
+        int networkId = wifiManager.addNetwork(wifiConfig);
+        wifiManager.enableNetwork(networkId, true);
     }
 
 
@@ -233,7 +267,8 @@ public class WifiSettings extends CampusAppFragment {
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         loadDhbwWifiDefinitions();
-        wifimanager = (WifiManager)AppContext.getMainActivity().getSystemService(AppContext.getMainActivity().WIFI_SERVICE);
+        wifiManager = (WifiManager)AppContext.getMainActivity().getSystemService(AppContext.getMainActivity().WIFI_SERVICE);
+        connectivityManager = (ConnectivityManager) AppContext.getMainActivity().getSystemService(Activity.CONNECTIVITY_SERVICE);
     }
 
     private void updateSelectedNetworkInformation() {
@@ -249,20 +284,44 @@ public class WifiSettings extends CampusAppFragment {
         TextView phase2InfoView = (TextView) view.findViewById(R.id.phase2Info);
         TextView cacertInfoView = (TextView) view.findViewById(R.id.cacertInfo);
 
+        TableRow eapInfoRow = (TableRow) view.findViewById(R.id.eapInfoRow);
+        TableRow phase2InfoRow = (TableRow) view.findViewById(R.id.phase2InfoRow);
+        TableRow cacertInfoRow = (TableRow) view.findViewById(R.id.cacertInfoRow);
+        TableRow pskInfoRow = (TableRow) view.findViewById(R.id.pskInfoRow);
+
+        RelativeLayout insecureNetWarning = (RelativeLayout) view.findViewById(R.id.insecureNetWarning);
+
+
         ssidInfoView.setText(settings.ssid);
+
+        eapInfoRow.setVisibility(View.GONE);
+        phase2InfoRow.setVisibility(View.GONE);
+        cacertInfoRow.setVisibility(View.GONE);
+        pskInfoRow.setVisibility(View.GONE);
+        insecureNetWarning.setVisibility(View.GONE);
+
         switch(settings.authType) {
             case WIFI_AUTHTYPE_NONE:
                 securityInfoView.setText(R.string.wifiopts_security_open);
+
+                insecureNetWarning.setVisibility(View.VISIBLE);
                 break;
             case WIFI_AUTHTYPE_WEP:
                 securityInfoView.setText(R.string.wifiopts_security_wep);
+                insecureNetWarning.setVisibility(View.VISIBLE);
                 // unsupported!
                 break;
             case WIFI_AUTHTYPE_WPA:
                 securityInfoView.setText(R.string.wifiopts_security_wpa);
+
+                pskInfoRow.setVisibility(View.VISIBLE);
                 break;
             case WIFI_AUTHTYPE_WPA_ENTERPRISE:
                 securityInfoView.setText(R.string.wifiopts_security_wpa_enterprise);
+
+                eapInfoRow.setVisibility(View.VISIBLE);
+                phase2InfoRow.setVisibility(View.VISIBLE);
+                cacertInfoRow.setVisibility(View.VISIBLE);
                 break;
         }
 
@@ -303,11 +362,75 @@ public class WifiSettings extends CampusAppFragment {
 
             cacertInfoView.setText(settings.caName);
         } else {
-            eapInfoView.setText("-");
-            phase2InfoView.setText("-");
-            cacertInfoView.setText("-");
+
+        }
+        updateWifiConnectButton();
+    }
+
+    private void updateWifiState() {
+        NetworkInfo myNetworkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
+        WifiInfo myWifiInfo = wifiManager.getConnectionInfo();
+
+        Resources resources = AppContext.getMainActivity().getResources();
+        String status;
+        if(myNetworkInfo.isConnectedOrConnecting()) {
+            int statusId = (myNetworkInfo.isConnected() ? R.string.wifisettings_status_connected : R.string.wifisettings_status_connecting);
+
+            String ssid = myWifiInfo.getSSID();
+
+            status = String.format(resources.getString(statusId), ssid);
+        } else {
+            status = resources.getString(R.string.wifisettings_status_disconnected);
+        }
+
+        TextView statusTextView = (TextView)view.findViewById(R.id.wifiStatusText);
+        statusTextView.setText(status);
+        updateWifiConnectButton();
+    }
+
+    private void updateWifiScanState() {
+        networkScanned = true;
+        List<ScanResult> scanResultList = wifiManager.getScanResults();
+        for(int i = 0; i < wifiPresets.length; i++) {
+            boolean networkFound = false;
+            for(ScanResult result : scanResultList) {
+                if(result.SSID != null && result.SSID.equalsIgnoreCase(wifiPresets[i].ssid)) {
+                    networkFound = true;
+                    break;
+                }
+            }
+            wifiPresets[i].isInScanResult = networkFound;
+        }
+        updateWifiConnectButton();
+    }
+
+    private void updateWifiConnectButton() {
+        if(selectedNetworkIndex >= wifiPresets.length)
+            return;
+        WifiNetworkSettingsSet preset = wifiPresets[selectedNetworkIndex];
+
+        boolean buttonEnabled = false;
+        int buttonTextId = 0;
+        NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
+        WifiInfo wifiInfo = wifiManager.getConnectionInfo();
+
+        if(!wifiManager.isWifiEnabled()) {
+            buttonTextId = R.string.wifisettings_connect_button_disabled;
+        } else if(networkInfo.isConnectedOrConnecting() && wifiInfo.getSSID() != null && wifiInfo.getSSID().equalsIgnoreCase(preset.ssid)) {
+            buttonTextId = R.string.wifisettings_connect_button_ready;
+        } else if(!networkScanned) {
+            buttonTextId = R.string.wifisettings_connect_button_scan;
+        } else if(!preset.isInScanResult) {
+            buttonTextId = R.string.wifisettings_connect_button_notfound;
+            buttonEnabled = true;
+        } else {
+            buttonEnabled = true;
+            buttonTextId = R.string.wifisettings_connect_button;
         }
 
+        Button connectBtn = (Button) view.findViewById(R.id.wifiConnectBtn);
+        connectBtn.setEnabled(buttonEnabled);
+        connectBtn.setText(buttonTextId);
     }
 
     @Override
@@ -347,6 +470,13 @@ public class WifiSettings extends CampusAppFragment {
             public void onClick(View v) {
                 Button connectBtn = (Button) v;
                 connectBtn.setEnabled(false);
+                WifiNetworkSettingsSet settings = wifiPresets[selectedNetworkIndex];
+                if(!settings.isInScanResult) {
+                    networkScanned = false;
+                    wifiManager.startScan();
+                    updateWifiConnectButton();
+                    return;
+                }
 
                 EditText usernameEdt = (EditText) view.findViewById(R.id.wifiUsername);
                 EditText passwordEdt = (EditText) view.findViewById(R.id.wifiPassword);
@@ -358,7 +488,7 @@ public class WifiSettings extends CampusAppFragment {
                     // connectToDHWiFi not supported!
                     // do something else?
                 } else if (username.length() > 0 && password.length() > 0) {
-                    WifiNetworkSettingsSet settings = wifiPresets[selectedNetworkIndex];
+
                     if(settings != null) {
                         settings.setAuthData(username, password);
                         connectToWiFi(settings);
@@ -369,7 +499,37 @@ public class WifiSettings extends CampusAppFragment {
             }
         });
 
+        updateWifiState();
+        updateWifiScanState();
+
         return view;
     }
 
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        if(AppContext == null)
+            AppContext = CampusAppContext.getInstance();
+
+        AppContext.getMainActivity().registerReceiver(this.wifiStateReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
+        AppContext.getMainActivity().registerReceiver(this.wifiScanReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
+
+        networkScanned = false;
+        wifiManager.startScan();
+        updateWifiConnectButton();
+
+        Log.i("WifiSettings", "registered wifi state receiver");
+    }
+
+    @Override
+        public void onPause() {
+        super.onPause();
+
+        AppContext.getMainActivity().unregisterReceiver(this.wifiStateReceiver);
+        AppContext.getMainActivity().unregisterReceiver(this.wifiScanReceiver);
+
+        Log.i("WifiSettings", "unregistered wifi state receiver");
+    }
+
 }
index 7c9fc46a5ce576259e7f50993f4bf9d480316db4..4b756ac44ddaf279c65fa8193728302e1c7e9937 100644 (file)
         android:layout_height="wrap_content"
         android:text="@string/wifisettings_about_wifi" />
 
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="8dp">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/wifisettings_current_status"
+            android:id="@+id/textView14" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="{status}"
+            android:id="@+id/wifiStatusText"
+            android:layout_alignParentTop="true"
+            android:layout_toRightOf="@+id/textView14"
+            android:layout_toEndOf="@+id/textView14"
+            android:layout_marginLeft="8dp" />
+    </RelativeLayout>
+
     <android.support.design.widget.AppBarLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
             />
     </android.support.design.widget.AppBarLayout>
 
-    <RelativeLayout
+    <TableLayout
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:padding="8dp">
+        android:layout_height="wrap_content">
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/wifisettings_ssid_caption"
-            android:id="@+id/textView3" />
+        <TableRow
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/wifisettings_security_caption"
-            android:id="@+id/textView4"
-            android:layout_below="@+id/textView3"
-            android:layout_alignLeft="@+id/textView3"
-            android:layout_alignStart="@+id/textView3" />
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/wifisettings_ssid_caption"
+                android:id="@+id/textView3"
+                android:layout_weight="1" />
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/wifisettings_eap_caption"
-            android:id="@+id/textView6"
-            android:layout_below="@+id/textView4"
-            android:layout_alignLeft="@+id/textView3"
-            android:layout_alignStart="@+id/textView4" />
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="{ssid}"
+                android:id="@+id/ssidInfo"
+                android:paddingLeft="8dp"
+                android:layout_alignParentTop="true"
+                android:layout_centerHorizontal="true"
+                android:layout_weight="1" />
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/wifisettings_phase2_caption"
-            android:id="@+id/textView7"
-            android:layout_below="@+id/textView6"
-            android:layout_alignLeft="@+id/textView3"
-            android:layout_alignStart="@+id/textView6" />
+        </TableRow>
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/wifisettings_cacert_caption"
-            android:id="@+id/textView8"
-            android:layout_below="@+id/textView7"
-            android:layout_alignLeft="@+id/textView3"
-            android:layout_alignStart="@+id/textView7" />
+        <TableRow
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="{ssid}"
-            android:id="@+id/ssidInfo"
-            android:paddingLeft="8dp"
-            android:layout_toRightOf="@+id/textView7"
-            android:layout_toEndOf="@+id/textView7" />
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/wifisettings_security_caption"
+                android:id="@+id/textView4"
+                android:layout_weight="1" />
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="{security}"
-            android:id="@+id/securityInfo"
-            android:paddingLeft="8dp"
-            android:layout_below="@+id/textView3"
-            android:layout_toRightOf="@+id/textView7"
-            android:layout_toEndOf="@+id/textView7" />
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="{security}"
+                android:id="@+id/securityInfo"
+                android:paddingLeft="8dp"
+                android:layout_weight="1" />
+        </TableRow>
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="{eap}"
-            android:id="@+id/eapInfo"
-            android:paddingLeft="8dp"
-            android:layout_below="@+id/textView4"
-            android:layout_toRightOf="@+id/textView7"
-            android:layout_toEndOf="@+id/textView7" />
+        <TableRow
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:id="@+id/eapInfoRow">
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="{phase2}"
-            android:id="@+id/phase2Info"
-            android:paddingLeft="8dp"
-            android:layout_below="@+id/textView6"
-            android:layout_toRightOf="@+id/textView7"
-            android:layout_toEndOf="@+id/textView7" />
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/wifisettings_eap_caption"
+                android:id="@+id/textView6"
+                android:layout_weight="1" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="{eap}"
+                android:id="@+id/eapInfo"
+                android:paddingLeft="8dp"
+                android:layout_weight="1" />
+        </TableRow>
+
+        <TableRow
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:id="@+id/phase2InfoRow">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/wifisettings_phase2_caption"
+                android:id="@+id/textView7"
+                android:layout_weight="1" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="{phase2}"
+                android:id="@+id/phase2Info"
+                android:paddingLeft="8dp"
+                android:layout_weight="1" />
+        </TableRow>
+
+        <TableRow
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:id="@+id/cacertInfoRow">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/wifisettings_cacert_caption"
+                android:id="@+id/textView8"
+                android:layout_weight="1" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="{cacert}"
+                android:id="@+id/cacertInfo"
+                android:paddingLeft="8dp"
+                android:layout_weight="1" />
+        </TableRow>
+
+        <TableRow
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:id="@+id/pskInfoRow">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/wifisettings_psk_caption"
+                android:id="@+id/textView11"
+                android:layout_weight="1" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="{psk}"
+                android:id="@+id/pskInfo"
+                android:paddingLeft="8dp"
+                android:layout_weight="1" />
+        </TableRow>
+
+        <TableRow
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:measureWithLargestChild="false">
+
+        </TableRow>
+
+    </TableLayout>
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:id="@+id/insecureNetWarning">
 
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="{cacert}"
-            android:id="@+id/cacertInfo"
-            android:paddingLeft="8dp"
-            android:layout_below="@+id/textView7"
-            android:layout_toRightOf="@+id/textView7"
-            android:layout_toEndOf="@+id/textView7" />
+            android:text="@string/wifisettings_insecure_network"
+            android:id="@+id/textView12"
+            android:layout_weight="2"
+            android:textColor="#FF0000" />
     </RelativeLayout>
+
     <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
index 1b0b9fe09cfb7a1d74d6bb0c80e757347619dc65..de4d73f0a659ffd4834b0bee12484e2a2ffe8795 100644 (file)
     <string name="wifiopts_phase2_gtc">GTC</string>
 
     <string name="wifisettings_connect_button">Jetzt Verbinden</string>
+    <string name="wifisettings_connect_button_notfound">Netzwerk nicht in Reichweite</string>
+    <string name="wifisettings_connect_button_scan">Scanning...</string>
+    <string name="wifisettings_connect_button_disabled">WLAN Adapter deaktiviert</string>
+    <string name="wifisettings_connect_button_ready">Verbunden!</string>
     <string name="title_activity_settings">Settings</string>
 
+
+    <string name="wifisettings_current_status">WLAN Status:</string>
+    <string name="wifisettings_status_connected">Verbunden mit %1$s</string>
+    <string name="wifisettings_status_connecting">Verbinde mit %1$s...</string>
+    <string name="wifisettings_status_disconnected">Nicht Verbunden</string>
+
+
     <!-- Strings related to Settings -->
 
     <!-- Example General settings -->
     <!-- TODO: Remove or change this placeholder text -->
     <string name="hello_blank_fragment">Hello blank fragment</string>
     <string name="mensacard_guthaben">Dein Guthaben:</string>
+    <string name="wifisettings_psk_caption">PSK:</string>
+    <string name="wifisettings_insecure_network">Achtung: Dieses Netzwerk ist potentiell unsicher!</string>
 </resources>