version:1.4

update:2021-10-21 10:14:40
fix:
add:增加浏览器桌面检测升级,修复重复请求
This commit is contained in:
2021-12-03 14:33:03 +08:00
parent 768519e14e
commit 34fa9fcdb7
70 changed files with 3189 additions and 1503 deletions

View File

@@ -0,0 +1,269 @@
package com.aoleyun.sn.utils;
import android.annotation.SuppressLint;
import android.content.Context;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.text.TextUtils;
import android.util.Log;
import com.aoleyun.sn.bean.WiFiAlias;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
import com.tencent.mmkv.MMKV;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
/**
* @author : fanhuitong
* e-mail :
* @date : 2021/10/25 10:20
* desc :
* version: 1.0
*/
public class WiFiUtils {
private static WiFiUtils sInstance;
private static WifiManager mWifiManager;
@SuppressLint("StaticFieldLeak")
private Context mContext;
private static String TAG = WiFiUtils.class.getSimpleName();
public WiFiUtils(Context context) {
this.mContext = context;
}
public static void init(Context context) {
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
if (sInstance == null) {
Log.e(TAG, "init: ");
sInstance = new WiFiUtils(context);
}
}
public static WiFiUtils getInstance() {
if (sInstance == null) {
throw new IllegalStateException("You must be init WiFiUtils first");
}
return sInstance;
}
/**
* wifi是否打开
*
* @return
*/
public boolean isWifiEnable() {
boolean isEnable = false;
if (mWifiManager != null) {
if (mWifiManager.isWifiEnabled()) {
isEnable = true;
}
}
return isEnable;
}
/**
* 打开WiFi
*/
public void openWifi() {
if (mWifiManager != null && !isWifiEnable()) {
mWifiManager.setWifiEnabled(true);
}
}
/**
* 关闭WiFi
*/
public void closeWifi() {
if (mWifiManager != null && isWifiEnable()) {
mWifiManager.setWifiEnabled(false);
}
}
/**
* 获取WiFi列表
*
* @return
*/
public List<ScanResult> getWifiList() {
List<ScanResult> resultList = new ArrayList<>();
if (mWifiManager != null && isWifiEnable()) {
resultList.addAll(mWifiManager.getScanResults());
}
return resultList;
}
/**
* 有密码连接
*
* @param ssid
* @param pws
*/
public void connectWifiPws(String ssid, String pws) {
// mWifiManager.disableNetwork(mWifiManager.getConnectionInfo().getNetworkId());
mWifiManager.disconnect();
int netId = mWifiManager.addNetwork(getWifiConfig(ssid, pws, true));
mWifiManager.enableNetwork(netId, true);
mWifiManager.reconnect();
}
/**
* 无密码连接
*
* @param ssid
*/
public void connectWifiNoPws(String ssid) {
// mWifiManager.disableNetwork(mWifiManager.getConnectionInfo().getNetworkId());
int netId = mWifiManager.addNetwork(getWifiConfig(ssid, "", false));
mWifiManager.enableNetwork(netId, true);
}
/**
* wifi设置
*
* @param ssid
* @param pws
* @param isHasPws
*/
private static WifiConfiguration getWifiConfig(String ssid, String pws, boolean isHasPws) {
WifiConfiguration config = new WifiConfiguration();
config.allowedAuthAlgorithms.clear();
config.allowedGroupCiphers.clear();
config.allowedKeyManagement.clear();
config.allowedPairwiseCiphers.clear();
config.allowedProtocols.clear();
config.SSID = "\"" + ssid + "\"";
WifiConfiguration tempConfig = isExist(ssid);
if (tempConfig != null) {
mWifiManager.removeNetwork(tempConfig.networkId);
}
if (isHasPws) {
config.preSharedKey = "\"" + pws + "\"";
config.hiddenSSID = true;
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
config.status = WifiConfiguration.Status.ENABLED;
} else {
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
}
return config;
}
/**
* 得到配置好的网络连接
*
* @param ssid
* @return
*/
private static WifiConfiguration isExist(String ssid) {
List<WifiConfiguration> configs = mWifiManager.getConfiguredNetworks();
for (WifiConfiguration config : configs) {
if (config.SSID.equals("\"" + ssid + "\"")) {
return config;
}
}
return null;
}
synchronized public static void saveWiFiPasswd(List<WiFiAlias> passwd) {
String jsonString = MMKV.defaultMMKV().decodeString("WiFiPassword", "");
Log.e(TAG, "saveWiFiPasswd: " + jsonString);
Gson gson = new Gson();
Type listType = new TypeToken<List<WiFiAlias>>() {
}.getType();
List<WiFiAlias> oldList = gson.fromJson(jsonString, listType);
comparedWiFiAlias(oldList, passwd);
}
private static void comparedWiFiAlias(List<WiFiAlias> oldWiFiAlias, List<WiFiAlias> newWiFiAlias) {
Log.e("comparedWiFiAlias", "oldWiFiAlias: " + oldWiFiAlias);
Log.e("comparedWiFiAlias", "newWiFiAlias: " + newWiFiAlias);
if (newWiFiAlias == null || newWiFiAlias.size() == 0) {
if (oldWiFiAlias == null || oldWiFiAlias.size() == 0) {
return;
}
for (WiFiAlias wiFiAlias : oldWiFiAlias) {
WifiConfiguration tempConfig = isExist(wiFiAlias.getWifi_name());
if (tempConfig != null) {
mWifiManager.removeNetwork(tempConfig.networkId);
}
}
} else if (oldWiFiAlias == null || oldWiFiAlias.size() == 0) {
for (WiFiAlias wiFiAlias : newWiFiAlias) {
addWiFiNetwork(wiFiAlias);
}
} else {
List<WiFiAlias> removedWiFiAlias = new ArrayList<>(oldWiFiAlias);
List<WiFiAlias> addedWiFiAlias = new ArrayList<>();
List<WiFiAlias> tempWiFiAlias = new ArrayList<>();
for (WiFiAlias alias : newWiFiAlias) {
if (oldWiFiAlias.contains(alias)) {
//减少的
removedWiFiAlias.remove(alias);
tempWiFiAlias.add(alias);
} else {
//增加的
addedWiFiAlias.add(alias);
}
}
Log.e("comparedWiFiAlias", "removedWiFiAlias: " + removedWiFiAlias);
Log.e("comparedWiFiAlias", "addedWiFiAlias: " + addedWiFiAlias);
if (removedWiFiAlias.size() != 0) {
for (WiFiAlias alias : removedWiFiAlias) {
WifiConfiguration tempConfig = isExist(alias.getWifi_name());
if (tempConfig != null) {
mWifiManager.removeNetwork(tempConfig.networkId);
Log.e("comparedWiFiAlias", "removedWiFiAlias: " + alias.getWifi_name());
}
}
}
Log.e("comparedWiFiAlias", "tempWiFiAlias: " + tempWiFiAlias);
if (addedWiFiAlias.size() != 0) {
for (WiFiAlias alias : tempWiFiAlias) {
if (!wifiSaved(alias.getWifi_name())) {
addWiFiNetwork(alias);
}
}
for (WiFiAlias alias : addedWiFiAlias) {
addWiFiNetwork(alias);
}
}
}
mWifiManager.reconnect();
}
private static void addWiFiNetwork(WiFiAlias alias) {
int netId;
if (TextUtils.isEmpty(alias.getPassword())) {
netId = mWifiManager.addNetwork(getWifiConfig(alias.getWifi_name(), "", false));
} else {
netId = mWifiManager.addNetwork(getWifiConfig(alias.getWifi_name(), alias.getPassword(), true));
}
mWifiManager.enableNetwork(netId, true);
}
synchronized private static boolean wifiSaved(String ssid) {
// 获取已保存wifi配置链表
List<WifiConfiguration> configs = mWifiManager.getConfiguredNetworks();
boolean saved = false;
for (WifiConfiguration configuration : configs) {
if (ssid.equals(configuration.SSID)) {
saved = true;
}
}
return saved;
}
}