alpha 0.0.1
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / wifi / WifiConfigurationManager.java
1 package de.dhbwloe.campusapp.wifi;
2
3 import android.annotation.TargetApi;
4 import android.net.NetworkInfo;
5 import android.net.wifi.WifiConfiguration;
6 import android.net.wifi.WifiEnterpriseConfig;
7 import android.net.wifi.WifiInfo;
8 import android.net.wifi.WifiManager;
9 import android.os.Build;
10
11 import java.io.IOException;
12 import java.security.cert.CertificateException;
13
14 /**
15  * Created by pk910 on 08.02.2016.
16  */
17 public class WifiConfigurationManager {
18     public interface WifiConfigurationComplete {
19         public void onWifiConfigurationComplete(WifiNetworkSettings settings, String response);
20     }
21
22     private WifiManager wifiManager;
23
24     public WifiConfigurationManager(WifiManager wifiManager) {
25         this.wifiManager = wifiManager;
26     }
27
28     public void connect(WifiNetworkSettings settings) {
29         if (Build.VERSION.SDK_INT >= 18) {
30             connectToWiFi(settings);
31         }
32     }
33
34
35     @TargetApi(18)
36     private void connectToWiFi(WifiNetworkSettings settings) {
37         WifiConfiguration wifiConfig = new WifiConfiguration();
38         wifiConfig.SSID = settings.ssid;
39         for(int i = 0; i < settings.authAlgorithms.length; i++)
40             wifiConfig.allowedKeyManagement.set(settings.authAlgorithms[i]);
41
42         switch(settings.authType) {
43             case WIFI_AUTHTYPE_NONE:
44                 break;
45             case WIFI_AUTHTYPE_WEP:
46                 // not supported by our app
47                 break;
48             case WIFI_AUTHTYPE_WPA:
49
50                 break;
51             case WIFI_AUTHTYPE_WPA_ENTERPRISE:
52                 WifiEnterpriseConfig enterpriseConfig = new WifiEnterpriseConfig();
53                 String username = settings.username;
54                 if(settings.usernameSuffix != null)
55                     username += settings.usernameSuffix;
56                 enterpriseConfig.setIdentity(username);
57                 enterpriseConfig.setPassword(settings.password);
58                 enterpriseConfig.setEapMethod(settings.eapMethod);
59                 enterpriseConfig.setPhase2Method(settings.phase2Method);
60                 try {
61                     enterpriseConfig.setCaCertificate(settings.generateCertificate());
62                 } catch (CertificateException e) {
63                 } catch (IOException e) {
64                 }
65                 wifiConfig.enterpriseConfig = enterpriseConfig;
66                 break;
67         }
68         int networkId = wifiManager.addNetwork(wifiConfig);
69         wifiManager.enableNetwork(networkId, true);
70     }
71
72 }