TaifunWiFi 拓展:WiFi Manager WiFi管理器扩展

« 返回首页

« 返回扩展首页

TaifunWiFi 拓展:WiFi Manager WiFi管理器扩展

在无线局域网中使用的功能块。

  • .aix 拓展下载:

com.puravidaapps.TaifunWiFi.aix

  • demo程序下载:

TestWifi.aia

开发动机

WiFi Manager扩展为App Inventor开发者提供了完整的WiFi网络管理功能,包括WiFi状态控制、网络扫描、连接管理和详细信息查询。该扩展经过多年发展,支持从基础WiFi操作到高级网络建议API的各种功能。

功能概述

WiFi Manager扩展提供以下核心功能:

  • WiFi状态控制(启用/禁用WiFi)
  • 网络信息查询(SSID、BSSID、IP地址等)
  • 可用网络扫描
  • 网络连接管理
  • 信号强度检测
  • 5GHz频段支持检测
  • DNS服务器查询
  • 位置权限管理
  • 网络建议API支持

扩展截图

属性

SuppressSuccessMessage 抑制成功消息
获取或设置是否抑制成功消息显示。当设置为true时,将不显示操作成功的提示消息。

方法

GetSuppressSuccessMessage 获取抑制成功消息()
返回是否抑制成功消息的设置状态。
SetSuppressSuccessMessage 设置抑制成功消息(抑制)
设置是否抑制成功消息显示。true为抑制,false为显示。
LocalIP 本地IP地址()
返回本地IP地址。如果WiFi启用则返回WiFi IP,否则返回蜂窝网络IP。
LocalIP方法积木
IsEnabled 是否启用()
获取当前WiFi状态:true为启用,false为禁用。
IsEnabled方法积木
Enable 启用WiFi()
启用WiFi。可以通过设置suppressSuccessMessage属性为false来隐藏成功消息。
Enable方法积木
注意:从Android 10开始,无法以编程方式启用WiFi,因此将为用户提供对话框。
Disable 禁用WiFi()
禁用WiFi。可以通过设置suppressSuccessMessage属性为false来隐藏成功消息。
Disable方法积木
注意:从Android 10开始,无法以编程方式禁用WiFi,因此将为用户提供对话框。
SSID 服务集标识符()
获取当前WiFi SSID(服务集标识符)。
SSID方法积木
注意:使用此方法的前提是授予位置权限并且GPS必须启用。
BSSID 基本服务集标识符()
获取当前WiFi BSSID(接入点的MAC地址)。
BSSID方法积木
注意:使用此方法的前提是授予位置权限并且GPS必须启用。
AvailableSSIDs 可用网络列表()
获取可用SSID(服务集标识符)列表。WiFi必须启用才能使用此功能。
AvailableSSIDs方法积木
注意:使用此方法的前提是授予位置权限并且GPS必须启用。
重要:Android将变得越来越受限。在未来的Android版本中,AvailableSSIDs方法将停止工作。
ConnectionInfo 连接信息()
获取当前连接信息。详情请参考Android WiFiInfo文档。
ConnectionInfo方法积木
Is5GHzBandSupported 支持5GHz频段()
检查是否支持5GHz频段。返回true或false。
Is5GHzBandSupported方法积木
SignalStrength 信号强度()
获取信号强度(RSSI),范围在0到100之间。
SignalStrength方法积木
AccessPointIP 接入点IP()
获取接入点的IP地址。
Dnsservers DNS服务器()
返回当前网络的DNS服务器列表(主服务器和辅助服务器)。
Dnsservers方法积木
注意:当路由器内未配置DNS时,方法返回网关路由器的IP地址。
ApiLevel API级别()
返回当前设备的Android API级别。
ApiLevel方法积木
ConnectSSID 连接网络(SSID,密码)
连接到指定的SSID(服务集标识符)。适用于Android >= 10。
ConnectSSID方法积木
使用新的点对点API来引导配置辅助设备,该API从Android 10开始可用。此API需要WRITE_SETTINGS权限。
DisconnectSSID 断开连接()
断开当前WiFi连接。
HaveSystemWritePermission 拥有系统写入权限()
检查应用是否拥有系统写入权限。
IsGpsEnabled GPS是否启用()
检查设备GPS是否启用。
IsLocationPermissionGranted 位置权限是否授予()
检查应用是否被授予位置权限。
RequestLocationPermission 请求位置权限()
请求位置权限。
AddNetworkSuggestion 添加网络建议(SSID,密码)
添加网络建议(Network Suggestion API)。
RemoveNetworkSuggestion 移除网络建议(SSID)
移除网络建议。
GetAllNetworkSuggestions 获取所有网络建议()
获取所有网络建议。
SecurityType 安全类型()
获取当前连接网络的安全类型。
NetworkAvailable 网络可用()
检查网络是否可用。

事件

GotAvailableSSIDs 获取可用网络(可用网络列表,最佳网络,对应信号强度,对应BSSID列表)
指示已扫描到可用SSID(服务集标识符)的事件。
GotAvailableSSIDs事件积木
参数提供:
  • availableSSIDs:可用SSID列表
  • bestSSID:信号最好的SSID
  • correspondingRSSI:对应的信号强度列表
  • correspondingBSSI:对应的BSSID列表
