当前位置: 首页 > news >正文

【Android学习-wifi局域网配网开发】

wifi局域网配网开发

  • 准备工作
  • 逻辑
  • 优化

如题,项目软件需要配网(wifi),每次现场安装都需要使用鼠标键盘进行配网的操作。影响安装效率,在参考市面上的大多数类似设备后,决定添加通过wifi热点进行局域网配网的功能。
为实现该功能,需要做一些准备工作

准备工作

  1. 权限

① 配网的功能需要使用到定位和wifi权限。
注意事项:不同的安卓版本需要的权限不同,博主是安卓14的版本,14-17应该差不多,安卓8等较低版本权限可能有所不同,可以问AI;定位权限只开放不启动就行

<!--网络基础权限--><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.INTERNET"/><!--WiFi扫描权限(Android10+--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES"android:usesPermissionFlags="neverForLocation"/>

②开关wifi需要系统级的权限,要么联系厂家拿系统签名,然后打包。要么找厂家要相关的jar/aar包,通过该包调用相应的api。没有系统权限的app打包了也无法正常使用wifi相关的功能

逻辑

由于大部分代码都是AI(ds,gpt,claude都用了)写的,因此只说明大致流程。下面是大概的功能描述

Android IoT 设备设计的 WiFi 配网库,实现了:

  • 零键鼠配网:通过 AP 热点 + Web 配网页面完成 WiFi 配置,无需键鼠/显示器
  • AP 热点常驻:AP 热点永久开启,方便随时访问配网服务
  • 双模式支持:WiFi 连接成功后自动尝试 AP+STA 双模式
  • Captive Portal:手机连接热点后自动弹窗进入配网页面
  • 状态监控:WiFi 断开自动恢复,AP 热点保持运行

获得权限后先判断设备是否已经连接wifi,是则无需开启热点相关的服务;否则通过开启局域网和热点服务,让用户通过手机等设备连接相应的wifi,然后找到wifi,输入密码。即可完成配网的操作

注意事项:配网的前端服务需要固定好ip和端口号,否则默认是动态的,如果不看日志就不知道ip和端口号是哪个了

优化

当前放置在项目中运行,暂时没有什么问题。实际遇到可以优化的就是关于wifi修改密码的问题,如果用户直接通过键鼠的方式强行修改过系统的wifi密码,并且是错误的,此时项目中的就失效了。系统输入的wifi密码权限如果没有系统签名的话会被拒绝
提示类似下图的信息,导致无法正常修改密码。该问题当前还在联系厂家

根本原因 :Android 10+ 限制应用只能修改自己创建的WiFi配置。用户在系统设置中输入错误密码后,配置由系统Settings创建,我们的app无权删除、修改或通过 connect() API 连接。

解决方案:使用 su 命令绕过权限限制,先忘记旧网络再连接。

/** * 使用 wpa_cli 命令连接WiFi(cmd wifi的后备方案) */privatestaticbooleanconnectWithWpaCli(Stringssid,Stringpassword){try{Processprocess=Runtime.getRuntime().exec("su");java.io.DataOutputStreamos=newjava.io.DataOutputStream(process.getOutputStream());// wpa_cli 命令序列os.writeBytes("wpa_cli add_network\n");// 等待add_network返回ID比较复杂,直接用一个固定的流程// 先remove所有匹配SSID的网络,再添加新的os.writeBytes("wpa_cli list_networks\n");if(password==null||password.isEmpty()){os.writeBytes("wpa_cli set_network 0 ssid '\""+ssid+"\"'\n");os.writeBytes("wpa_cli set_network 0 key_mgmt NONE\n");}else{os.writeBytes("wpa_cli set_network 0 ssid '\""+ssid+"\"'\n");os.writeBytes("wpa_cli set_network 0 psk '\""+password+"\"'\n");}os.writeBytes("wpa_cli enable_network 0\n");os.writeBytes("wpa_cli select_network 0\n");os.writeBytes("wpa_cli save_config\n");os.writeBytes("exit\n");os.flush();os.close();java.io.BufferedReaderreader=newjava.io.BufferedReader(newjava.io.InputStreamReader(process.getInputStream()));Stringline;while((line=reader.readLine())!=null){Log.i(TAG,"wpa_cli: "+line);}intresult=process.waitFor();Log.i(TAG,"wpa_cli 结果: "+result);returnresult==0;}catch(Exceptione){Log.e(TAG,"wpa_cli连接失败",e);returnfalse;}}
http://www.cnnetsun.cn/news/4011104.html

相关文章:

  • 北京企业官网网站建设哪家好:避坑指南与深度解析,教你选对合作伙伴不花冤枉钱
  • Keras ZeroPadding2D层详解:从核心原理到版本降级避坑指南
  • 重庆双福建设开发有限公司网站深度解析:如何解读其背后的城市发展与民生承诺
  • 深圳网站建设搜q479185700专业解答企业数字化转型中的那些坑与雷
  • 揭秘滨州正规网站建设哪家专业:从避坑指南到优质服务商的选择逻辑与深度解析
  • 信号与系统考研复习:从知识到解题的暑假逆袭规划
  • 禅城网站建设价格背后的真相与选择:企业如何避开报价陷阱拿到合理方案
  • 基于Claude Code的Agentic编码:上下文工程驱动复杂软件开发
  • 如何给自己建设的网站设置登陆用户名和密码:从零开始构建安全壁垒的实战指南
  • 为什么很多老板都夸滨州网站建设有实力?揭秘背后那些不为人知的真实故事
  • 漳州微网站建设公司哪家好:避坑指南与选型核心逻辑揭秘
  • 户县建设局网站:深度解析地方城市建设管理与民生服务的全景视窗
  • 数学建模竞赛实战:从路径规划到多约束优化,以“板凳龙”为例
  • 深入了解浙江省建设厅官方网站:获取权威政策解读与办事指南的终极指南
  • 清远城乡住房建设部网站如何助力百姓安居:从政策解读到民生保障的深度解析
  • 手机电子商务网站建设策划书:如何打造高转化率的移动端购物平台实战指南
  • 正则指引——常用语言中正则特性一览
  • 微信公众号跨主体迁移公证书线上办理实操指南:适用场景、材料规范、流程拆解与避坑汇总
  • 助力企业数字化转型与品牌赋能:商会网站建设方案书全方位解读与实施指南
  • Windows部署Snipe-IT:开源IT资产管理系统的实践指南
  • 南宁网站建设加王道下拉菜单如何实现企业官网转化率倍增的实战深度解析
  • 南宁网站建设推荐q479185700顶上企业官网如何打造高转化率landing页攻略
  • 微信聊天记录导出3种格式永久保存,我用一个开源工具留住了三年对话
  • 龙岗微网站建设指南:企业如何通过精细化运营在数字化浪潮中突围而出
  • 晋江网站建设价格全揭秘:从几千到几万,老板们到底该怎么选才不踩坑?
  • 揭秘大港油田建设官方网站:一站式获取最新工程建设资讯与透明化服务指南
  • 史先生 网站建设 如何帮助中小企业从0到1打造高转化企业官网
  • 新手必看万网网站建设教程:从域名注册到上线发布的完整实战指南
  • 网站安全建设的重要性:别等数据泄露才后悔莫及,揭秘网站安全建设的重要性
  • 都安网站建设怎么才好看又好用?本地商家必看的全攻略与避坑指南