From e60d971a86e980c170d71974400617ad98882129 Mon Sep 17 00:00:00 2001 From: guojin26 Date: Fri, 28 Jan 2022 16:41:23 +0800 Subject: [PATCH 1/4] add eTSWlan Signed-off-by: guojin26 --- README_zh.md | 5 +- device/eTSWlan/README_zh.md | 21 +++ device/eTSWlan/build.gradle | 34 +++++ device/eTSWlan/entry/build.gradle | 21 +++ device/eTSWlan/entry/src/main/config.json | 68 +++++++++ .../entry/src/main/ets/MainAbility/app.ets | 23 +++ .../MainAbility/component/availableWiFi.ets | 78 ++++++++++ .../ets/MainAbility/component/infoView.ets | 43 ++++++ .../ets/MainAbility/component/pswDialog.ets | 70 +++++++++ .../ets/MainAbility/component/titleBar.ets | 42 ++++++ .../ets/MainAbility/component/wifiView.ets | 59 ++++++++ .../main/ets/MainAbility/model/wifiModel.ets | 137 +++++++++++++++++ .../src/main/ets/MainAbility/pages/about.ets | 53 +++++++ .../src/main/ets/MainAbility/pages/index.ets | 141 ++++++++++++++++++ .../main/resources/base/element/string.json | 100 +++++++++++++ .../src/main/resources/base/media/about.png | Bin 0 -> 7007 bytes .../src/main/resources/base/media/ic_back.png | Bin 0 -> 3355 bytes .../src/main/resources/base/media/icon.png | Bin 0 -> 6790 bytes .../src/main/resources/base/media/lock.png | Bin 0 -> 3216 bytes .../src/main/resources/base/media/wifi.png | Bin 0 -> 7542 bytes .../src/main/resources/en/element/string.json | 100 +++++++++++++ .../src/main/resources/zh/element/string.json | 100 +++++++++++++ device/eTSWlan/screenshots/device/about.png | Bin 0 -> 61547 bytes device/eTSWlan/screenshots/device/main.png | Bin 0 -> 41327 bytes .../eTSWlan/screenshots/device/password.png | Bin 0 -> 39665 bytes device/eTSWlan/settings.gradle | 1 + 26 files changed, 1095 insertions(+), 1 deletion(-) create mode 100644 device/eTSWlan/README_zh.md create mode 100644 device/eTSWlan/build.gradle create mode 100644 device/eTSWlan/entry/build.gradle create mode 100644 device/eTSWlan/entry/src/main/config.json create mode 100644 device/eTSWlan/entry/src/main/ets/MainAbility/app.ets create mode 100644 device/eTSWlan/entry/src/main/ets/MainAbility/component/availableWiFi.ets create mode 100644 device/eTSWlan/entry/src/main/ets/MainAbility/component/infoView.ets create mode 100644 device/eTSWlan/entry/src/main/ets/MainAbility/component/pswDialog.ets create mode 100644 device/eTSWlan/entry/src/main/ets/MainAbility/component/titleBar.ets create mode 100644 device/eTSWlan/entry/src/main/ets/MainAbility/component/wifiView.ets create mode 100644 device/eTSWlan/entry/src/main/ets/MainAbility/model/wifiModel.ets create mode 100644 device/eTSWlan/entry/src/main/ets/MainAbility/pages/about.ets create mode 100644 device/eTSWlan/entry/src/main/ets/MainAbility/pages/index.ets create mode 100644 device/eTSWlan/entry/src/main/resources/base/element/string.json create mode 100644 device/eTSWlan/entry/src/main/resources/base/media/about.png create mode 100644 device/eTSWlan/entry/src/main/resources/base/media/ic_back.png create mode 100644 device/eTSWlan/entry/src/main/resources/base/media/icon.png create mode 100644 device/eTSWlan/entry/src/main/resources/base/media/lock.png create mode 100644 device/eTSWlan/entry/src/main/resources/base/media/wifi.png create mode 100644 device/eTSWlan/entry/src/main/resources/en/element/string.json create mode 100644 device/eTSWlan/entry/src/main/resources/zh/element/string.json create mode 100644 device/eTSWlan/screenshots/device/about.png create mode 100644 device/eTSWlan/screenshots/device/main.png create mode 100644 device/eTSWlan/screenshots/device/password.png create mode 100644 device/eTSWlan/settings.gradle diff --git a/README_zh.md b/README_zh.md index 4e6e20560f..f5b378bfcc 100755 --- a/README_zh.md +++ b/README_zh.md @@ -27,12 +27,14 @@ - [`Flashlight:`手电筒(JS)](https://gitee.com/openharmony/app_samples/tree/master/common/Flashlight) - [`JsHelloWorld:`你好世界(JS)](https://gitee.com/openharmony/app_samples/tree/master/common/JsHelloWorld) - [`eTSUtilBase64Codec:`Base64编解码(eTS)](https://gitee.com/openharmony/app_samples/tree/master/common/eTSUtilBase64Codec) - - data - [`eTSFileIo:`文件管理(eTS)](https://gitee.com/openharmony/app_samples/tree/master/data/eTSFileIo) - [`eTSKvStore:`分布式数据库(eTS)](https://gitee.com/openharmony/app_samples/tree/master/data/eTSKvStore) - [`eTSLiteStorage:`轻量级存储(eTS)](https://gitee.com/openharmony/app_samples/tree/master/data/eTSLiteStorage) - [`eTSRdb:`关系型数据库(eTS)](https://gitee.com/openharmony/app_samples/tree/master/data/eTSRdb) +- device + - [`eTSDeviceManager:`设备管理(eTS)](https://gitee.com/openharmony/app_samples/tree/master/device/eTSDeviceManager) + - [`eTSWlan:`WLAN(eTS)](https://gitee.com/openharmony/app_samples/tree/master/device/eTSWlan) - media - [`JsAudioPlayer:`音频播放和管理(JS)](https://gitee.com/openharmony/app_samples/tree/master/media/JsAudioPlayer) - [`JsVideo:`视频播放(JS)](https://gitee.com/openharmony/app_samples/tree/master/media/JsVideo) @@ -85,6 +87,7 @@ - Util - [`eTSUtilScope:`范围判断(eTS)](https://gitee.com/openharmony/app_samples/tree/master/Util/eTSUtilScope) - [`eTSUtilLruBuffer:`缓冲区(eTS)](https://gitee.com/openharmony/app_samples/tree/master/Util/eTSUtilLruBuffer) + - [`eTSUtilRationalNumber:`有理数(eTS)](https://gitee.com/openharmony/app_samples/tree/master/Util/eTSUtilRationalNumber) ## 使用说明 diff --git a/device/eTSWlan/README_zh.md b/device/eTSWlan/README_zh.md new file mode 100644 index 0000000000..5327f43c7d --- /dev/null +++ b/device/eTSWlan/README_zh.md @@ -0,0 +1,21 @@ +# WLAN + + + +### 简介 + +本示例展示了在eTS中WLAN的基本使用,包括禁用和启用WLAN、WLAN扫描和获取扫描结果、WLAN状态监听、WiFi连接状态监听、获取IP信息、获取国家码、判断设备是否支持WLAN相关特性。 + +### 使用说明 + +1、启动应用后会判断WLAN是否激活,如果是激活状态,会扫描并展示可用WiFi列表,同时获取已连接WiFi信息并展示。 + +2、点击界面的Switch开关可以禁用和激活WLAN,界面会监听WLAN状态扫描可用WiFi列表,也会监听WiFi连接状态展示已连接WiFi。 + +3、点击可用WLAN列表中的WLAN信息,可以连接WiFi,如果是加密类型,会弹窗输入密码后连接。 + +4、点击首页右上角的**关于**图标,进入关于界面,展示获取的IP信息、国家码和支持WLAN相关特性信息。 + +### 约束与限制 + +1、本示例仅支持标准系统上运行。 diff --git a/device/eTSWlan/build.gradle b/device/eTSWlan/build.gradle new file mode 100644 index 0000000000..40d7a3d7c8 --- /dev/null +++ b/device/eTSWlan/build.gradle @@ -0,0 +1,34 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +apply plugin: 'com.huawei.ohos.app' + +// For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section1112183053510 +ohos { + compileSdkVersion 8 + supportSystem "standard" +} + +buildscript { + repositories { + maven { + url 'https://repo.huaweicloud.com/repository/maven/' + } + maven { + url 'https://developer.huawei.com/repo/' + } + } + dependencies { + classpath 'com.huawei.ohos:hap:3.0.5.2' + classpath 'com.huawei.ohos:decctest:1.2.7.2' + } +} + +allprojects { + repositories { + maven { + url 'https://repo.huaweicloud.com/repository/maven/' + } + maven { + url 'https://developer.huawei.com/repo/' + } + } +} diff --git a/device/eTSWlan/entry/build.gradle b/device/eTSWlan/entry/build.gradle new file mode 100644 index 0000000000..30b7ce4d32 --- /dev/null +++ b/device/eTSWlan/entry/build.gradle @@ -0,0 +1,21 @@ +apply plugin: 'com.huawei.ohos.hap' +// For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section1112183053510 +ohos { + compileSdkVersion 8 + defaultConfig { + compatibleSdkVersion 7 + } + buildTypes { + release { + proguardOpt { + proguardEnabled false + rulesFiles 'proguard-rules.pro' + } + } + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) + testImplementation 'junit:junit:4.13.1' +} diff --git a/device/eTSWlan/entry/src/main/config.json b/device/eTSWlan/entry/src/main/config.json new file mode 100644 index 0000000000..852440dd10 --- /dev/null +++ b/device/eTSWlan/entry/src/main/config.json @@ -0,0 +1,68 @@ +{ + "app": { + "bundleName": "ohos.samples.etswlan", + "vendor": "samples", + "version": { + "code": 1000000, + "name": "1.0.0" + } + }, + "deviceConfig": {}, + "module": { + "package": "ohos.samples.etswlan", + "name": ".MyApplication", + "mainAbility": ".MainAbility", + "srcPath": "", + "deviceType": [ + "phone" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry", + "installationFree": false + }, + "abilities": [ + { + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "orientation": "unspecified", + "visible": true, + "srcPath": "MainAbility", + "name": ".MainAbility", + "srcLanguage": "ets", + "icon": "$media:icon", + "description": "$string:description_mainability", + "formsEnabled": false, + "label": "$string:entry_MainAbility", + "type": "page", + "launchType": "standard" + } + ], + "js": [ + { + "mode": { + "syntax": "ets", + "type": "pageAbility" + }, + "pages": [ + "pages/index", + "pages/about" + ], + "name": ".MainAbility", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + } + ] + } +} \ No newline at end of file diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/app.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/app.ets new file mode 100644 index 0000000000..bf28e58b36 --- /dev/null +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/app.ets @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export default { + onCreate() { + console.info('Application onCreate') + }, + onDestroy() { + console.info('Application onDestroy') + }, +} \ No newline at end of file diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/component/availableWiFi.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/component/availableWiFi.ets new file mode 100644 index 0000000000..584bb2e2fd --- /dev/null +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/component/availableWiFi.ets @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import prompt from '@system.prompt' +import {WiFiModel} from '../model/wifiModel' +import {WiFiView} from '../component/wifiView' +import {PasswordDialog} from '../component/pswDialog' + +const TAG = '[AvailableWiFi]' +let self = null + +@Component +export struct AvailableWiFi { + private wifiModel = new WiFiModel() + @State wifiList: Array = [] + private linkedInfo: any = null + private selectIndex: number = -1 + private pswDialogController: CustomDialogController = new CustomDialogController({ + builder: PasswordDialog({ scanInfo: this.wifiList[this.selectIndex], action: this.onAccept }), + autoCancel: true + }) + + onAccept(scanInfo, psw) { + console.info(`${TAG} connect wifi`) + self.wifiModel.connectNetwork(scanInfo, psw) + } + + aboutToAppear() { + self = this + } + + build() { + Column() { + Row(){ + Text($r('app.string.available_wlan')) + .fontSize(22) + .layoutWeight(1) + } + .width('95%') + List() { + ForEach(this.wifiList, (item, index) => { + ListItem() { + WiFiView({ wifi: item }) + } + .onClick(() => { + console.info(TAG + 'connect wifi') + this.selectIndex = index + if (this.linkedInfo !== null && item.ssid === this.linkedInfo.ssid) { + prompt.showToast({ message: 'this wifi is connected' }) + return + } + if(item.securityType === 0 || item.securityType === 1) { + this.wifiModel.connectNetwork(item,'') + return + } + this.pswDialogController.open() + }) + }, item => JSON.stringify(item)) + } + .layoutWeight(1) + .divider({ strokeWidth: 1, color: Color.Gray, startMargin: 10, endMargin: 10 }) + .margin(10) + } + .margin({top:15}) + } +} \ No newline at end of file diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/component/infoView.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/component/infoView.ets new file mode 100644 index 0000000000..d2ddb37e3b --- /dev/null +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/component/infoView.ets @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Component +export struct InfoView { + private infoList: Array = [] + + build() { + Column() { + ForEach(this.infoList, (item, index) => { + Column() { + Text(item.key) + .fontColor(Color.Black) + .fontSize(20) + .width('100%') + Text(item.value) + .fontColor(Color.Black) + .fontSize(20) + .width('100%') + .margin({ top: 5, bottom: 5 }) + if (index < this.infoList.length - 1) { + Divider().color(Color.Grey) + } + } + .padding(5) + }, item => JSON.stringify(item)) + } + .margin(10) + .border({ width: 1, color: Color.Gray, radius: 15 }) + } +} \ No newline at end of file diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/component/pswDialog.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/component/pswDialog.ets new file mode 100644 index 0000000000..1c8af7b688 --- /dev/null +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/component/pswDialog.ets @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@CustomDialog +export struct PasswordDialog{ + private scanInfo: any = null + private psw:string = '' + private controller: CustomDialogController + private action: (scanInfo,psw ) => void + build(){ + Column(){ + Text(this.scanInfo.ssid) + .fontSize(20) + .width('95%') + TextInput({ placeholder: 'input password' }) + .type(InputType.Password) + .placeholderColor(Color.Gray) + .fontSize(19) + .margin({top:15}) + .width('95%') + .onChange((value: string) => { + this.psw = value + }) + Row() { + Button() { + Text($r('app.string.sure')) + .fontColor(Color.Blue) + .fontSize(17) + } + .layoutWeight(7) + .backgroundColor(Color.White) + .margin(5) + .onClick(() => { + this.controller.close() + this.action(this.scanInfo,this.psw) + }) + + Text() + .width(1).height(35) + .backgroundColor('#8F8F8F') + Button() { + Text($r('app.string.cancel')) + .fontColor(Color.Red) + .fontSize(17) + } + .layoutWeight(7) + .backgroundColor(Color.White) + .margin(5) + .onClick(() => { + this.controller.close() + }) + } + .width('100%') + .margin({ top: '3%' }) + } + .padding(15) + } +} \ No newline at end of file diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/component/titleBar.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/component/titleBar.ets new file mode 100644 index 0000000000..76f0c0d62d --- /dev/null +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/component/titleBar.ets @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import router from '@system.router'; + +@Component +export struct TitleBar { + build() { + Row() { + Text($r("app.string.entry_MainAbility")) + .fontColor(Color.White) + .fontSize(25) + .layoutWeight(1) + Button() { + Image($r('app.media.about')) + .size({ width: 60, height: '95%' }) + .objectFit(ImageFit.Contain) + }.type(ButtonType.Normal) + .height('90%') + .backgroundColor('#0D9FFB') + .onClick(() => { + router.push({ uri: 'pages/about' }) + }) + } + .width('100%') + .height('8%') + .constraintSize({ minHeight: 50 }) + .padding({ left: 15 }) + .backgroundColor('#0D9FFB') + } +} \ No newline at end of file diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/component/wifiView.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/component/wifiView.ets new file mode 100644 index 0000000000..b5c7ff8097 --- /dev/null +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/component/wifiView.ets @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Component +export struct WiFiView { + private wifi: any = null + private securityString: Resource = $r('app.string.encryption') + @State isLock: boolean = true + + aboutToAppear() { + if (this.wifi.securityType === 0 || this.wifi.securityType === 1) { + this.securityString = $r('app.string.open') + this.isLock = false + } + } + + build() { + Row() { + Column() { + Text(this.wifi.ssid) + .fontSize(20) + .width('100%') + Text(this.securityString) + .fontSize(18) + .fontColor(Color.Gray) + .width('100%') + } + .layoutWeight(1) + + Stack({ alignContent: Alignment.BottomEnd }) { + Image($r('app.media.wifi')) + .height(30).width(30) + .objectFit(ImageFit.Contain) + if (this.isLock) { + Image($r("app.media.lock")) + .objectFit(ImageFit.Contain) + .width(15).height(15) + } + } + .width(40).height(40) + .margin({ right: 10 }) + } + .backgroundColor(Color.White) + .width('100%') + .padding(10) + } +} \ No newline at end of file diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/model/wifiModel.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/model/wifiModel.ets new file mode 100644 index 0000000000..420afcf7c1 --- /dev/null +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/model/wifiModel.ets @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import wifi from '@ohos.wifi'; +import prompt from '@system.prompt'; + +const TAG = '[WiFiModel]' + +export class WiFiModel { + private eventListener = null + + constructor() { + this.eventListener = new wifi.EventListener() + } + + addConnectListener(callback) { + this.eventListener.on('wifiConnectionChange', (state) => { + console.info(`${TAG} wifiConnectionChange ${state}`) + callback(state) + }) + } + + addWifiStateListener(callback) { + this.eventListener.on('wifiStateChange', (state) => { + console.info(`${TAG} wifiStateChange ${state}`) + callback(state) + }) + } + + getScanInfos(callback) { + wifi.scan() + console.info(`${TAG} scanWifi`) + wifi.getScanInfos((result) => { + let wifiList = [] + console.info(`${TAG} wifi received scan info call back:${JSON.stringify(result)}`) + if (result === null || result.length === 0) { + callback(wifiList) + return + } + for (var i = 0; i < result.length; ++i) { + wifiList.push({ + ssid: result[i].ssid, + bssid: result[i].bssid, + securityType: result[i].securityType, + rssi: result[i].rssi, + band: result[i].band, + frequency: result[i].frequency, + timestamp: result[i].timestamp, + }) + } + callback(wifiList) + }) + } + + connectNetwork(scanInfo, psw) { + prompt.showToast({ message: 'connecting'}) + console.info(`${TAG} connectNetwork bssid=${scanInfo.bssid}`) + let deviceConfigs = wifi.getDeviceConfigs() + console.info(TAG + 'getDeviceConfigs:' + JSON.stringify(deviceConfigs)) + for (let i = 0;i < deviceConfigs.length; i++) { + if (deviceConfigs[i].bssid === scanInfo.bssid) { + if (deviceConfigs[i].preSharedKey !== psw) { + prompt.showToast({ message: 'err password' }) + return + } + prompt.showToast({ message: `connect result = ${wifi.connectToDevice(deviceConfigs[i])}` }) + return + } + } + let deviceConfig = { + ssid: scanInfo.ssid, + bssid: scanInfo.bssid, + preSharedKey: psw, + isHiddenSsid: false, + securityType: scanInfo.securityType + } + if (wifi.connectToDevice(deviceConfig)) { + prompt.showToast({ message: 'connect success'}) + wifi.addDeviceConfig(deviceConfig) + }else{ + prompt.showToast({ message: 'connect fail'}) + } + } + + resolveIP(ip){ + let address:string = ip.toString() + if(address === '0'){ + return '00:00:000:000' + } + address.substring(0,2) + return `${address.substring(0,2)}:${address.substring(2,4)}:${address.substring(4,7)}:${address.substring(7,10)}` + } + + getIpInfo() { + let ipInfoList = [] + let ipInfo = wifi.getIpInfo() + console.info(`${TAG} getIpInfo=${JSON.stringify(ipInfo)}`) + ipInfoList.push({ key: $r('app.string.ip_address'), value: this.resolveIP(ipInfo.ipAddress) }) + ipInfoList.push({ key: $r('app.string.gate_way'), value: this.resolveIP(ipInfo.gateway) }) + ipInfoList.push({ key: $r('app.string.net_mask'), value: this.resolveIP(ipInfo.netmask) }) + ipInfoList.push({ key: $r('app.string.primary_dns'), value: this.resolveIP(ipInfo.primaryDns) }) + ipInfoList.push({ key: $r('app.string.second_dns'), value: this.resolveIP(ipInfo.secondDns) }) + ipInfoList.push({ key: $r('app.string.server_ip'), value: this.resolveIP(ipInfo.serverIp) }) + ipInfoList.push({ key: $r('app.string.lease_duration'), value: ipInfo.leaseDuration.toString() }) + return ipInfoList + } + + getCountryCode() { + let countryCodeList = [] + let countryCode = wifi.getCountryCode() + countryCodeList.push({ key: $r('app.string.country_code'), value: 'CH' }) + return countryCodeList + } + + getFeatureSupport() { + let featureSupportedList = [] + featureSupportedList.push({ key: $r('app.string.infrastructure_feature'), value: wifi.isFeatureSupported(0x0001).toString() }) + featureSupportedList.push({ key: $r('app.string.ghz_feature'), value: wifi.isFeatureSupported(0x0002).toString() }) + featureSupportedList.push({ key: $r('app.string.gas_anqp_feature'), value: wifi.isFeatureSupported(0x0004).toString() }) + featureSupportedList.push({ key: $r('app.string.wifi_direct'), value: wifi.isFeatureSupported(0x0008).toString() }) + featureSupportedList.push({ key: $r('app.string.soft_ap'), value: wifi.isFeatureSupported(0x0010).toString() }) + featureSupportedList.push({ key: $r('app.string.wifi_aware'), value: wifi.isFeatureSupported(0x0040).toString() }) + return featureSupportedList + } +} \ No newline at end of file diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/pages/about.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/pages/about.ets new file mode 100644 index 0000000000..83ef5ca22c --- /dev/null +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/pages/about.ets @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import router from '@system.router' +import {WiFiModel} from '../model/wifiModel' +import {InfoView} from '../component/infoView.ets' + +@Entry +@Component +struct About { + private wifiModel:WiFiModel = new WiFiModel() + + build() { + Column() { + Row() { + Image($r('app.media.ic_back')) + .size({width:50,height:'100%'}) + .objectFit(ImageFit.Contain) + .onClick(()=>{ + router.back() + }) + Text($r('app.string.about')) + .fontColor(Color.White) + .fontSize(25) + .layoutWeight(1) + } + .width('100%').height('8%') + .constraintSize({minHeight:50}) + .backgroundColor('#0D9FFB') + + Scroll() { + Column(){ + InfoView({ infoList: this.wifiModel.getIpInfo()}) + InfoView({ infoList: this.wifiModel.getCountryCode() }) + InfoView({ infoList: this.wifiModel.getFeatureSupport() }) + } + } + .layoutWeight(1) + } + } +} \ No newline at end of file diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/pages/index.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/pages/index.ets new file mode 100644 index 0000000000..e6cd533397 --- /dev/null +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/pages/index.ets @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import wifi from '@ohos.wifi'; +import {WiFiModel} from '../model/wifiModel' +import {TitleBar} from '../component/titleBar' +import {AvailableWiFi} from '../component/availableWiFi' + +const TAG = '[eTSWiFi]' +let self = null + +@Entry +@Component +struct Index { + private wifiModel: WiFiModel = new WiFiModel() + private linkedInfo: any = { ssid: "", bssid: "", networkId: 0, rssi: 0, band: 0 } + @State wifiList: Array = [] + @State isLinked: boolean = false + @State isSwitchOn: boolean = false + + scan() { + this.wifiModel.getScanInfos((result) => { + if (self.isSwitchOn) { + self.wifiList = result + if (result.length === 0) { + setTimeout(() => { + self.scan() + }, 1000) + } + } + }) + } + + getLinkedInfo() { + wifi.getLinkedInfo((linkedInfo) => { + console.info(`${TAG} linkedInfo' ${JSON.stringify(linkedInfo)}`) + if (linkedInfo === null) { + self.isLinked = false + self.linkedInfo = { ssid: "", bssid: "", networkId: 0, rssi: 0, band: 0 } + return + } + self.linkedInfo = linkedInfo + self.isLinked = self.linkedInfo.bssid.length > 0 ? true : false + }) + } + + addListener() { + this.wifiModel.addConnectListener((state) => { + console.info(`${TAG} connectLisener state=' ${state}`) + if (state === 1 || state === 4) { + self.isLinked = true + self.getLinkedInfo() + return + } + self.isLinked = false + }) + this.wifiModel.addWifiStateListener((state) => { + console.info(`${TAG} wifiStateLisener state=' ${state}`) + self.wifiList = [] + if (state === 2 || state === 3) { + self.scan() + } + }) + } + + aboutToAppear() { + self = this + if (wifi.isWifiActive()) { + console.info(`${TAG} wifi active`) + this.isSwitchOn = true + this.scan() + if (wifi.isConnected()) { + this.getLinkedInfo() + } + } + this.addListener() + } + + build() { + Column() { + TitleBar() + Row() { + Text($r('app.string.wlan')) + .fontSize(22) + .fontWeight(FontWeight.Bold) + .layoutWeight(1) + Column() { + Toggle({ type: ToggleType.Switch, isOn: this.isSwitchOn }) + .onChange((isOn: boolean) => { + console.info(`${TAG} wifi swtich is ${isOn}`) + if (isOn) { + this.isSwitchOn = true + wifi.enableWifi() + return + } + this.isSwitchOn = false + this.isLinked = false + wifi.disconnect() + wifi.disableWifi() + }) + } + } + .width('95%') + + if (this.isLinked) { + Text($r('app.string.connected')) + .fontSize(22) + .width('95%') + Row() { + Text(this.linkedInfo.ssid) + .fontSize(20) + .fontColor(Color.Black) + .layoutWeight(1) + Text($r('app.string.connected')) + .fontSize(18) + .fontColor(Color.Black) + } + .width('95%') + .padding(10) + .margin(10) + .border({ radius: 15, color: Color.Gray, width: 1 }) + .backgroundColor(Color.White) + } + AvailableWiFi({ wifiList: this.wifiList, linkedInfo: this.linkedInfo }) + } + .size({ width: '100%', height: '100%' }) + .backgroundColor('#F5F5F5') + } +} \ No newline at end of file diff --git a/device/eTSWlan/entry/src/main/resources/base/element/string.json b/device/eTSWlan/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000..0fa7e414a8 --- /dev/null +++ b/device/eTSWlan/entry/src/main/resources/base/element/string.json @@ -0,0 +1,100 @@ +{ + "string": [ + { + "name": "entry_MainAbility", + "value": "eTSWLAN" + }, + { + "name": "description_mainability", + "value": "eTSWLAN Ability" + }, + { + "name": "cancel", + "value": "Cancel" + }, + { + "name": "sure", + "value": "Sure" + }, + { + "name": "wlan", + "value": "WLAN" + }, + { + "name": "available_wlan", + "value": "Available WLAN" + }, + { + "name": "connected", + "value": "Connected" + }, + { + "name": "about", + "value": "About" + }, + { + "name": "ip_address", + "value": "IP address:" + }, + { + "name": "gate_way", + "value": "Gateway:" + }, + { + "name": "net_mask", + "value": "Netmask:" + }, + { + "name": "primary_dns", + "value": "Primary Dns IP address:" + }, + { + "name": "second_dns", + "value": "Second DNS IP address:" + }, + { + "name": "server_ip", + "value": "DHCP server IP:" + }, + { + "name": "lease_duration", + "value": "IP address lease duration:" + }, + { + "name": "country_code", + "value": "Country code:" + }, + { + "name": "infrastructure_feature", + "value": "Infrastructure Feature:" + }, + { + "name": "ghz_feature", + "value": "5 GHz Feature:" + }, + { + "name": "gas_anqp_feature", + "value": "GAS/ANQP Feature:" + }, + { + "name": "wifi_direct", + "value": "WiFi-Direct Feature:" + }, + { + "name": "soft_ap", + "value": "Soft AP Feature:" + }, + { + "name": "wifi_aware", + "value": "WiFi Aware Feature:" + }, + { + "name": "encryption", + "value": "encrypted" + }, + { + "name": "open", + "value": "open" + } + ] +} \ No newline at end of file diff --git a/device/eTSWlan/entry/src/main/resources/base/media/about.png b/device/eTSWlan/entry/src/main/resources/base/media/about.png new file mode 100644 index 0000000000000000000000000000000000000000..2613fc352850e45f0582fa825183e3928cef3378 GIT binary patch literal 7007 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

3UGS@u#26i6ROG0PJCg1D(REzzvP zKT#Sy(^iS1D;Y&;LXq<9`R}GZ^%-aJv%Aydx$(rFi7Nck!lPz~2Uv^%=Q_|2^(!$O z@nnw6rAjr|0UFegwVr7F#vk7Ylx{xnq(mlu#f*&rp?7*^?}1PSSH=R6fDqXNthHD6 zcms1|yxHKc1nCU|V^Ui6RJCde@I!^zXx=Mt{~X5++kKH0TU_ZwhHGsMABQ8-&Xr>THu5TN9DWC?ac!MJIOdlf!S8DL!~d6O)`3q-Kav?Q|{ zzj@;lOk@UbgAMqzB4$rX&pI(Ifsjq2h)%0CVXy2O5SOQ_b)EoQqhnb@6N9_V)t|tn zTv16DSpsh;7?`v&Rm$Ayt{VO@u^v51$yxHZUFX-fgv8u*ib3Z#?dF(ec(!%)%4RpH za9?f%D&$-V!>6vAxoQHax==|#mI@+x>$K#7KNdY@Q*zU(9+lgK;8bVWvtkt3p=h5@ z84L3t&jvfQRMm=o8`coYR)~jY-k1k9>mO{ei@n=ip~(2d6Z2n#Ci_hxEQ{mwlzqED zCtgz;jJ4BFCu8WOBdD=Aj5I8P6)(Ivo{ib$#xs?aKs4-Pq_!lCYlZi5X83~0Mfq4~ zp`#~NU$^GZL?kjpUEtAR!1;piaFmSW7T$SoQq>X={Nad*fGeV5&v-|;N8yx>!!cwA z5XMyHd})@hz*jmVbY&!%9R<4FgPxjjmLj~m!n4~Q_*ABb(`p0Z^Kr0T#@bMEcnhoV zDN5hSQi)tel&)O8-8p&`CW!7ob2kRnSoJ^ofswapq`g*0N>s{Ox*)oXx(DaK#Iex` z3&SJUO@C8pjCdfr^+*Wj_xvIC4r*I5iOH|j0wc{1QWOJ8Dhnfz%^%f8mUS#r0_pE zLsEw&@w=i`2ky9b*AZV{+7f%t21Qq-lUndjLu|7>=L}ir1f0gF z1Rf1|$dYHXG}z$_%*X3u?#;C{!iI8pKk6ucx|XDfoDQ>V-vAC%2bHa( z*zg1}WYieUGi#TDifUs0=EcYZuqFzC>PU_77B@;#F#pqo&h=kC85jya?idc_Xj5LF#`xyFi zLh-B2EZEW1*RdiE9!x%q)6q? z%Y6}Xu=H)0z8u)XbgVrF;;M-jziQn$HGCY<0}eMZOImaQKbyeS1Mbh{)#-gF{Ipcz0dd2Q5@93BP-ph0UM+?edaREvAC z-Q$RCg)rURw*8F~iEBWmum3I(t^W_t4$icBTr zauFYB^FN$MUttvkdDwpy(BWRa?1<)kX6CWtKkYg1eT(VcTrWh8fEmNi75rz)VKUHd zzL4rt;;08a*&p0zMjayErqIuM-w0pcR!u$O&8kD+Fk(<6p41vqhtjGi6ZIs;MYP4X zNwAN+mIj4Td;6~*gd6h4tGW@yzVRCSBrw6Bm#M+M`XXtIkx$WVEOF$T_Cgr!^2jjn zcctfiztqMDkJf|k53~>~u4OCVyj2kg3iDHkHPL>nQ%g$1X-Imx^F3wsr}5Wwf9ilV zDrDAC8d#GfKeYb^wiSwtZ%IKO2Q3*&sBbj{JDF;Jr4)1ob8)0P8nnw^lr+i~T>oau gQkCxiMfhCkrQC*zKQ>R*fImGD^&ri)&Y8jeFHV5$2LJ#7 literal 0 HcmV?d00001 diff --git a/device/eTSWlan/entry/src/main/resources/base/media/icon.png b/device/eTSWlan/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c GIT binary patch literal 6790 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 KV+h)}u>S+Q@eiT^ literal 0 HcmV?d00001 diff --git a/device/eTSWlan/entry/src/main/resources/en/element/string.json b/device/eTSWlan/entry/src/main/resources/en/element/string.json new file mode 100644 index 0000000000..55c25ef852 --- /dev/null +++ b/device/eTSWlan/entry/src/main/resources/en/element/string.json @@ -0,0 +1,100 @@ +{ + "string": [ + { + "name": "entry_MainAbility", + "value": "eTSWLAN" + }, + { + "name": "description_mainability", + "value": "eTSWLAN Ability" + }, + { + "name": "cancel", + "value": "Cancel" + }, + { + "name": "wlan", + "value": "WLAN" + }, + { + "name": "sure", + "value": "Sure" + }, + { + "name": "available_wlan", + "value": "Available WLAN" + }, + { + "name": "connected", + "value": "Connected" + }, + { + "name": "about", + "value": "About" + }, + { + "name": "ip_address", + "value": "IP address:" + }, + { + "name": "gate_way", + "value": "Gateway:" + }, + { + "name": "net_mask", + "value": "Netmask:" + }, + { + "name": "primary_dns", + "value": "Primary Dns IP address:" + }, + { + "name": "second_dns", + "value": "Second DNS IP address:" + }, + { + "name": "server_ip", + "value": "DHCP server IP:" + }, + { + "name": "lease_duration", + "value": "IP address lease duration:" + }, + { + "name": "country_code", + "value": "Country code:" + }, + { + "name": "infrastructure_feature", + "value": "Infrastructure Feature:" + }, + { + "name": "ghz_feature", + "value": "5 GHz Feature:" + }, + { + "name": "gas_anqp_feature", + "value": "GAS/ANQP Feature:" + }, + { + "name": "wifi_direct", + "value": "WiFi-Direct Feature:" + }, + { + "name": "soft_ap", + "value": "Soft AP Feature:" + }, + { + "name": "wifi_aware", + "value": "WiFi Aware Feature:" + }, + { + "name": "encryption", + "value": "encrypted" + }, + { + "name": "open", + "value": "open" + } + ] +} \ No newline at end of file diff --git a/device/eTSWlan/entry/src/main/resources/zh/element/string.json b/device/eTSWlan/entry/src/main/resources/zh/element/string.json new file mode 100644 index 0000000000..104950ec13 --- /dev/null +++ b/device/eTSWlan/entry/src/main/resources/zh/element/string.json @@ -0,0 +1,100 @@ +{ + "string": [ + { + "name": "entry_MainAbility", + "value": "eTSWLAN" + }, + { + "name": "description_mainability", + "value": "eTSWLAN Ability" + }, + { + "name": "cancel", + "value": "取消" + }, + { + "name": "sure", + "value": "确定" + }, + { + "name": "wlan", + "value": "WLAN" + }, + { + "name": "available_wlan", + "value": "可用WLAN" + }, + { + "name": "connected", + "value": "已连接" + }, + { + "name": "about", + "value": "关于" + }, + { + "name": "ip_address", + "value": "IP地址:" + }, + { + "name": "gate_way", + "value": "网关:" + }, + { + "name": "net_mask", + "value": "掩码:" + }, + { + "name": "primary_dns", + "value": "主DNS服务器:" + }, + { + "name": "second_dns", + "value": "备DNS服务器:" + }, + { + "name": "server_ip", + "value": "DHCP服务端ip:" + }, + { + "name": "lease_duration", + "value": "IP地址租用时长:" + }, + { + "name": "country_code", + "value": "国家码:" + }, + { + "name": "infrastructure_feature", + "value": "基础结构模式特性:" + }, + { + "name": "ghz_feature", + "value": "5 GHz 宽带特性:" + }, + { + "name": "gas_anqp_feature", + "value": "GAS/ANQP特性:" + }, + { + "name": "wifi_direct", + "value": "WiFi-Direct特性:" + }, + { + "name": "soft_ap", + "value": "Soft AP特性:" + }, + { + "name": "wifi_aware", + "value": "WiFi Aware组网特性:" + }, + { + "name": "encryption", + "value": "加密" + }, + { + "name": "open", + "value": "开放" + } + ] +} \ No newline at end of file diff --git a/device/eTSWlan/screenshots/device/about.png b/device/eTSWlan/screenshots/device/about.png new file mode 100644 index 0000000000000000000000000000000000000000..0bd29a963b7d150e90fee835d3c358e85374a6ed GIT binary patch literal 61547 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


FCEs+fnzA_1*I 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

W3^!qD~P$d9LU`-7Vg=<&dQMMW&E& za4)@F3DvLT6BqiR?M6ivPwgmB_h&BCV=Ddc9I67bw=;ha*yOdQUHXLk+J(%A8TMmA zrd?j9dM!-jsXIlXcbn#3a2nsm8h37^3223b_^fHRGP%7V*GMA5RV5kW$~UMsKxvni z7QN=wW^=3HR>Ce%l(Nb`!k?Tof@`4@$#@`DanC|=BLKZdg#7dh$>+7GQR;j&r;(< zrVX>1sk6AmbqR@bd4N$Yb9N(@mXk4@P}z)_V**?DcW-%(@B@4(7@*+VSD9HRgc9?f zB4L4Mail~!Sa_E+)X_H*?Mfn}$Iv%ak$cGc6r!=-z7%rK?LJ6omIa^{W4V`nW*HE2 zpHv7YekRR8co{njuDeA*$cZtTeQkdOJuT3yQm@u~lfzDYCJb7^eN~iq5u|%gq`pu) z$5CX)2p+%jVm6i4sa2~7jWSOVx0LX_w?^gCw0r;PHIHl0*-I<#lxgil}Y8aC>_|9`h3{=32N-wFRyu6iXa+0sldF!+G|?5TD0 z@V~7YEWD^WZ)|aWJ7oMME@RQkN*fn8y>&564M*NAtZONHnlHF1ChqdhO5fzk^F%B- z)a?FA9XNz__kD}?;bM}_yi5Dx!y_9s#qcM9iX{2=b?Y{APFFE4&T3wv@(s80h$8LIwKA%KhMM`}VO>TWX`@{60 zaXb5dw*@xlT*Y#`H%IHFetiP>@7z+lgzoq!wF;9zv*QX4kI)CFa-gE*VKc0=7PRR_ zMM; zZClC(R^I0MW)&-eE2P(dQHdC z1wj#KKmM@8^1||`DCb-gA&#;AqE}>ZzanZ1eCAdnnnvMrc=1}L$wL z;7-%A$T7`%h4f{u$U0-LAUJKXe`7B5J7gonRR9frfra8R!nhV&Z))8`@rjP=!fs_` zl5I@Ke@4Fob>#l!K-}m{*T{%^`v~7x!ISN-9=WPE*dWL;!U2EsQFHY^VYPfs+HDZu z8?q>180VcH&ob6dW`~wCuz2K9uHN9-rCx)hinXS}+%kCDj3umb(OOJT(J{+@J7Syv zuIZ}eT?RF6Z&vm?Q~Jaq%FZ%pihMOB&Mdv2VwG*klR&)m6MU-b4Zqx*HA@0t-x_RX z3}7LW#B{oErL@Bf4f5W!9tBU${*Fkb`P0iO)LU=br6g8H;&Q&irIQb?LAtiVfymxo074;wlzKvY((U7m`-E+oS^}-o%fa$SQNa^g+ zB1PGo8Bj^L2nq;{lC8U7v||9`H<#2y5bUlxmQ2WFXpiZu)g=#|g1fdn2lZ1w67<#Tz)jU^4dGleqTpJ;Ing z7@hoNc5>;h(a@4k^NL@N)A+HsrIlEJ^B%bBnN~|)AY&HxK`z)I$5PIB1D!HX;qZ~v zF$E$N~_x46)Ea0&*Kshp6tz2GO8P*~;cg_FE|NoCG1Nec9bp8}x zck3^0F8VA>J$CRU%5isj%pV*Q!$hZuk^bQ`Abo#4y!*GKg1w@?$G2iu`{pCE zlb2p;XH`!!Yo@xB#s56u#=KxqgE$klI_Sn5$^9PAGC|kAy6K{FDXAhpc6$Z zR30nWFmzAgWJr0kLRw~2%f|8Y%UaM_Gd;ktlQ`#I*8Qd82`j?>8X*4O;JQHwCf6w` zO59j-Pti{H%6CB+!w1YkJd%f&fKxQK0jNDSx z13zB+zWE{JHSKqe*F0xpN@NF=wdd&}QeQ{4>F}?TAOUL9v{yD&sTjzuo7@j~8eymF zcP>3zqJQ3@+ScY!W-Wou?pzJOr}YYMiNo)8{uRqW?}8`s*^r&YzjFtU)V^mb#tUpl zjG-bKPk3h&A8`NF_PKiny)O7bnzpAK=2_c_$vXJi)#nlkPi)a3GGqI@h(sVDoKy9G zfT=C=|7QFz4fel44#DZjn_(_=o+Hmka9-iE5;0Ond5jzMP!@5#zY4=*a?{gnNwiyQ z0M@$tF?Vw6zw(oWyT-RG^)H9l|A!8t$&dBkXMq7}_X8nyF%81m67^r0{kY2aR!PO8>D7ppg{!pN2gf0LGj2#7L|pilWU9Ujx}q1og` z;Pe)3BSicukUYjt-!Q-r5ER`ixoI4$}gwf1XmF4yL#5l>+W1_}OU)K&>JcW7etu{n z&QlJof^nAi_Td_P|FvDYIp)7t27BO0wlNzc= zcYx_fp45b@EihnU7*M=dMo}ch1KU~=nofHKs5|zkNAk$0RkNWukTo)_Ci-AR(O$y< z?-B~4-qhmI**l_szBgRtCoc1xfTzPgl)-v}s%3_xTRx+y zHmT_j(lyOAtJHG=%V$bAt8l5RlcHBQ}4Cjyo=nz3EEt1tMQtbqgiew9gE02-Et+WhapH?X^Tf?*u2H-UotutsDwsK zt1znOduoX&zgOS!canVt)r_+W+DKye<+MWYGp$S_k&VKmH6Yy4jcdT2JULu_U+oqT ziCDd<6#5E7;V~N(pW&bg#2{{Ynl97a$jl_)V8jt>2`NdRY@$!W#$?CJ1q6W2eHi*V zG++zp{XQFTQ}~=2iAF=F$zg3?#nNni!)3v*=#Y$^;wsvieZso>LLc>-$&i{tP^Mm1 z`c}91R!_+O_#`h-7-{hC$t8k)>h1L68)UB@Np(L9TalG?c_LOVS!*TV2PfJpwKH6V zA)_AodOd&VqxJNANqbviK5AG-c+Qm}-@75Ot}8?YZQK^L;uK8JXRYZXqPZ>jq#}7K z<#Sbm*0tC$O-5E=z%cke6_pZ>u7$CHHNHpP=&x9`;o#Q&c1fkQ(ad68G{`9sspsUV z($rUv+m73T-9`Ki+I1j40lGern%g_7EL=aTH2DFa0d3V+RNf!g@ACvsm^Q;IXCD;? zx0yQ&sLc1}FqV1MTNc%$R=Yeh#kw>~CP~!}IQmC=I5$ME#cSW_gDre{+>z?> z%XoDPpp+a6%;7PTV$3!98$Pa=qr{;2?9FM6{x1mn%m-5vBdKIH-}J>^hZgk6B~RNU zokE*bUdlHMdDj(<>WQoty}&YadMgES8GoIc)p9N^IIH1}#zN7+@R@wPj_Vy`7%?uzTI*L$z!?7_VU#f+ zc2k{R7sf69xGw^?CoN@cI1@Tvt+NrR+;Uqu|LB>U%V#D5*zxPn!M>@Vx}nZPGQ z;FDo3TRh^gvRbxAaW1d-f9&HQw9%oc*G`7$xtR9m;v~<#n{@S?97S&Vc#6)X8~`rjf&gkk}*?84=lvqO)72u(~fD+twEO7D(ZiZf)mw-065~-6|$g$@4(5 z@H5xCF1m2q6kxhK2J+LeW5*b2p#JPYE5%ELMuSMSo~V*K2cIYw*;_I#{eG{2O8dpKF7E8B%6r-jEp}sCdet`Zs37YS5elV zV}i?(Z{UtZj&CLe>`xHotX#jNdG7~8ogvbHuPh!*LW07>x{UMlU6OsO)Vt0hBe^Ks z3GkO)20aNtK3NJUg$_M@k9-Kf$)HL$b-6(od9^k&fHwP?le%2#NJY1|NJeKv9Jqxi zn(h=c&}cEgdig!CyQL^MO85=|*e+&T*Cao|-()%P+f}Qf7%sBsD6>e@)ciRrr$`Se z0#z3fS0s#3E$Z*BS4EX(-m9Y=?a2D`k0dYoTnzX4&4qU|D#0eHNz9uqSht5^`o;WS z(~uE1eWeO-<113)MbxbgxuV8_#?&^X7JiN{mU4c5qAKv=?ye7ExPX?IzPgXGqjdr} zQKNDhiAcSlPH~H{PzOtiD;?{6Xq5C#&Xz_k!Wmnx_Wxn;Eu-REwzc8Lo!}0^p>cNz z?oLDS5Zv7%1P`u_OYp`6jcah1;2wf>a1RhjNIv#C_w2LxK6jrh@4fFg-Z9QE#$xrV zQL9$XnpJZ?&ohBytVFEelaFLQA~WfYs0pLf#<*4CM~j?{6D3%67zvO=!`0f=)MahTq=`P+(M7qZ ztz3kLjZj#V;!HYzt$3BKgCmQlFz-V`*e!%g$ZPt_kxDnv}AnT$4V)ez&i;AMUd=_mP2R`F8{&~y+ z{ySywGo#w_-c_Y|1KNl8FcwRBdOkm{&Ej*|=CIyC>53;DZPJ2R*1!(+Y{F5@*-h36 z(gC?(!Z97GoV|mS0Z-wYx6`xF>_@()x?J{FhCwo?7`(O_Z>o6aw`QZ?yE$-@Z4uMQ zM3fT(2UiU2lx^FB&;;N=q{4)`FJ&`B=pl@%27E#cIH^kHOtT0GxveM#?zq$~@6@+#kMbt(jpiDS#axn5*$en(ZsQ^F*ZHPd=weC@>CJad z()TcIw}yCbkP*ZT_g^{2NmWHL%gik`KZg}3Mv?R4&}LLbiVqExNJt5D7)qu&m#}H& ziJq~Fw8=7&aJj^K6O0&Qwcx+}^rGOYU^JAS-vc9c(b6q(DEiv9NNzj8B2yBFbKhfc z|K>G&xsIhZJ(iC_j@Y7svpI8nqSFYkqsBc&}|k3IQ{Ny;?Y?xRbP7?Yzq&_<$^>g}x1PS5xd$6R*L zdk|=hX^TnKavQl!QHZ=$pf}!)n zUJ+V2s#r z1sDI#nox07t}7;K@P_pr-`1a|`e{%RklYg~-3dLfxbH|~-_gk~i5%}(|KK%8f2*fv zc-?%2NF-IsePCHsdFPLNVNM8aV)6V&p1c$l-^Z-pgNADDZD=k73XkOF7!vF!6@XeA zv7PPgyh&e^n6o8bsB+61tc>XF?M#4n(yIuM^fxMPK?Uw(Z6#-^$IQ=BG9pqi1mMj~ zF^4|5Nsp_s8B{ld`lSKkC{L{EVk|qK8IzZA$#AdDaXIm7%0vsB_M$P_k*|9X;SJjo zv4uIUzXVw-Zll03Icc7bPsNs(S}(~thakjgC&@98K5z@(h3u9@O}YVrShQv7 z@XWa@xfDC2_UtEtefoASYAkW1Aj`lps=BT&D^G6faaY2#lmf?K9MX0>zofU-i@zeS3r&sZ0m zTDjXEGwZlpmjdiwNh-L`lU#ZbYuQQC!An{UFsYs(62UdgjkwO4V?bc@*)>ZcQA8Ez z1JMN9Ci45T8K97LtMN_8i^QS3&|u+Lk9#%ozv~=%5gvMei(mFT4ZA1{*vWYQtAvqC z`8yrRx^w@u=hJxJO@LY)3^?YVTPm!s^QidZ0)~k*0muB+b<$J8U$@uUNSh=2xuA~k z?Q^_F3tS({DMrmARe^DANNKN9q^jdYSjlKV1ijz?hD8i)S$ZHgdavJx6U?SD(Gu5< z9jDQY|N7GZDbGiquOi&f5Y>JHM)$iv{Ok7r0i9<$^#}J)LI} z9CIFDS}ZhAkZq)=poFB&uI0ZJvV|2t6EHclfb9g?dJszZE{!$pXYDlwv5^<;rq8#wh+u~s$n+1l(>r6lh3 zLMKw`@9%8LW{>X<({~qH>o*yRj{u*M0!;da1u2jZMh3oIxp}c=;m1hnA&F-(y}EfxgJ<1kq%ctB@|bSESbAt#DkO z%s*@9+I7Izn`mP}RFO--y0_r=jz|J?@rm+RUAP%!w$8-E>^|5hAIyY)_zW%p8<-s} z_)&||78MP#&F)uuqaXWKW1@Wxmx`RFXdS&d*&X#1MJ|6Xpd==>ypypq(rA#zusW!1 zqWVz28yG*}S(Kf2Ppao?U`V3E@*vzhn)(?LHvWY7!@xL`Ni&u+|n< zML}h+eodux^)xTIM$%Cp>_Gx>L4^0g!>7I~Cur82)VLe=mpiEqc|B4I9y~e%7rMpH zSd$ntRg9zSN)ps*8L83z2o~q^)Y1jHGURp=>xT3bBZ>V?vc_C$tjbnFGG&OH(lp|` ztI9zz$2zpk%tJHwJl`IaX6)3GodZP)hN@srvLt0x& zJTeEnNdv3hKVVy_Ah=GRr}n{APcmtgN9TqI6`r%b&11By!fl8y4_Y=!46r7?%ir1= zt!hiTS>UkCiY3smmu`e*AX|9znRoam0olC>SEE6eY=2R&*FY z6Ak-%*@p|eP@_Hu6EimTx1aQzoC2ct$JU89;5*8D5!>vCC#@6ID+9dhJU&YavbPb_ z&2C-dg}Z(RtEjmrcd^VJu9WFqJ>%rc0=hWB)i6#S+vwCZe5;fgG%gMR`|+3^Hg!lC z?AaX>BuY1q5w2Rz4Jd?XdL@loH#X)Gq*CR|R7w_yY|_HnpByAFOK|7e$V6`Bt*>}Q zzoU}dPPYl2;`^b-H%<{dbR4t-^^`s*2B&gHug1Cdm3-6O5st4*Rn`@VQ_jUK3blUpe`6y`*9*z_)c$or$@H0=%VfNd{JIs|Gk_Q9Q z)}Qgx$>QUtC5W`^>l?rDoL4j|J`Dq4^7j%NU|Gj-62Miav)A2eZXLf}oxj^fpi7a> ziUqf7Gm)$0?CFcdZEU#0nRidl>d`khHmI5J@9;PzG#gS`;T@3a>%Zj?b8~D%LJwdl z?q^nvOiVJ#ZVOM7*=B^>zF&KKHA;3&=hi_;BIoO+H_f)DUW_+I>sK!&Xpf;x%(fK; z{}Hcr1RR1i>)OVx6QPh!5Kd4)Gy~%RPXs#tyb%<2}2T&glg<=qej*L z1orKJalI1IOzcF>Xzn+{T_e<55%~!yOslj9w~wc3y|2wXv=M)Be%NqqaoMOnZGXMc zJL>;Pg4ek?N8&`S6cXmtUAT)0lAxf-s66~W`0Ob_`#h#NEalqdMJ8lt>t8?qpBRll zB-MQflW*z*GInVzzfn}YH4^2Ud;iLFPCS6`)){b=%8lgA8X$Smw()SY+@;uJ=`#cfncgIy}PlP zQZ=3Q?6Isz$k)lY_CuRN5aih>hWlmmZ!TBF7A9(~SkdNLXj!$~r=m5pW7bDj`T9}L z9)$JAAX3IXx}oCv=nM=T_ZpyOT{djn^0Lr7W`xZjD1p-sJ zNaTUWJjXo15YQfrmAJ^km`La*Tn zqE80Ji?V|l6A*NQ&J72MsFI^8^h5^XWul(ApKJLzt-UwDt~@M*wI8Hs17}c&=0t0O zZlihD7wDfBj8yxnQnz*dHG6Paw47{o#X|a2TIN6Dm|D*VIq%llQXf25--`G)s9a}H zD9iv&8Su*sZzccOS2K!tB0u^eQZX>unwZIP$_|p%c|JVHhrV4Tx@9C*;!ANO?i82G z>YmFMsu96#g;#rM)rB(&j7iJ~<>(j+TwjwKR465p8?#c-LGNDK1jo&uHX9v6EUq?;T_zLc>vw&m-d)m9J*A!t+&(~vqEx6 zKF1)$YiWMRKGn?t16E-Za2AzK(iFa28VTT=Q}{3+Yh(x8^RgVhrmUd19%1rIbx-9I zy3m|YX*$1&V{+1+7?H>uzvI=vlDp~z$2-%>(P3VGewkbkvT7@A-x5~5!`20n%BillsknF- zR!mAGZ7Vua)L?#wGPGJbzj)&uhLQ_iWqIYWBwqVJZe0H^RQTIFDAWA+ADK>V ze**BLmVQU&lkc&9Z#3{Q`E*;0?8omQsE?e!pq5uPCeM(cao=y;G6~y~E30pCOsfRQ92etOSlhj`&$k-Sy%Yl*NA(N7%ryOWTarmH{L(X*6 zZA-z>cO-yy|1F~;32wm<9(nEiQ-8OfG}T=j6|uTet3KPA_Mox+SGikA`OFFF@*Qeq z4<#z!UkMDoL59J!&fQhVH7lQJJ9h-ZL(}r9nbORNko0d3A&MNWKLJ%jx^ERS1E9*^ z_;PS&gfpRUM>E>Sp{~yHtbwzU995_%v|7ihzNtni+)n75{C7s%j#q-1&%%~#%q z>88R~sXP%0$HU9a(fPL1TF3H>n=8&bC*e&76(4Cqwa$(=J3;M+ zamUN%%m%d-9oB_Y>D8l^SQHWg*R;X8-WW_^5xLN;HmcfelVxyfGB&sA_kS zL&rLpox<`+pu@zgYI1gh^xj`aW;)GA*Q`p}0V5MvHClT4>*pNzNVCrGpIJcgZiXUQ%Anc+(Ncpw=3CghQyMj~A}}C_)=~r<-J>3m6}PClE+>%&$*p z?s|JNj^E?GfD-$}!8^ti&sv$^pDj(N0qiD4!ziYXJiymA8O2c7L z04PoMW@pwu7I27|6K-n2y&Gj496x>|!@4RB4)_VEYr0&CiD%V)$|eaMfANNY)~IGA z?ND0(e+l7JDqDg<;6Bhe~2UvF=IMsX~QctltmQTS>PyDn+{7dNV@Q z28aQlN|`~Bh9jZw{@Np0i_po2N+T%q$eMyfFsba|GpMF}nJ%?~_-)S(E@+>yZxuv?Fw5Zt7}4Q3&5Renp(TU6puAgvFnr~NpCT!!q7 zS>Cf-+ryiD=kia2`oA#y6#BI*Qb*?R`fBt&^>fvj#s|r%sB+`#OhMZE=nKyW6R7yq zypNGFsTK&IyPvEclx3+T2Eu?3Bh85j(won)RzoU1M}Qz2LMkiO#|@86pP_T=z8FJY%N)C_@b|8osi0`6Yx& zy|x7tMr}*L2AC-=kjtl!dzYc#p@{35Q0FVGh`ziAmzZ1r=m_W{g5ACJPS5 z%WT7I;(4ZW=>|=#hYYXm0e2iA&T-qycbh1se*7c`C9$j_8|+g3^h`4gE^S60BL@68 zRkSi$2BfZpy^$8qa0Xe#2m-C4Y`o${3G?voZlc2EY~`Iriu%B34yL<=?LfE8>#zRf z>2`%g4t1y#2CoE<5vsogw_bJ(^eKQ4%a7}1gVoft)z(EB>je3Wp4DgICyXM}W2ZR=`YRkPB&cRy++zjy zA*v44T>pn|gXiGK#s7%s2qy)n69l0Vfw8ZJ!Xs-PpcAQOWZ?%Ymez>dt0qfwReFa7 zo+M57x`UOPK=@R-nYQvY{*sW#xRvTxhRa@Q<@l?>j3YCbllK!QiOJH0q)xUp!=)T@ z{aZ?P`$tEl>4+5y+M2+$t5~H~HHf_hd+NlzoHcQdEdIgRpXLU(&=_@`bdP7O6HH`<9-*)lW^@e7)Gz^V|h` z3s-8nh7@a0ByS3#Q-$6&>nH9OxO|h1FRU4(z1eO0^;p4rFxLelYIgEhM=UE zEB-6SE|zza)f^%O$OjefQ9a9C+-c+?BotoRnPybySCB<=%yiLpli}45vNcPF%qJZyF*B>qbhg2!_&T0&P!MoOMXRPz{`nJU zqcqf}TLby*?UzJxss3r$8O~t4Yk!~?*43rEx>Bc3Au=GR-XdkKTn_0Gy7^wS0b)kU;??2Mg-`nBjz zAb4eiauABt5-f!6Ji@}DLY&D{A6>w_TqC4iY<;SO28hAT^$R8XNxs8%r^fos4+h+K zzYG1x2TumIM1RYEHc-U>{SP^S3eOvU*sQ<8kN)U4vVSIW$im4e zEl0bJ1|f_S?f6BWIfFl};)5xb_wjT4g{e{ZnA4?Ow7;GC?jH*l@#G#>W{wYu)?-eCH~A1%&O~hg3~71o2UQ`Y0v9N_(uwC{V%jb(h1YY9^kQWCKH(OtZia z9m`Pfu6%?)Wpr+Y3wR?)b?9M;#Ij58ZzXiZBRH%fpT&+lePi%$$Jb5KhS z*XWjIQ=S}I?XFaU3(Y`5$2sjtP+ImtVWQHcNl~xED-PX-_V6T|>uNi8u@#Zz#wEVY z^}g#i_g2eeerM?{+AhcLY-MWg!A&d!sv8mpCl$T8-PnH#EzKc1&FF9r(DCC;sJN9} z&k~u#V`kPa{^0!>{&XZnX6Xm;Ym1^%$w!;9yJagO!R*ZqNhe|<2w7_q{j)B~BJOOqg z?J>49>S6kMnj-rX%BBRVoQ}^vr;ih<c*9i!Ad&=*AOIo3qmgzWWM z3aQFm)ec(kN*Lu|FKhVK3+Amb@tjZ%oO z(yG!%LlpW+Ugd?_yKG1ZMtbbE`J;L!T^i$(!p{CJ+{n<7+=6+=9bIF>k5@GQ87LjB zOHenc*r@bWi3!32eq2z6tMqcG$Q#KH4kMq|{T1|Z*U(%;_&4UWw!6Y4ITkuS?^eK0 z#pDbFmiHKNYnYxQjCMFeWAEjmwTFffIN#0m>Khv%x;DKZO}s3K7XOeu#)4r*RC$^R zmx(YVYBn?!g8ad~m^06tTABB{~SEuh85hKnMuH?X%`RCDp@krIr~QAGs(x>s( zEGFEvEDk$>yceG)Z`K!n0s`t`dOra?cPQykFz!bz?oDo7xGy$zXg{FyJU6wvv)5LQ z)&S};lsqT1G)iGxd3~|mM<@xi!*iF-4(A0zU22IET53>-B4taacG5ezixH2`d{u3x$u|%4e03YV z)GmZ3h}4To1o>GE&Qu1NATjE1Tfu7d9|8bxO;7 zEgno;7}SP1Z}rVPva^$I18p7_O0;tTO=W| zq}9_fTVCni8teT%;m4Dr!=jfb{)E-Ntij88`k@75&RUOx^#Zgm?~oV#9F^^{wef7o zCGhzoluF{A?}H`$-Ys4{^HBH-mVf`dbh!Y+AHt8kR{y3X_Q*@R_i%F%=Lg?0%m$tQ zB@^K{mlJDnPz@R7Nd2o*Hhc2-(t5woK)@FM#5woiud7_w3Epge<`|L?7nWb+!C*Wg ztLDoK8Q00~&svc357t0VbysRdDFmk}mWsJqt`k{s@48EWn(2)9IRqu0hN8+dG{aRsfm7!=U*cxn~1$XS0S<52IA0@*xKD*XhH zv{JS_TCCv&-{xJ105f}Xrfn5Vn}J9%VYgj9QTEL-*Ow!Yfed10FAG|!Dwk-_(`TN> zL$&A&Z_`Q(Z;vwR#))Smw8RzK3YA%T;s8~TF@?dv1xuQBAz)7;eESK^5o|(tL0i0< zNfw@6Qj6H2-q2+IeL~8#IS^wAT1bPO_zNR)$$| z4)5j_*7)#|J~@%hsJIP%Cq70E_$+tJ))6yqbhtSJS50&&rQ9ts@xLwcA@MP$I~vCQ#x)<^S}CFsE~jPPT>} zf5=s{Q5Q|%YLG&YMhGz+qfspjG+|DiW!=}IxD%ltIRV(h6SpL&xKx=+DX75A6;Hbq zbU$pI!Q?k{aIEgqqr`qX3Am|^D=Fb0mxj}y)Q^kvR-zjjz4*R3f^HZJDM7G)XQ|D; zm7JY<%y0Yo#J-g;2fD{PUKZ3;S7JY(CNL+@?3fS10q*W&s8v)b!RVRn+64at;i|t9 zSLN#bvUU-^t^vtxB(pCg(5sRaa!M94C!%W;l5r2r!ObzMV@M%97_172u-n6O<_><7 zq6Iw;T~R@2E#2vGxEg1D0YH+&Ia+51w8(8nkcdfXf^lUp_7*dBmvJO~VlaZ*uyuPR zES4YG?k9P)n5e4UM(wV0; z(`#Kd{F6~|ppBF?PN{qvW23Xcb4FVcc^N4N#87ty1Lh6`YV*rO)k!!fkbi=DeimT` z5-#M7EtOg$l#cK-@Uq`x{*^LyZ$J5>q>xEWWX1|#30hzRJRA|;%wQ56LSo*UH@ou3 z7*S*H7H3htrxZqCR+m_yCScEXk1*9>`k@l{B`!=)sB@lsoG?Vy4BjdnD_F7Dd64ES}H&%DR30 zGzQ}Wd;w*f>}WX1GK&nzlF!R~%0AWF_>A^`^=elo}^C_>(a9bgEYcuGr>5p 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

;Y5=PEKam?(L+vukz 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 literal 0 HcmV?d00001 diff --git a/device/eTSWlan/screenshots/device/password.png b/device/eTSWlan/screenshots/device/password.png new file mode 100644 index 0000000000000000000000000000000000000000..a5c8b4fee5109a1858eb211fcbea178596ed18c8 GIT binary patch literal 39665 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 VeNnx%#nXB{~y@|%vb;b literal 0 HcmV?d00001 diff --git a/device/eTSWlan/settings.gradle b/device/eTSWlan/settings.gradle new file mode 100644 index 0000000000..4773db7323 --- /dev/null +++ b/device/eTSWlan/settings.gradle @@ -0,0 +1 @@ +include ':entry' -- Gitee From c3d4702960acab613f3c3c95e43287f4406dd6b6 Mon Sep 17 00:00:00 2001 From: guojin26 Date: Fri, 28 Jan 2022 16:48:26 +0800 Subject: [PATCH 2/4] update code Signed-off-by: guojin26 --- device/eTSWlan/README_zh.md | 2 +- .../MainAbility/component/availableWiFi.ets | 15 +++++----- .../ets/MainAbility/component/pswDialog.ets | 15 +++++----- .../main/ets/MainAbility/model/wifiModel.ets | 28 +++++++++++-------- .../src/main/ets/MainAbility/pages/about.ets | 16 +++++------ .../src/main/ets/MainAbility/pages/index.ets | 6 ++-- 6 files changed, 45 insertions(+), 37 deletions(-) diff --git a/device/eTSWlan/README_zh.md b/device/eTSWlan/README_zh.md index 5327f43c7d..d7d269916a 100644 --- a/device/eTSWlan/README_zh.md +++ b/device/eTSWlan/README_zh.md @@ -1,4 +1,4 @@ -# WLAN +# 网络与连接-WLAN diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/component/availableWiFi.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/component/availableWiFi.ets index 584bb2e2fd..bc4899ae3d 100644 --- a/device/eTSWlan/entry/src/main/ets/MainAbility/component/availableWiFi.ets +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/component/availableWiFi.ets @@ -14,9 +14,9 @@ */ import prompt from '@system.prompt' -import {WiFiModel} from '../model/wifiModel' -import {WiFiView} from '../component/wifiView' -import {PasswordDialog} from '../component/pswDialog' +import { WiFiModel } from '../model/wifiModel' +import { WiFiView } from '../component/wifiView' +import { PasswordDialog } from '../component/pswDialog' const TAG = '[AvailableWiFi]' let self = null @@ -43,12 +43,13 @@ export struct AvailableWiFi { build() { Column() { - Row(){ + Row() { Text($r('app.string.available_wlan')) .fontSize(22) .layoutWeight(1) } .width('95%') + List() { ForEach(this.wifiList, (item, index) => { ListItem() { @@ -61,8 +62,8 @@ export struct AvailableWiFi { prompt.showToast({ message: 'this wifi is connected' }) return } - if(item.securityType === 0 || item.securityType === 1) { - this.wifiModel.connectNetwork(item,'') + if (item.securityType === 0 || item.securityType === 1) { + this.wifiModel.connectNetwork(item, '') return } this.pswDialogController.open() @@ -73,6 +74,6 @@ export struct AvailableWiFi { .divider({ strokeWidth: 1, color: Color.Gray, startMargin: 10, endMargin: 10 }) .margin(10) } - .margin({top:15}) + .margin({ top: 15 }) } } \ No newline at end of file diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/component/pswDialog.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/component/pswDialog.ets index 1c8af7b688..efdfd8f975 100644 --- a/device/eTSWlan/entry/src/main/ets/MainAbility/component/pswDialog.ets +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/component/pswDialog.ets @@ -14,13 +14,14 @@ */ @CustomDialog -export struct PasswordDialog{ +export struct PasswordDialog { private scanInfo: any = null - private psw:string = '' + private psw: string = '' private controller: CustomDialogController - private action: (scanInfo,psw ) => void - build(){ - Column(){ + private action: (scanInfo, psw) => void + + build() { + Column() { Text(this.scanInfo.ssid) .fontSize(20) .width('95%') @@ -28,7 +29,7 @@ export struct PasswordDialog{ .type(InputType.Password) .placeholderColor(Color.Gray) .fontSize(19) - .margin({top:15}) + .margin({ top: 15 }) .width('95%') .onChange((value: string) => { this.psw = value @@ -44,7 +45,7 @@ export struct PasswordDialog{ .margin(5) .onClick(() => { this.controller.close() - this.action(this.scanInfo,this.psw) + this.action(this.scanInfo, this.psw) }) Text() diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/model/wifiModel.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/model/wifiModel.ets index 420afcf7c1..494acb0150 100644 --- a/device/eTSWlan/entry/src/main/ets/MainAbility/model/wifiModel.ets +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/model/wifiModel.ets @@ -65,7 +65,7 @@ export class WiFiModel { } connectNetwork(scanInfo, psw) { - prompt.showToast({ message: 'connecting'}) + prompt.showToast({ message: 'connecting' }) console.info(`${TAG} connectNetwork bssid=${scanInfo.bssid}`) let deviceConfigs = wifi.getDeviceConfigs() console.info(TAG + 'getDeviceConfigs:' + JSON.stringify(deviceConfigs)) @@ -87,20 +87,20 @@ export class WiFiModel { securityType: scanInfo.securityType } if (wifi.connectToDevice(deviceConfig)) { - prompt.showToast({ message: 'connect success'}) + prompt.showToast({ message: 'connect success' }) wifi.addDeviceConfig(deviceConfig) - }else{ - prompt.showToast({ message: 'connect fail'}) + } else { + prompt.showToast({ message: 'connect fail' }) } } - resolveIP(ip){ - let address:string = ip.toString() - if(address === '0'){ + resolveIP(ip) { + let address: string = ip.toString() + if (address === '0') { return '00:00:000:000' } - address.substring(0,2) - return `${address.substring(0,2)}:${address.substring(2,4)}:${address.substring(4,7)}:${address.substring(7,10)}` + address.substring(0, 2) + return `${address.substring(0, 2)}:${address.substring(2, 4)}:${address.substring(4, 7)}:${address.substring(7, 10)}` } getIpInfo() { @@ -126,9 +126,15 @@ export class WiFiModel { getFeatureSupport() { let featureSupportedList = [] - featureSupportedList.push({ key: $r('app.string.infrastructure_feature'), value: wifi.isFeatureSupported(0x0001).toString() }) + featureSupportedList.push({ + key: $r('app.string.infrastructure_feature'), + value: wifi.isFeatureSupported(0x0001).toString() + }) featureSupportedList.push({ key: $r('app.string.ghz_feature'), value: wifi.isFeatureSupported(0x0002).toString() }) - featureSupportedList.push({ key: $r('app.string.gas_anqp_feature'), value: wifi.isFeatureSupported(0x0004).toString() }) + featureSupportedList.push({ + key: $r('app.string.gas_anqp_feature'), + value: wifi.isFeatureSupported(0x0004).toString() + }) featureSupportedList.push({ key: $r('app.string.wifi_direct'), value: wifi.isFeatureSupported(0x0008).toString() }) featureSupportedList.push({ key: $r('app.string.soft_ap'), value: wifi.isFeatureSupported(0x0010).toString() }) featureSupportedList.push({ key: $r('app.string.wifi_aware'), value: wifi.isFeatureSupported(0x0040).toString() }) diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/pages/about.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/pages/about.ets index 83ef5ca22c..015ae94257 100644 --- a/device/eTSWlan/entry/src/main/ets/MainAbility/pages/about.ets +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/pages/about.ets @@ -14,21 +14,21 @@ */ import router from '@system.router' -import {WiFiModel} from '../model/wifiModel' -import {InfoView} from '../component/infoView.ets' +import { WiFiModel } from '../model/wifiModel' +import { InfoView } from '../component/infoView.ets' @Entry @Component struct About { - private wifiModel:WiFiModel = new WiFiModel() + private wifiModel: WiFiModel = new WiFiModel() build() { Column() { Row() { Image($r('app.media.ic_back')) - .size({width:50,height:'100%'}) + .size({ width: 50, height: '100%' }) .objectFit(ImageFit.Contain) - .onClick(()=>{ + .onClick(() => { router.back() }) Text($r('app.string.about')) @@ -37,12 +37,12 @@ struct About { .layoutWeight(1) } .width('100%').height('8%') - .constraintSize({minHeight:50}) + .constraintSize({ minHeight: 50 }) .backgroundColor('#0D9FFB') Scroll() { - Column(){ - InfoView({ infoList: this.wifiModel.getIpInfo()}) + Column() { + InfoView({ infoList: this.wifiModel.getIpInfo() }) InfoView({ infoList: this.wifiModel.getCountryCode() }) InfoView({ infoList: this.wifiModel.getFeatureSupport() }) } diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/pages/index.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/pages/index.ets index e6cd533397..97715de4ed 100644 --- a/device/eTSWlan/entry/src/main/ets/MainAbility/pages/index.ets +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/pages/index.ets @@ -14,9 +14,9 @@ */ import wifi from '@ohos.wifi'; -import {WiFiModel} from '../model/wifiModel' -import {TitleBar} from '../component/titleBar' -import {AvailableWiFi} from '../component/availableWiFi' +import { WiFiModel } from '../model/wifiModel' +import { TitleBar } from '../component/titleBar' +import { AvailableWiFi } from '../component/availableWiFi' const TAG = '[eTSWiFi]' let self = null -- Gitee From 36d6f1f08383f79e614f06be40b958548b995e29 Mon Sep 17 00:00:00 2001 From: guojin26 Date: Sat, 29 Jan 2022 09:02:46 +0800 Subject: [PATCH 3/4] update Signed-off-by: guojin26 --- device/eTSWlan/README_zh.md | 1 + .../component/{availableWiFi.ets => availableWifi.ets} | 10 +++++----- .../src/main/ets/MainAbility/component/titleBar.ets | 2 +- .../src/main/ets/MainAbility/component/wifiView.ets | 2 +- .../entry/src/main/ets/MainAbility/model/wifiModel.ets | 2 +- .../entry/src/main/ets/MainAbility/pages/about.ets | 4 ++-- .../entry/src/main/ets/MainAbility/pages/index.ets | 10 +++++----- 7 files changed, 16 insertions(+), 15 deletions(-) rename device/eTSWlan/entry/src/main/ets/MainAbility/component/{availableWiFi.ets => availableWifi.ets} (91%) diff --git a/device/eTSWlan/README_zh.md b/device/eTSWlan/README_zh.md index d7d269916a..8fb62fdd1d 100644 --- a/device/eTSWlan/README_zh.md +++ b/device/eTSWlan/README_zh.md @@ -19,3 +19,4 @@ ### 约束与限制 1、本示例仅支持标准系统上运行。 + diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/component/availableWiFi.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/component/availableWifi.ets similarity index 91% rename from device/eTSWlan/entry/src/main/ets/MainAbility/component/availableWiFi.ets rename to device/eTSWlan/entry/src/main/ets/MainAbility/component/availableWifi.ets index bc4899ae3d..d20e3b6135 100644 --- a/device/eTSWlan/entry/src/main/ets/MainAbility/component/availableWiFi.ets +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/component/availableWifi.ets @@ -14,16 +14,16 @@ */ import prompt from '@system.prompt' -import { WiFiModel } from '../model/wifiModel' -import { WiFiView } from '../component/wifiView' +import { WifiModel } from '../model/wifiModel' +import { WifiView } from '../component/wifiView' import { PasswordDialog } from '../component/pswDialog' const TAG = '[AvailableWiFi]' let self = null @Component -export struct AvailableWiFi { - private wifiModel = new WiFiModel() +export struct AvailableWifi { + private wifiModel = new WifiModel() @State wifiList: Array = [] private linkedInfo: any = null private selectIndex: number = -1 @@ -53,7 +53,7 @@ export struct AvailableWiFi { List() { ForEach(this.wifiList, (item, index) => { ListItem() { - WiFiView({ wifi: item }) + WifiView({ wifi: item }) } .onClick(() => { console.info(TAG + 'connect wifi') diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/component/titleBar.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/component/titleBar.ets index 76f0c0d62d..cd91e1db06 100644 --- a/device/eTSWlan/entry/src/main/ets/MainAbility/component/titleBar.ets +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/component/titleBar.ets @@ -18,7 +18,7 @@ import router from '@system.router'; export struct TitleBar { build() { Row() { - Text($r("app.string.entry_MainAbility")) + Text($r('app.string.entry_MainAbility')) .fontColor(Color.White) .fontSize(25) .layoutWeight(1) diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/component/wifiView.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/component/wifiView.ets index b5c7ff8097..bc36928659 100644 --- a/device/eTSWlan/entry/src/main/ets/MainAbility/component/wifiView.ets +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/component/wifiView.ets @@ -14,7 +14,7 @@ */ @Component -export struct WiFiView { +export struct WifiView { private wifi: any = null private securityString: Resource = $r('app.string.encryption') @State isLock: boolean = true diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/model/wifiModel.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/model/wifiModel.ets index 494acb0150..44bee75aa7 100644 --- a/device/eTSWlan/entry/src/main/ets/MainAbility/model/wifiModel.ets +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/model/wifiModel.ets @@ -18,7 +18,7 @@ import prompt from '@system.prompt'; const TAG = '[WiFiModel]' -export class WiFiModel { +export class WifiModel { private eventListener = null constructor() { diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/pages/about.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/pages/about.ets index 015ae94257..8b2e394955 100644 --- a/device/eTSWlan/entry/src/main/ets/MainAbility/pages/about.ets +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/pages/about.ets @@ -14,13 +14,13 @@ */ import router from '@system.router' -import { WiFiModel } from '../model/wifiModel' +import { WifiModel } from '../model/wifiModel' import { InfoView } from '../component/infoView.ets' @Entry @Component struct About { - private wifiModel: WiFiModel = new WiFiModel() + private wifiModel: WifiModel = new WifiModel() build() { Column() { diff --git a/device/eTSWlan/entry/src/main/ets/MainAbility/pages/index.ets b/device/eTSWlan/entry/src/main/ets/MainAbility/pages/index.ets index 97715de4ed..7f7086cb37 100644 --- a/device/eTSWlan/entry/src/main/ets/MainAbility/pages/index.ets +++ b/device/eTSWlan/entry/src/main/ets/MainAbility/pages/index.ets @@ -14,9 +14,9 @@ */ import wifi from '@ohos.wifi'; -import { WiFiModel } from '../model/wifiModel' +import { WifiModel } from '../model/wifiModel' import { TitleBar } from '../component/titleBar' -import { AvailableWiFi } from '../component/availableWiFi' +import { AvailableWifi } from '../component/availableWifi' const TAG = '[eTSWiFi]' let self = null @@ -24,7 +24,7 @@ let self = null @Entry @Component struct Index { - private wifiModel: WiFiModel = new WiFiModel() + private wifiModel: WifiModel = new WifiModel() private linkedInfo: any = { ssid: "", bssid: "", networkId: 0, rssi: 0, band: 0 } @State wifiList: Array = [] @State isLinked: boolean = false @@ -45,7 +45,7 @@ struct Index { getLinkedInfo() { wifi.getLinkedInfo((linkedInfo) => { - console.info(`${TAG} linkedInfo' ${JSON.stringify(linkedInfo)}`) + console.info(`${TAG} linkedInfo ${JSON.stringify(linkedInfo)}`) if (linkedInfo === null) { self.isLinked = false self.linkedInfo = { ssid: "", bssid: "", networkId: 0, rssi: 0, band: 0 } @@ -133,7 +133,7 @@ struct Index { .border({ radius: 15, color: Color.Gray, width: 1 }) .backgroundColor(Color.White) } - AvailableWiFi({ wifiList: this.wifiList, linkedInfo: this.linkedInfo }) + AvailableWifi({ wifiList: this.wifiList, linkedInfo: this.linkedInfo }) } .size({ width: '100%', height: '100%' }) .backgroundColor('#F5F5F5') -- Gitee From 13784a2b3595835909e55e667a6de0d549a1805b Mon Sep 17 00:00:00 2001 From: guojin26 Date: Sat, 29 Jan 2022 09:07:56 +0800 Subject: [PATCH 4/4] update Signed-off-by: guojin26 --- device/eTSWlan/README_zh.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/device/eTSWlan/README_zh.md b/device/eTSWlan/README_zh.md index 8fb62fdd1d..866aff96af 100644 --- a/device/eTSWlan/README_zh.md +++ b/device/eTSWlan/README_zh.md @@ -1,7 +1,5 @@ # 网络与连接-WLAN - - ### 简介 本示例展示了在eTS中WLAN的基本使用,包括禁用和启用WLAN、WLAN扫描和获取扫描结果、WLAN状态监听、WiFi连接状态监听、获取IP信息、获取国家码、判断设备是否支持WLAN相关特性。 -- Gitee