Hi3516 openharmony标准系统L2 JS\eTS napi之wifi接口 原创 精华

yukoyu
发布于 2022-3-28 18:09
浏览
4收藏

Hi3516 openharmony标准系统L2 JS\eTS napi之wifi接口

1.接口的发现

我们查阅标准系统openharmony3.0的源码

路径:OpenHarmony/applications/standard/settings/entry/src/main/ets/default

可发现openharmony标准系统的设置系统应用里面的控制WiFi是调用napi接口实现的

import WifiNativeJs from '@ohos.wifi_native_js'

2.NAPI Wifi 接口使用

①.开启wifi接口
WifiNativeJs.enableWifi();
②.关闭wifi接口
WifiNativeJs.disableWifi();
③.连接wifi接口
let obj = {
    "ssid": "xxx_wifi_name",					//wifi名
    "bssid": "xx:xx:xx:xx:xx:50",				//wifibssid,注意这里要填写的2.4G wifi bssid,5G与2.4G的bssid是不一样的
    "preSharedKey": "xxx_wifi_password",		//wifi password
    "isHiddenSsid": false,
    "securityType": 3							//wifi类型 类型3的意思是 wpa/wpa2 
}
WifiNativeJs.connectToDevice(obj)
④.更多wifi接口等你们探索

因为本次教程这是简单的使用openharmony3.0连接wifi,我们只用到这几个,@ohos.wifi_native_js 里面还有很多的接口,我就不一一列出来了,你们自己去探索。

3.利用eTS开发wifiAPP

①.开发工具
DevEco Studio 3.0.0.800
②.通过路由器查看 wifi的 bssid

打开路由器管理页面查看

Hi3516 openharmony标准系统L2 JS\eTS napi之wifi接口-鸿蒙开发者社区

③.通过手机APP查看 wifi的 bssid

我这里使用的是万能WiFi钥匙查看 bssid

Hi3516 openharmony标准系统L2 JS\eTS napi之wifi接口-鸿蒙开发者社区

④.实现代码
import WifiNativeJs from '@ohos.wifi_native_js';

async function On_Wifi() {               //打开wifi接口
  var buf= WifiNativeJs.enableWifi();
  console.log("wifi test :on"+buf);
}
async function connect_Wifi() {          //连接wifi
  let obj = {
    "ssid": "PDCN",                      //wifi名
    "bssid": "20:76:93:4B:7B:2E",        //wifi bssid
    "preSharedKey": "1234567888",        //wifi password
    "isHiddenSsid": false,
    "securityType": 3                    //wifi 授权方式 类型3的意思是 wpa/wpa2
  }
  var buf = WifiNativeJs.connectToDevice(obj);
  console.log("wifi test :on"+buf);
}

async function Off_Wifi() {
  var buf= WifiNativeJs.disableWifi();  //关闭wifi
  console.log("wifi test :on"+buf);
}

@Entry
@Component
struct Wifi {
  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Text('WIFI 连接测试')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
      Button('打开wifi', { type: ButtonType.Capsule, stateEffect: true }).backgroundColor(0x317aff).width(250).height(100).margin(50)
        .onClick((event: ClickEvent) => {
          On_Wifi();
        })
      Button('连接wifi', { type: ButtonType.Capsule, stateEffect: true }).backgroundColor(0x317aff).width(250).height(100)
        .onClick((event: ClickEvent) => {
          connect_Wifi();
        })

      Button('关闭wifi', { type: ButtonType.Capsule, stateEffect: true }).backgroundColor(0x317aff).width(250).height(100).margin(50)
        .onClick((event: ClickEvent) => {
          Off_Wifi();
        })
    }
    .width('100%')
    .height('100%')
  }
}
⑤.安装测试

效果图

Hi3516 openharmony标准系统L2 JS\eTS napi之wifi接口-鸿蒙开发者社区

测试成功!

4.注意事项

①.导入 @ohos.wifi_native_js 包报错不用管

Hi3516 openharmony标准系统L2 JS\eTS napi之wifi接口-鸿蒙开发者社区

②. 2.4G与5G的wifi bssid,不一样的

一般5Gwifi的bssid 的减去2等于2.4Gwifi的bssid

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2022-3-28 20:45:22修改
11
收藏 4
回复
举报
5条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

拿板子现跟楼主跑一遍

回复
2022-3-29 10:44:38
解路
解路

把楼主的代码复制跑,没有任何反应,是因为板子使用的3.1系统吗

回复
2022-6-7 15:21:23
yukoyu
yukoyu 回复了 解路
把楼主的代码复制跑,没有任何反应,是因为板子使用的3.1系统吗

要同款板子哦,3.0或3.1都可以

回复
2022-6-7 23:26:29
解路
解路 回复了 yukoyu
要同款板子哦,3.0或3.1都可以

是hi3516DV300的板子,3.1的系统,但是开启连接返回的结果一直是flase

回复
2022-6-8 11:47:09
Neverland09
Neverland09

目前小型系统是不是不能在应用端操作WIFI?因为没有对应的jsi接口,如果要操作的话,只能自己实现对应的JSI接口吗?

回复
2022-7-21 15:30:20
回复
    相关推荐