android wifi连接

记住密码,第二次登录不必输入。
如果使用其他方式,可不可以。其实就是自己选择wifi。

********************

我根本没办法站在更高的维度去思考整个项目,认知也达不到,我很多的事情都不知道(信息不全),只知道派发的任务等等。做不到全局思考。
一对一的盒子,其实还是不要盒子更为方便使用。主攻互联网。
有盒子主攻电视信号与互联网。
本质上就是说其实屏幕中的板子(接收端)好像没有什么主要的作用。
还是感觉如果使用miracast在发送端,接收端都能自动启动,那么应该会更好。但是扫描到信号还需要连接啊,万一扫描到多个呢?怎么进行识别与连接呢?

所以,我这边主动连接也行,但是用apk作为连接盒子,接收信号的触发方式,是不是不太行啊。打开后必须打开软件进行连接,然后发送端发送信号。(好像非常的繁琐)
有什么解决方式呢?
确实连接wifi后记住密码,再次进入就直接登录是最好的。目前的问题就是记住密码也可以,但是再次连接需要确认,很麻烦。假如不需要确认就好了。
系统设置的wifi界面,可以记住密码,自动登录吗?想一想。(目前没有找到这种方式的可能性)

-----------------------------

如果用户不想先去打开wifi,那么怎么办,可以降低版本,用废弃的api试一试,最好能在应用程序中打开wifi,然后搜索过滤,然后弹出,然后输入密码连接,然后记住密码。下次进入直接连接。
目前不可以在程序内部打开wifi:那么就只能跳转过去先试试。可以跳转,但是不一会儿程序会退出是没有想到的。
打开wifi,然后跳回来进行连接可行吗?应该可,位置权限呢?

试一下,没有位置,可不可以找到wifi.答案是不可以。
###############################
那么可以这样,位置,wifi还是需要自己打开。然后筛选出来要的热点,提示用户去连接,连接成功后,后面再进去或者再打开wifi就会自动连接。
#######################

分析:
首先之前是两个界面,排除掉,还能避免多activity中socket的问题。
给你扫描,并且提示框,让你去填密码,然后去连接。(同一个界面完成)
分析:
第一个界面扫描那么多的wifi没有一点用处,而且还难看。只扫描到自己的zn812不就好了,然后就是去连接的问题。

在MainActivity中连接上wifi后,传递ip给PlayActivity,当时是想在playActivity中进行tcp连接,以便能进行按键操作。(猜测:按理来说,按照系统设置的那种方式应该是可以的。而wifiNetworkSpecifier那种方式可是需要进行绑定的)
#################目前的问题是使用wifiNetworkSpecifier虽然可以连接上,存储密码,但是每次进入还是需要点击一下确定,相当于就是还是需要一个点击连接的过程,而期望的是可以第一次连接后,以后再也不用点击连接了,这是最好的!!!

还有一种可能,需要的是进入之后自动连接,而一旦退出程序就需要将wifi连接进行断开。如果是这样的话,wifiSuggestion好像不能做到这样,还需进一步了解。假如真的用wifiSuggestion,那么就算返回也在连接着wifi,程序不接收数据了,那么假如外面的程序需要进行连接wifi网络进行看视频等操作呢?假如盒子联网,那么wifisuggestion也可以用。这样也挺好的。
假如盒子并没有联网,那么用户还需要将wifi网络切换,以便可以看视频。
总结:可以使用wifiSuggestion,但是会增加用户切换网络的操作。除非盒子可以联网。


需求:
输入一次密码后以后,再次进入不需要输入密码。而wifispecifier会进行提示,可不可以后台呢?
还有假如使用wifisuggestion,程序退出需要断开。
好了。也可以记住密码了。但是程序都退出了,wifi连接还在!这不是需要的,一旦退出,应该断开的。

#################################
思考:不知道那样可不可以,就按照wifiNetworkSpecifier与wifisuggestion结合的方式。??
WifiNetworkSpecifier 当程序关闭时,wifi会自动去连接。也就是系统级的不受控制。####
后来再次试了一下,发现原来一直是wifiSuggestion搞的鬼,其实WifiNetworkSpecifier 连接后,其实只要程序关闭了,连接就会断开!!!这是极好的,那么现在应该考虑的就是如何让他挂起的时候关闭,然后又进入程序的时候重新连接,但是不显示连接的提示确认框。
如何实现,当进去后再次进行连接?只能以后台的方式,不让看见了。


当使用wifiSuggestion是,发现也是这样,根本关不住连接。####只有第一次弹窗,接受建议并连接会有点慢。
当程序关闭后,连接仍然存在。除非你忘记网络,后面再次连接就不再弹窗了,而且系统不会再接收你的建议主动进行连接了()。(除非你重启wifi开关,或者重启设备)
假如你又忘记网络。只能再次重启wifi开关。
竟然关机后没打开程序的情况下自动连接!!!!
结论:只要你连接过一次,即使删除网络,只要wifi开关重新打开,还是能自动连接上。(等于系统替你这个app做主了)但是如果你的app被删除了,那么系统就不会连接了,因为app和网络连接是绑定的!!

---------------------

