【鸿蒙实战开发】基于wifiManager的网络扫描及IP地址获取

101 篇文章 1 订阅
101 篇文章 0 订阅

场景描述

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

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

方案描述

场景一:

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

效果图

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

方案

当前暂不支持三方直接调用扫描能力,提供 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的地址信息

效果图

核心代码

返回数据为格式需要调用位移符转换为”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");

});

鸿蒙全栈开发全新学习指南

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以要有一份实用的鸿蒙(HarmonyOS NEXT)学习路线与学习文档用来跟着学习是非常有必要的。

针对一些列因素,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线,包含了鸿蒙开发必掌握的核心知识要点,内容有(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、WebGL、元服务、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony驱动开发、系统定制移植等等)鸿蒙(HarmonyOS NEXT)技术知识点。

本路线共分为四个阶段

第一阶段:鸿蒙初中级开发必备技能

在这里插入图片描述

第二阶段:鸿蒙南北双向高工技能基础:gitee.com/MNxiaona/733GH

第三阶段:应用开发中高级就业技术

第四阶段:全网首发-工业级南向设备开发就业技术:gitee.com/MNxiaona/733GH

《鸿蒙 (Harmony OS)开发学习手册》(共计892页)

如何快速入门?

1.基本概念
2.构建第一个ArkTS应用
3.……

开发基础知识:gitee.com/MNxiaona/733GH

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……

基于ArkTS 开发

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……

鸿蒙开发面试真题(含参考答案):gitee.com/MNxiaona/733GH

鸿蒙入门教学视频:

美团APP实战开发教学:gitee.com/MNxiaona/733GH

写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新学习资源,请移步前往小编:gitee.com/MNxiaona/733GH

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 中,您可以使用以下方法来获取有线网络的 MAC 地址和 IP 地址: 1. 获取 MAC 地址: 使用 `WifiManager` 类的 `getConnectionInfo()` 方法可以获取到当前连接的 Wi-Fi 网络的信息,其中包括 MAC 地址。首先,您需要在 `AndroidManifest.xml` 文件中添加 `android.permission.ACCESS_WIFI_STATE` 权限,然后在您的代码中获取 `WifiManager` 对象,并调用 `getConnectionInfo()` 方法。 例如: ``` WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); String macAddress = wifiInfo.getMacAddress(); ``` 2. 获取 IP 地址: 使用 `NetworkInterface` 类的 `getNetworkInterfaces()` 方法可以获取到当前设备所有网络接口的信息,然后遍历每个网络接口,调用 `getInetAddresses()` 方法获取到所有的 IP 地址。需要注意的是,这种方法可能获取到的是内网 IP 地址或者虚拟 IP 地址,如果要获取公网 IP 地址,可以通过第三方 API 来获取。 例如: ``` Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); while (interfaces.hasMoreElements()) { NetworkInterface networkInterface = interfaces.nextElement(); Enumeration<InetAddress> addresses = networkInterface.getInetAddresses(); while (addresses.hasMoreElements()) { InetAddress inetAddress = addresses.nextElement(); if (!inetAddress.isLinkLocalAddress()) { String ip = inetAddress.getHostAddress(); // Do something with the IP address. } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值