AfterWifiNegotiation WiFi协商完成(SSID,成功)
WiFi连接协商完成时触发。
ErrorOccurred 错误发生(错误信息)
当操作发生错误时触发,替换了之前的suppressWarning属性。
ErrorOccurred事件积木

使用示例

基本WiFi状态检查

when Button1.Click() {
  TaifunWiFi1.ConnectSSID("HomeNetwork", "password")
}

when TaifunWiFi1.AfterWifiNegotiation(successful) {
  Label1.Text = join("连接结果:", successful)
}

扫描可用网络

when Button1.Click() {
  TaifunWiFi1.ConnectSSID("HomeNetwork", "password")
}

when TaifunWiFi1.AfterWifiNegotiation(successful) {
  Label1.Text = join("连接结果:", successful)
}

连接到WiFi网络

when Button1.Click() {
  TaifunWiFi1.ConnectSSID("HomeNetwork", "password")
}

when TaifunWiFi1.AfterWifiNegotiation(successful) {
  Label1.Text = join("连接结果:", successful)
}

获取网络详细信息

when Button1.Click() {
  TaifunWiFi1.ConnectSSID("HomeNetwork", "password")
}

when TaifunWiFi1.AfterWifiNegotiation(successful) {
  Label1.Text = join("连接结果:", successful)
}

错误处理

when Button1.Click() {
  TaifunWiFi1.ConnectSSID("HomeNetwork", "password")
}

when TaifunWiFi1.AfterWifiNegotiation(successful) {
  Label1.Text = join("连接结果:", successful)
}

应用场景

1. 网络管理应用

创建完整的WiFi管理工具,帮助用户查看、连接和管理WiFi网络:

when Button1.Click() {
  TaifunWiFi1.ConnectSSID("HomeNetwork", "password")
}

when TaifunWiFi1.AfterWifiNegotiation(successful) {
  Label1.Text = join("连接结果:", successful)
}

2. 智能家居控制

自动连接到家庭WiFi网络并控制智能设备:

when Button1.Click() {
  TaifunWiFi1.ConnectSSID("HomeNetwork", "password")
}

when TaifunWiFi1.AfterWifiNegotiation(successful) {
  Label1.Text = join("连接结果:", successful)
}

3. 网络诊断工具

检查网络连接质量和问题诊断:

when Button1.Click() {
  TaifunWiFi1.ConnectSSID("HomeNetwork", "password")
}

when TaifunWiFi1.AfterWifiNegotiation(successful) {
  Label1.Text = join("连接结果:", successful)
}

4. 企业网络管理

企业环境下的网络连接管理和监控:

when Button1.Click() {
  TaifunWiFi1.ConnectSSID("HomeNetwork", "password")
}

when TaifunWiFi1.AfterWifiNegotiation(successful) {
  Label1.Text = join("连接结果:", successful)
}

技术说明

权限要求

WiFi扩展需要以下权限:

  • ACCESS_WIFI_STATE: 访问WiFi状态
  • CHANGE_WIFI_STATE: 修改WiFi状态
  • ACCESS_FINE_LOCATION: 精确位置权限(用于网络扫描)
  • ACCESS_NETWORK_STATE: 访问网络状态
  • WRITE_SETTINGS: 系统设置权限(Android >= 10连接功能)
  • ACCESS_COARSE_LOCATION: 粗略位置权限

Android版本兼容性

Android版本 功能支持 注意事项
< 6.0 完整支持 无特殊限制
6.0-9.0 基本支持 需要动态权限请求
>= 10.0 受限支持 无法编程启用/禁用WiFi,使用网络建议API
>= 11.0 严格限制 网络扫描功能可能受限

网络扫描限制

从Android 9开始,WiFi扫描受到以下限制:

  • 每个前台应用可以在2分钟内扫描4次
  • 后台应用扫描次数更少
  • 需要位置权限和GPS启用

网络建议API(Android >= 10)

对于Android 10及以上版本,使用Network Suggestion API:

  • 不再需要系统权限即可建议网络
  • 用户可以明确接受或拒绝建议
  • 提供更好的用户体验和安全性

最佳实践

  1. 权限管理: 始终检查并请求必要的权限
  2. 错误处理: 实现完整的错误处理机制
  3. 用户反馈: 提供清晰的状态信息和用户指导
  4. 性能优化: 避免频繁的网络扫描操作
  5. 版本适配: 根据Android版本提供不同的功能
  6. 安全性: 妥善处理WiFi密码等敏感信息

故障排除

常见问题

Q: WiFi扫描返回空列表? A: 检查位置权限是否已授予,GPS是否启用,WiFi是否开启。

Q: 无法连接到WiFi网络? A: 确认网络名称和密码正确,检查网络是否在范围内,对于Android >= 10需要使用网络建议API。

Q: 获取SSID失败? A: 确保应用已连接到WiFi,位置权限已授予,GPS已启用。

Q: Enable/Disable方法无效? A: 从Android 10开始,无法编程控制WiFi开关,系统会显示用户对话框。

Q: 网络扫描功能不工作? A: 这可能是由于Android版本限制,新版本Android对网络扫描有严格限制。


本文档基于TaifunWiFi扩展的PuraVidaApps页面信息整理,更多信息请参考原始页面


版权信息

本文档内容依据原作者发布页面整理翻译,版权归原作者所有。

  • 原作者:Taifun(puravidaapps)
  • 原始网址:https://puravidaapps.com/wifi.php
文档反馈