--- /dev/null
+package com.enqualcomm.support.utils;
+
+
+import android.content.Context;
+import android.net.wifi.ScanResult;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.text.TextUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class WifiSupport {
+
+ private static final String TAG = "WifiSupport";
+
+ public enum WifiCipherType {
+ WIFICIPHER_WEP, WIFICIPHER_WPA, WIFICIPHER_NOPASS, WIFICIPHER_INVALID
+ }
+
+ public WifiSupport() {
+ }
+
+ public static List<ScanResult> getWifiScanResult(Context context) {
+ return ((WifiManager) context.getSystemService(Context.WIFI_SERVICE)).getScanResults();
+ }
+
+ public static boolean isWifiEnable(Context context) {
+ return ((WifiManager) context.getSystemService(Context.WIFI_SERVICE)).isWifiEnabled();
+ }
+
+ public static WifiInfo getConnectedWifiInfo(Context context) {
+ return ((WifiManager) context.getSystemService(Context.WIFI_SERVICE)).getConnectionInfo();
+ }
+
+ public static List getConfigurations(Context context) {
+ return ((WifiManager) context.getSystemService(Context.WIFI_SERVICE)).getConfiguredNetworks();
+ }
+
+
+ public static WifiConfiguration createWifiConfig(String SSID, String password, WifiCipherType type) {
+
+ WifiConfiguration config = new WifiConfiguration();
+ config.allowedAuthAlgorithms.clear();
+ config.allowedGroupCiphers.clear();
+ config.allowedKeyManagement.clear();
+ config.allowedPairwiseCiphers.clear();
+ config.allowedProtocols.clear();
+ config.SSID = "\"" + SSID + "\"";
+
+ if (type == WifiCipherType.WIFICIPHER_NOPASS) {
+// config.wepKeys[0] = ""; //注意这里
+ config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+// config.wepTxKeyIndex = 0;
+ }
+
+ if (type == WifiCipherType.WIFICIPHER_WEP) {
+ config.preSharedKey = "\"" + password + "\"";
+ config.hiddenSSID = true;
+ config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
+ config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
+ config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
+ config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
+ config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
+ config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+ config.wepTxKeyIndex = 0;
+ }
+
+ if (type == WifiCipherType.WIFICIPHER_WPA) {
+ config.preSharedKey = "\"" + password + "\"";
+ config.hiddenSSID = true;
+ config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
+ config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
+ config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
+ config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
+ config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
+ config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
+ config.status = WifiConfiguration.Status.ENABLED;
+
+ }
+
+ return config;
+
+ }
+
+ /**
+ * 接入某个wifi热点
+ */
+ public static boolean addNetWork(WifiConfiguration config, Context context) {
+
+ WifiManager wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+
+ WifiInfo wifiinfo = wifimanager.getConnectionInfo();
+
+ if (null != wifiinfo) {
+ wifimanager.disableNetwork(wifiinfo.getNetworkId());
+ }
+
+ boolean result = false;
+
+ if (config.networkId > 0) {
+ result = wifimanager.enableNetwork(config.networkId, true);
+ wifimanager.updateNetwork(config);
+ } else {
+
+ int i = wifimanager.addNetwork(config);
+ result = false;
+ if (i > 0) {
+ wifimanager.saveConfiguration();
+ return wifimanager.enableNetwork(i, true);
+ }
+ }
+
+ return result;
+
+ }
+
+ /**
+ * 判断wifi热点支持的加密方式
+ */
+ public static WifiCipherType getWifiCipher(String s) {
+ if (s.isEmpty()) {
+ return WifiCipherType.WIFICIPHER_INVALID;
+ } else if (s.contains("WEP")) {
+ return WifiCipherType.WIFICIPHER_WEP;
+ } else if (s.contains("WPA") || s.contains("WPA2") || s.contains("WPS")) {
+ return WifiCipherType.WIFICIPHER_WPA;
+ } else {
+ return WifiCipherType.WIFICIPHER_NOPASS;
+ }
+ }
+
+ //查看以前是否也配置过这个网络
+ public static WifiConfiguration isExsits(String SSID, Context context) {
+ WifiManager wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+ List<WifiConfiguration> existingConfigs = wifimanager.getConfiguredNetworks();
+ for (WifiConfiguration existingConfig : existingConfigs) {
+ if (existingConfig.SSID.equals("\"" + SSID + "\"")) {
+ return existingConfig;
+ }
+ }
+ return null;
+ }
+
+ // 打开WIFI
+ public static void openWifi(Context context) {
+ WifiManager wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+ if (!wifimanager.isWifiEnabled()) {
+ wifimanager.setWifiEnabled(true);
+ }
+ }
+
+ // 关闭WIFI
+ public static void closeWifi(Context context) {
+ WifiManager wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+ if (wifimanager.isWifiEnabled()) {
+ wifimanager.setWifiEnabled(false);
+ }
+ }
+
+ public static boolean isOpenWifi(Context context) {
+ WifiManager wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+ boolean b = wifimanager.isWifiEnabled();
+ return b;
+ }
+
+ /**
+ * 将idAddress转化成string类型的Id字符串
+ *
+ * @param idString
+ * @return
+ */
+ public static String getStringId(int idString) {
+ StringBuffer sb = new StringBuffer();
+ int b = (idString >> 0) & 0xff;
+ sb.append(b + ".");
+ b = (idString >> 8) & 0xff;
+ sb.append(b + ".");
+ b = (idString >> 16) & 0xff;
+ sb.append(b + ".");
+ b = (idString >> 24) & 0xff;
+ sb.append(b);
+ return sb.toString();
+ }
+
+ /**
+ * 设置安全性
+ *
+ * @param capabilities
+ * @return
+ */
+ public static String getCapabilitiesString(String capabilities) {
+ if (capabilities.contains("WEP")) {
+ return "WEP";
+ } else if (capabilities.contains("WPA") || capabilities.contains("WPA2") || capabilities.contains("WPS")) {
+ return "WPA/WPA2";
+ } else {
+ return "OPEN";
+ }
+ }
+
+ public static boolean getIsWifiEnabled(Context context) {
+ WifiManager wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+ return wifimanager.isWifiEnabled();
+ }
+
+ /**
+ * 去除同名WIFI
+ *
+ * @param oldSr 需要去除同名的列表
+ * @return 返回不包含同命的列表
+ */
+ public static List<ScanResult> noSameName(List<ScanResult> oldSr) {
+ List<ScanResult> newSr = new ArrayList<ScanResult>();
+ for (ScanResult result : oldSr) {
+ if (!TextUtils.isEmpty(result.SSID) && !containName(newSr, result.SSID))
+ newSr.add(result);
+ }
+ return newSr;
+ }
+
+ /**
+ * 判断一个扫描结果中,是否包含了某个名称的WIFI
+ *
+ * @param sr 扫描结果
+ * @param name 要查询的名称
+ * @return 返回true表示包含了该名称的WIFI,返回false表示不包含
+ */
+ public static boolean containName(List<ScanResult> sr, String name) {
+ for (ScanResult result : sr) {
+ if (!TextUtils.isEmpty(result.SSID) && result.SSID.equals(name))
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * 返回level 等级
+ */
+ public static int getLevel(int level) {
+ if (Math.abs(level) < 50) {
+ return 1;
+ } else if (Math.abs(level) < 75) {
+ return 2;
+ } else if (Math.abs(level) < 90) {
+ return 3;
+ } else {
+ return 4;
+ }
+ }
+
+}
\ No newline at end of file
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
+import android.net.wifi.WifiConfiguration;
import android.os.Build;
import android.os.Environment;
import android.os.Handler;
import com.enqualcomm.support.utils.ProfileManager;
import com.enqualcomm.support.utils.TimeUtil;
import com.enqualcomm.support.utils.Util;
+import com.enqualcomm.support.utils.WifiSupport;
import com.enqualcomm.support.utils.regexUtil;
import java.io.ByteArrayOutputStream;
bldstart,//远程测血压
hrtstart,//远程测量心率
BOOTOFF,//定时关机
+ WIFISET,//wifi密码设置
oxygen,//血氧上传
blood,//血压上传
heart,//心率上传
cmdMap.put(CMD_TYPE.SHAKE, "SHAKE");
cmdMap.put(CMD_TYPE.RECORD, "RECORD");
cmdMap.put(CMD_TYPE.INFO, "INFO");
+ cmdMap.put(CMD_TYPE.WIFISET, "WIFISET");
cmdMap.put(CMD_TYPE.BLE, "BLE");
cmdMap.put(CMD_TYPE.PING, "PING");
cmdMap.put(CMD_TYPE.rcapture, "rcapture");
handleCmd(key, cmd, data);
}
}
-
}
}
return true;
handleBOOTOFF(cmd, data, mRuntime);
mConnection.send(genFZDCMD(cmdMap.get(CMD_TYPE.BOOTOFF)));
break;
+ case WIFISET:
+ ICLogger.d("收到WIFI密码设置指令.");
+ mConnection.send(genFZDCMD(cmdMap.get(CMD_TYPE.WIFISET)));
+ handleWIFISET(cmd, data, mRuntime);
+ break;
}
return ret;
}
+ /**
+ * 设置wifi账号和密码
+ *
+ * @param cmd
+ * @param data
+ * @param mRuntime
+ */
+ private void handleWIFISET(String cmd, String data, Runtime mRuntime) {
+ ICLogger.d("WIFISET == > " + data);
+ //解析数据
+ String[] split = data.split(CMDSPLIT);
+ ICLogger.d("length == > " + split.length);
+ Context context = mRuntime.getContextProxy()
+ .context;
+ //账号和密码
+ if (split.length == 2) {
+ String ssid = Util.decodeUnicode2Utf8(split[0]);
+ String password = split[1];
+ ICLogger.d("ssid = > " + ssid);
+ ICLogger.d("password = > " + password);
+ WifiConfiguration tempConfig = WifiSupport.isExsits(ssid, context);
+ if (tempConfig == null) {
+ WifiConfiguration wifiConfigurationWep = WifiSupport.createWifiConfig(
+ ssid, password, WifiSupport.WifiCipherType.WIFICIPHER_WEP);
+ WifiConfiguration wifiConfigurationWpa = WifiSupport.createWifiConfig(
+ ssid, password, WifiSupport.WifiCipherType.WIFICIPHER_WPA);
+ boolean result = WifiSupport.addNetWork(wifiConfigurationWep, context);
+ ICLogger.d("result == > " + result);
+ boolean wpaResult = WifiSupport.addNetWork(wifiConfigurationWpa, context);
+ ICLogger.d("wpaResult == > " + wpaResult);
+ } else {
+ boolean b = WifiSupport.addNetWork(tempConfig, context);
+ ICLogger.d("old config add result..." + b);
+ }
+ } else if (split.length == 1) {
+ //只有账号
+ String ssid = Util.decodeUnicode2Utf8(split[0]);
+ ICLogger.d("ssid == > " + ssid);
+ WifiConfiguration wifiConfiguration = WifiSupport.createWifiConfig(
+ ssid, "", WifiSupport.WifiCipherType.WIFICIPHER_NOPASS);
+ boolean wpaResult = WifiSupport.addNetWork(wifiConfiguration, context);
+ ICLogger.d("no password == > " + wpaResult);
+ }
+ }
+
private static final String BOOT_OFF_ACTION_OFF = "0";
private static final String BOOT_OFF_ACTION_ON = "1";