基于wifiManager的网络扫描及IP地址获取

HarmonyOS官方账号
发布于 2024-10-8 09:42
浏览
0收藏

​场景描述

场景一:查看附近可连接wifi网络的信号强度(rssi)、热点能力、服务集标识(ssid)等信息,开发者可自定义策略选择网络。

场景二:通过当前连接wifi的IP地址判断用户所属有关位置信息。

方案描述

场景一:

查看附近可连接wifi网络的信号强度(rssi)、热点能力、服务集标识(ssid)等信息,开发者可自定义策略选择网络。

效果图

基于wifiManager的网络扫描及IP地址获取-鸿蒙开发者社区

日志中打印结果显示可参考如图。

方案

当前暂不支持三方直接调用扫描能力,提供​wifimanager.getScanInfoList​方法获取到扫描结果。

核心代码

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("ssid: " + scanInfoList[i].ssid); 
      console.info("bssid: " + scanInfoList[i].bssid); 
      console.info("capabilities: " + scanInfoList[i].capabilities); 
      console.info("securityType: " + scanInfoList[i].securityType); 
      console.info("rssi: " + scanInfoList[i].rssi); 
      console.info("band: " + scanInfoList[i].band); 
      console.info("frequency: " + scanInfoList[i].frequency); 
      console.info("channelWidth: " + scanInfoList[i].channelWidth); 
      console.info("timestamp: " + scanInfoList[i].timestamp); 
    } 
  } 
}catch(error){ 
  console.error("failed:" + JSON.stringify(error)); 
}

场景二:

通过当前连接wifi的IP地址判断用户所属有关位置信息。

方案

建立socket通信连接绑定本设备ip地址 / 获取本地WiFi的IP地址及特征,可参考​@ohos.wifimanager.getLinkedInfo​方法获取当前已连接wifi的地址信息。

效果图

基于wifiManager的网络扫描及IP地址获取-鸿蒙开发者社区

核心代码

返回数据为格式需要调用位移符转换为”192.168.0.1“常见IP地址模式:

//返回参数格式转换 
resolveIP(ip: number): string { 
  if (ip < 0 || ip > 0xFFFFFFFF) { 
    return ""; 
  } 
  return (ip >>> 24) + '.' + (ip >> 16 & 0xFF) + '.' + (ip >> 8 & 0xFF) + '.' + (ip & 0xFF); 
} 
 
//获取当前连接wifi的IP地址 
wifiManager.getLinkedInfo().then(data => { 
  console.info("get wifi linked info: " + JSON.stringify(this.resolveIP(data.ipAddress))); 
 
}).catch((error:number) => { 
  console.info("get linked info error"); 
});

分类
收藏
回复
举报
回复
    相关推荐