再次进入之后,由于数据清理掉了,所以导致还是会重新的扫描。不是数据的问题!!!!
可以在onStop中存储存,onRestart中读取,ondestroy中删除。   xxx
用户刚进入,那就扫描,显示一个框,假如扫描了多次呢?那就会显示多个框。是**扫描**的原因,还是遍历的问题?
现在的情况是,扫描多次,重复项显示一个提示框。
如果扫描1次,广播接收者可以知道,弹出一个框。
扫描到之后弹出框,关键就是她一直重复的扫描,导致多个提示框。
广播接收者一旦接收到之后,调用方法开始获取列表,所以可以在接收到的位置,获取列表的位置进行修改。
如何可以做到扫描到之后弹出一次框,那就是计数呗,再扫描到就不再弹出框了,就弹那一次!!!
应该是基本完成了,下面就是整合了。

----------------------------

官方文档的一些说明
*在android Q中,一旦应用程序被杀死,系统会自动断开我们通过WifiNetworkSpecifier连接的WiFi网络,并且没有办法阻止系统这样做。            很好,符合需求。
*如需触发与 Wi-Fi 网络的即时本地连接,请在标准 NetworkRequest 对象中使用 WifiNetworkSpecifier。
如需添加 Wi-Fi 网络以考虑为用户提供互联网访问权限,请使用 WifiNetworkSuggestion 对象。您可以通过分别调用 addNetworkSuggestions() 和 removeNetworkSuggestions() 来添加和移除自动连接网络选择对话框中显示的网络。这些方法不需要任何位置权限。
*一些电话 API、蓝牙 API 和 WLAN API 需要精确位置权限
如果您的应用以 Android 10 或更高版本为目标平台,则它必须具有 ACCESS_FINE_LOCATION 权限,才能使用 Wi-Fi API、Wi-Fi Aware API 或 Bluetooth API 中的多种方法。(https://developer.android.com/about/versions/10/privacy/changes?hl=zh-cn#enable-disable-wifi

存疑:我觉得gpt指的应该是WifiNetworkSuggestion

当你使用 WifiNetworkSpecifier 连接到一个Wi-Fi网络时,这个连接是由Android系统的网络建议(Network Suggestions)API管理的。根据Android的设计,这种连接方式旨在为应用程序提供一种方式来确保它们可以连接到Wi-Fi网络,同时还能够为用户提供更流畅的网络体验。但这也意味着,一旦连接到了Wi-Fi网络,即便应用程序关闭,或者用户手动关闭并重新打开Wi-Fi开关,系统可能仍会自动重连到该网络。
避免自动重连的方法有限,因为这种行为是由系统控制的。但是,你可以尝试以下几种方法来管理或绕过这种自动重连的行为:
移除网络建议:如果你的应用使用了网络建议API来推荐连接到特定的Wi-Fi网络,你可以在某个时机(例如,用户离开了相关的应用功能区域)调用移除网络建议的API,来取消之前的建议。这可能会减少系统自动重连到该网络的可能性。
监听Wi-Fi状态变化:你可以在你的应用中注册一个BroadcastReceiver来监听Wi-Fi开关的状态变化(WifiManager.WIFI_STATE_CHANGED_ACTION)。当你检测到Wi-Fi被关闭并重新打开时,你可以尝试编程地断开当前的Wi-Fi连接或做出其他适当的处理。
使用Device Policy Manager(仅限企业或管理员应用):如果你的应用具有设备管理员权限,你可以使用Device Policy Manager来更精确地控制Wi-Fi连接。不过,这通常仅适用于企业环境或特定的应用场景。
用户指导:虽然这不是一个技术解决方案,你可以在应用内提供指导,告知用户如果他们不希望自动重新连接到某个Wi-Fi网络,可以手动忘记该网络。这需要用户进入设备的Wi-Fi设置中操作,对于普通应用来说,可能不是最优的用户体验。
请注意,对Wi-Fi连接的管理权大部分掌握在系统和用户手中,应用程序能做的操作有限。上述方法可以在一定程度上帮助管理Wi-Fi连接行为,但可能无法完全避免系统的自动重连机制

也还行,可以参考的:

Android wifiz自动连接 自动切换 适配 Android 10 api 29 失败问题_.getconfigurednetworks();报错-CSDN博客


android低版本解决方案:

Android:WiFi连接之一_android studio 获取wif连接密码-CSDN博客

android高版本解决方案:

Android Q - Connect wifi without approval - Stack Overflow

安卓Q10接入网络WifiNetworkSpecifier-腾讯云开发者社区-腾讯云 (tencent.com)

android - WifiNetworkSpecifier 绕过用户选择 - IT工具网 (coder.work)

Android 10+ Wifi连接(一) - 掘金 (juejin.cn)

Android WIFI(二)连接WIFI - 掘金 (juejin.cn)

wifiSuggestion与WifiSpecifier结合,可能有用:

android WifiNetworkSpecifier 热点_mob64ca12db3721的技术博客_51CTO博客

wifi网络连接速度的问题:####

用 WifiManager 代码连接热点的一些坑_wifinetworksuggestion-CSDN博客

2024.4.26:可能有用

https://www.jianshu.com/p/6fa0f1f1ce48
https://www.jianshu.com/p/c415691b282c

  • 31
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值