import { Log } from '@abner/log';
import wifiManager from '@ohos.wifiManager';
import { StringUtils } from '../StringUtils';
class wifiManagerUtil {
isWifiActive(): boolean {
try {
let isWifiActive = wifiManager.isWifiActive();
return isWifiActive
} catch (error) {
return false
}
}
getGateway(): string | null {
try {
let info = wifiManager.getIpInfo();
let gateway =
(info.gateway >>> 24) + "." + (info.gateway >> 16 & 0xFF) + "." + (info.gateway >> 8 & 0xFF) + "." +
(info.gateway & 0xFF);
return gateway;
} catch (error) {
console.error("failed:" + JSON.stringify(error));
return null
}
}
getIpAddress(): string | null {
try {
let info = wifiManager.getIpInfo();
let IpAddress =
(info.ipAddress >>> 24) + "." + (info.ipAddress >> 16 & 0xFF) + "." + (info.ipAddress >> 8 & 0xFF) + "." +
(info.ipAddress & 0xFF);
return IpAddress;
} catch (error) {
console.error("failed:" + JSON.stringify(error));
return null
}
}
async getConnectWiFiInfo() {
try {
let info = await wifiManager.getLinkedInfo();
return info;
} catch (error) {
console.error("getConnectWiFiInfo failed:" + JSON.stringify(error));
return null
}
}
/**
* 获取wifi列表
* @returns
*/
getScanList() {
try {
let scanInfoList = wifiManager.getScanInfoList();
console.info('scanInfoList:' + JSON.stringify(scanInfoList));
let len = scanInfoList.length;
console.log('wifi received scan info: ' + len);
if (len > 0) {
for (let i = 0; i < len; ++i) {
console.info('getScanList ssid: ' + scanInfoList[i].ssid);
console.info('getScanList bssid: ' + scanInfoList[i].bssid);
console.info('getScanList capabilities: ' + scanInfoList[i].capabilities);
console.info('getScanList securityType: ' + scanInfoList[i].securityType);
console.info('getScanList rssi: ' + scanInfoList[i].rssi);
console.info('getScanList band: ' + scanInfoList[i].band);
console.info('getScanList frequency: ' + scanInfoList[i].frequency);
console.info('getScanList channelWidth: ' + scanInfoList[i].channelWidth);
console.info('getScanList timestamp: ' + scanInfoList[i].timestamp);
}
scanInfoList = scanInfoList.filter((item: wifiManager.WifiScanInfo) => {
return !StringUtils.isNullOrEmpty(item.ssid)
})
return scanInfoList;
} else {
return [];
}
} catch (error) {
console.error('getScanList failed:' + JSON.stringify(error));
return [];
}
}
/**
* 连接网络
* @param wifiSsid
* @param psw
* @param securityType
*/
async connectNetwork(wifiSsid: string, psw: string, securityType: number): Promise<void> {
// securityType 加密类型默认:Pre-shared key (PSK)加密类型
let deviceConfig: wifiManager.WifiDeviceConfig = {
ssid: wifiSsid,
preSharedKey: psw,
// isHiddenSsid: false,
securityType: securityType
}
try {
//添加候选网络配置
let resultID: number = await wifiManager.addCandidateConfig(deviceConfig)
// 连接网络
wifiManager.connectToCandidateConfig(resultID);
// 连接成功之后跳转相机操作
} catch (err) {
Log.error(`addDeviceConfig fail err is ${JSON.stringify(err)}`)
}
}
}
export const WifiManagerUtil = new wifiManagerUtil()