我正在开发一个基于Raspberry Pi的物联网设备,它托管自己的WiFi AP(没有互联网),并已成功地遵循2016年的这篇Android开发者博客文章,从我的Android应用程序连接到它并路由流量到它,即使移动数据已启用(即通过
现在的问题是,我的Android 10设备(Google Pixel)在几分钟后会自动断开与网络的连接并切换到我的家庭WiFi网络(有互联网)。 这是在应用程序前台时,与运行在Pi上的服务器端应用程序保持活动Web套接字连接。
我可以通过在应用程序中侦听网络状态更改并通过
我另一个想法是使用
在没有网络访问的IoT WiFi网络上保持连接似乎是Android应用程序的合理用例,Google已经意识到这一点,但我正在努力整合2020年如何做到这一点的最佳实践。 我想知道是否可以通过较新的WiFi建议API来实现。 但是,这些听起来对应用程序开发人员更加限制,并且不提供有关实际加入的WiFi网络的任何保证。
Network#getSocketFactory
)。 (即,我没有遇到在这个问题中报告的问题:在Android M上,即使移动数据已连接,也可以通过WiFi发送请求(无连接))现在的问题是,我的Android 10设备(Google Pixel)在几分钟后会自动断开与网络的连接并切换到我的家庭WiFi网络(有互联网)。 这是在应用程序前台时,与运行在Pi上的服务器端应用程序保持活动Web套接字连接。
我可以通过在应用程序中侦听网络状态更改并通过
WifiManager#enableNetwork
强制重新连接到我的IoT网络来解决问题,但这似乎是一个hacky的解决方案,连接仍然会中断,导致用户体验差。我另一个想法是使用
WifiManager#disableNetwork
禁用所有其他配置的WiFi网络,从而防止手机连接到它们。 但是文档指出,禁用其他应用程序创建的网络是不允许的。在没有网络访问的IoT WiFi网络上保持连接似乎是Android应用程序的合理用例,Google已经意识到这一点,但我正在努力整合2020年如何做到这一点的最佳实践。 我想知道是否可以通过较新的WiFi建议API来实现。 但是,这些听起来对应用程序开发人员更加限制,并且不提供有关实际加入的WiFi网络的任何保证。
bindProcessToNetwork
而不是使用网络的socket工厂,正如建议的那样。不幸的是,结果还是一样的 - 即使在移动数据开启的情况下,它仍然可以连接成功,但安卓系统仍会在不到一分钟后切换回家庭WiFi网络。 - user1405990