WIFI¶
1. 简介¶
2. HDC相关指令¶
- hdc指令可以用于查询WiFi的信息以及连接状态
hdc shell ifconfig
3. 标准API使用方法¶
备注
本模块提供企业设备WiFi管理能力,包括查询WiFi开启状态等。首批接口从API version 10开始支持,接口仅可在Stage模型下使用。
WLAN标准接口
@ohos.wifiManager (WLAN)
API使用说明
使用WIFI相关API开发时候,需要先了解熟悉第一个open Harmony工程的创建,相关文档 Hello World应用以及部署
- 在使用一个API时,需要注意以下几点:
API权限说明
API的参数与返回值
API调用错误的时候,参考API错误码和通用错误码
API示例的正确使用
如下图所示,即为标准API文档
官方标准开发文档
4. 社区Demo¶
简介
为了帮助开发者更快速的使用板子开发和学习,我们在gitee上提供了一个WiFi相关的使用示例,每一个项目都是独立的DevEco Studio工程,开发者可以将工程导入到DevEco Studio中即可,通过浏览代码、编译工程、安装和运行应用示例来了解应用示例中涉及API的使用方法。
小技巧
在导入社区Demo工程的时候,需要开发者需要注意本地的开发环境是否与项目的一致,即本地SDK是否与项目SDK一致。
导入模块
在使用WIFI标准API的时候,最重要的一步是导入WIFI的模块,才能使用WIFI相应的API接口。通常模块导入是在文件头导入 导入模块如下:
import wifiManager from ‘@ohos.wifiManager’
API 介绍
社区Demo的实现引用以下API,实现如何打开WIFI、WIFI扫描,以及WIFI的连接的基本实现。
备注
以下介绍均以为简单介绍API的系统能力以及对应函数 请结合 giteeWIFI示例 和 WIFI官方标准API开发文档 去熟悉开发
wifiManager.enableWifi(使能WLAN)
isWifiActive(): boolean
需要权限: ohos.permission.SET_WIFI_INFO 和 ohos.permission.MANAGE_WIFI_CONNECTION 仅系统应用可用。
wifiManager.disableWifi(去使能WLAN)
isWifiActive(): boolean
需要权限: ohos.permission.SET_WIFI_INFO 和 ohos.permission.MANAGE_WIFI_CONNECTION 仅系统应用可用。
wifiManager.startScan(启动WLAN扫描)
startScan(): void
wifiManager.getScanInfoList(获取扫描结果)
getScanInfoList(): Array<WifiScanInfo>
需要权限: ohos.permission.GET_WIFI_INFO
wifiManager.isWifiActive(查询WLAN是否已使能)
isWifiActive(): boolean
需要权限: ohos.permission.GET_WIFI_INFO
wifiManager.connectToDevice(连接指定网络)
connectToDevice(config: WifiDeviceConfig): void
需要权限: ohos.permission.SET_WIFI_INFO 和 ohos.permission.SET_WIFI_CONFIG 和 ohos.permission.MANAGE_WIFI_CONNECTION,仅系统应用可用。
Demo主要实现源码
- wifi.ets
1 import wifiManager from '@ohos.wifiManager'; 2 import { MyDivider } from './MyDivider'; 3 4 @Entry 5 @Component 6 struct Index { 7 @State message: string = 'WiFi示例' 8 private TAG: string = 'ShiMetaWifi' 9 @State wifiStatus: string = 'null' 10 @State wifiInfoList: string = '' 11 @State passWord: string = '' 12 @State account: string = '' 13 14 build() { 15 Row() { 16 Column() { 17 Text(this.message) 18 .fontSize(50) 19 .fontWeight(FontWeight.Bold) 20 21 22 Row() { 23 Text('WIFI开关') 24 .fontSize(50) 25 .fontWeight(FontWeight.Bold) 26 Toggle({ type: ToggleType.Switch, isOn: false }) 27 .width(50) 28 .height(50) 29 .selectedColor('#007DFF') 30 .switchPointColor('#FFFFFF') 31 .onChange((isOn: boolean) => { 32 if (isOn) { 33 try { 34 wifiManager.enableWifi(); 35 } catch (error) { 36 console.error("failed:" + JSON.stringify(error)); 37 } 38 } else { 39 try { 40 wifiManager.disableWifi(); 41 } catch (error) { 42 console.error("failed:" + JSON.stringify(error)); 43 } 44 } 45 }) 46 } 47 .width('100%') 48 .justifyContent(FlexAlign.SpaceAround) 49 .padding(10) 50 MyDivider(); 51 52 53 Row() { 54 Button('点击查询WIFI是否打开') 55 .onClick(() => { 56 let isWifiActive = wifiManager.isWifiActive(); 57 if (isWifiActive) { 58 this.wifiStatus = 'On' 59 } else { 60 this.wifiStatus = 'Off' 61 } 62 console.log(this.TAG, 'isWifiActive' + isWifiActive); 63 }) 64 Text(this.wifiStatus) 65 .fontSize(50) 66 .fontWeight(FontWeight.Bold) 67 } 68 .width('100%') 69 .justifyContent(FlexAlign.SpaceAround) 70 .padding(10) 71 MyDivider(); 72 73 Row() { 74 Button('点击开始扫描') 75 .onClick(() => { 76 wifiManager.startScan() 77 }) 78 }.padding(10) 79 80 Row() { 81 Button('点击获取扫面结果') 82 .onClick(() => { 83 let scanInfoList = wifiManager.getScanInfoList(); 84 this.wifiInfoList = JSON.stringify(scanInfoList) 85 console.info("scanInfoList:" + JSON.stringify(scanInfoList)); 86 }) 87 }.padding(10) 88 89 Row() { 90 Button('点击清空') 91 .onClick(() => { 92 this.wifiInfoList = '' 93 }) 94 }.padding(10) 95 96 Text(this.wifiInfoList) 97 Column() { 98 Row() { 99 TextInput({ placeholder: '输入账号' }) 100 .onChange((value: string) => { 101 this.account = value; 102 console.log(this.TAG, 'account :' + this.account) 103 }) 104 }.padding(10) 105 106 Row() { 107 TextInput({ placeholder: '输入密码' }) 108 .onChange((value: string) => { 109 this.passWord = value; 110 console.log(this.TAG, 'passWord :' + this.passWord) 111 }) 112 }.padding(10) 113 114 Button('连接WiFi') 115 .onClick(() => { 116 try { 117 let config: wifiManager.WifiDeviceConfig = { 118 ssid: this.account, 119 preSharedKey: this.passWord, 120 securityType: 3 121 } 122 wifiManager.connectToDevice(config); 123 } catch (error) { 124 console.error("failed:" + JSON.stringify(error)); 125 } 126 }) 127 128 }.width(500) 129 } 130 .width('100%') 131 } 132 .height('100%') 133 } 134 }
5. 代码编译¶
小技巧
代码编译详细流程可见,Hello World应用以及部署 中的第二部分(构建第一个页面部分内容)


