Android WiFi工具类
当开发基于WiFi的Android应用时,对WiFi连接、管理和配置的操作非常重要。为了简化这些操作,我们可以使用一个名为 WifiUtils 的工具类。这个工具类提供了一系列方法,可以方便地执行诸如检查WiFi状态、打开或关闭WiFi、扫描可用的WiFi网络、连接到指定的WiFi网络、断开当前连接的WiFi网络等操作。
这个工具类还提供了一些辅助方法,比如获取当前连接的WiFi信息、检查是否有当前可用的WiFi连接、添加WiFi配置到系统、创建WiFi配置、获取是否已经存在的配置、移除同名WiFi、判断扫描结果中是否包含了特定名称的WiFi等。这些方法使得WiFi的管理和配置变得更加便捷和灵活。
使用这个 WifiUtils 工具类,我们可以轻松地在Android应用中执行WiFi相关的操作,无论是连接到特定的WiFi网络,还是管理已经连接的网络,都可以通过简单的调用实现。这样可以极大地简化了开发过程,提高了应用的可靠性和用户体验。 WifiUtils 工具类为Android开发人员提供了一个简单而强大的工具,可以在开发过程中更方便地管理和配置WiFi网络。通过使用这个工具类,开发人员可以更专注于应用的核心功能,而无需过多关注底层的WiFi管理细节。
1.WifiUtils 工具类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
| import android.content.Context; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import java.util.List;
public class WifiUtils { private final WifiManager wifiManager;
public WifiUtils(Context context) { wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); }
public boolean isWifiEnabled() { return wifiManager.isWifiEnabled(); }
public void openWifi() { if (!wifiManager.isWifiEnabled()) { wifiManager.setWifiEnabled(true); } }
public void closeWifi() { if (wifiManager.isWifiEnabled()) { wifiManager.setWifiEnabled(false); } }
public void scanWifi() { wifiManager.startScan(); }
public List<WifiConfiguration> getScanResults() { return wifiManager.getConfiguredNetworks(); }
public WifiInfo getConnectedWifiInfo() { return wifiManager.getConnectionInfo(); }
public boolean isWifiConnected() { WifiInfo wifiInfo = wifiManager.getConnectionInfo(); return wifiInfo != null && wifiInfo.getNetworkId() != -1; }
public void disconnectWifi() { wifiManager.disconnect(); }
public void connectToWifi(WifiConfiguration wifiConfig) { int netId = wifiManager.addNetwork(wifiConfig); wifiManager.enableNetwork(netId, true); }
public void removeWifi(int netId) { wifiManager.removeNetwork(netId); wifiManager.saveConfiguration(); }
public int addNetwork(WifiConfiguration wifiConfig) { return wifiManager.addNetwork(wifiConfig); }
public WifiConfiguration createWifiConfig(String ssid, String password, int type) { WifiConfiguration config = new WifiConfiguration(); config.SSID = "\"" + ssid + "\""; switch (type) { case 1: config.hiddenSSID = true; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); break; case 2: config.hiddenSSID = true; config.wepKeys[0] = "\"" + password + "\""; config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; break; case 3: config.preSharedKey = "\"" + password + "\""; break; } return config; }
public WifiConfiguration isExist(String ssid) { List<WifiConfiguration> existingConfigs = wifiManager.getConfiguredNetworks(); for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig.SSID.equals("\"" + ssid + "\"")) { return existingConfig; } } return null; }
public void removeSameWifi(String ssid) { List<WifiConfiguration> existingConfigs = wifiManager.getConfiguredNetworks(); for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig.SSID.equals("\"" + ssid + "\"")) { wifiManager.removeNetwork(existingConfig.networkId); } } }
public boolean isScanResultExist(String ssid, List<WifiConfiguration> existingConfigs) { for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig.SSID.equals("\"" + ssid + "\"")) { return true; } } return false; }
public enum WifiSecurityType { OPEN, WEP, WPA } }
|
2.WifiUtils 简单使用实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| import android.os.Bundle; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.util.List;
public class MainActivity extends AppCompatActivity {
WifiUtils wifiUtils;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
wifiUtils = new WifiUtils(this);
boolean isWifiEnabled = wifiUtils.isWifiEnabled();
wifiUtils.openWifi();
wifiUtils.closeWifi();
wifiUtils.scanWifi();
List<WifiConfiguration> scanResults = wifiUtils.getScanResults();
wifiUtils.getConnectedWifiInfo();
boolean isWifiConnected = wifiUtils.isWifiConnected();
wifiUtils.disconnectWifi();
WifiUtils.WifiConfiguration wifiConfig = wifiUtils.createWifiConfig("YourSSID", "YourPassword", 3);
wifiUtils.connectToWifi(wifiConfig);
wifiUtils.removeWifi(0);
int netId = wifiUtils.addNetwork(wifiConfig);
WifiUtils.WifiConfiguration existingConfig = wifiUtils.isExist("YourSSID");
wifiUtils.removeSameWifi("YourSSID");
boolean isScanResultExist = wifiUtils.isScanResultExist("YourSSID", scanResults);
Toast.makeText(this, "WiFi Enabled: " + isWifiEnabled, Toast.LENGTH_SHORT).show(); } }
|