首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android:如何在特定主机上使用Wifi网络,但让手机在其他方面使用移动网络

Android:如何在特定主机上使用Wifi网络,但让手机在其他方面使用移动网络
EN

Stack Overflow用户
提问于 2014-09-13 08:53:47
回答 3查看 4.6K关注 0票数 23

我正在开发一个移动应用程序(iOS和安卓),通过Wi-Fi控制设备。设备创建了无线网络(SoftAP),但不提供对互联网的访问。

在iOS上,我可以连接到设备并向其IP地址(192.168.70.1)发出请求,但所有其他请求都会回退到移动网络。这允许电话在通过Wi-Fi连接到设备的同时保持互联网连接。

在Android上,如果我连接到设备的无线网络,互联网请求不会退回到移动连接,它们只是失败。

在我的安卓应用程序中,我可以使用ConnectivityManager.requestRouteToHost来强制我的应用程序的请求使用移动网络。然而,其他应用程序发出的请求仍然使用设备的wifi网络并失败。

我还尝试使用ConnectivityManager通过以下方式更改网络首选项:

ConnectivityManager.setNetworkPreference(ConnectivityManager.TYPE_MOBILE)

这会使电话对来自所有应用程序的所有请求使用移动网络。Wi-Fi已禁用。似乎在以前的安卓版本中,Wi-Fi仍然可以使用,即使它不是“首选”的网络,但这似乎不适用于KitKat。这可能与Android4.2的变化有关:https://code.google.com/p/android/issues/detail?id=73509 "ConnectivityManager自4.2撕毁了不是NetworkPreference的网络“

有没有一种解决方案,允许Android应用程序对特定的IP地址使用Wi-Fi,对其他所有内容使用移动网络?也许这可以通过NDK来完成?

EN

回答 3

Stack Overflow用户

发布于 2014-11-26 00:50:34

实际上你可以,但只能从棒棒糖(API 21)开始。

在Android API 21文档中:

    Android 5.0 provides new multi-networking APIs that let your app dynamically scan for available
networks with specific capabilities, and establish a connection to them. This functionality is useful
when your app requires a specialized network, such as an SUPL, MMS, or carrier-billing network, or if
you want to send data using a particular type of transport protocol.

因此,您可以使用NetworkRequest.Builder类创建一个NetworkRequest,它通过某个Transport Type发送请求。

使用以下函数:

NetworkRequest.Builder addTransportType(int transportType)

为您的请求设置传输类型(例如WIFIETHERNETCELLULAR )。

票数 10
EN

Stack Overflow用户

发布于 2014-11-22 01:40:58

Android通常会删除那些不是网络偏好的网络。你可以使用的一个解决办法是通过移动应用程序创建一个AP,并让设备连接到它。以这种方式,移动设备可以保持互联网连接以及与设备通信。

有关实现的详细信息,请参阅以下链接:

https://github.com/opengarden/android-tether

https://code.google.com/p/android-wifi-tether/

票数 3
EN

Stack Overflow用户

发布于 2014-11-26 04:45:12

这可能是一个简单的解决方案:每次需要控制设备时,将WiFi设置为首选接口,并在完成工作后立即设置移动网络首选。这样做可能会中断并发的Internet活动,但请提醒,TCP和大多数应用程序允许延迟几秒钟(甚至更长)。如果设备的控制作业是零星的,并且从不需要长时间等待,则中断可以忽略不计。

如果上述情况不是这样,则执行相反的操作:将WiFi设置为首选接口作为默认接口,并在不需要控制设备时将移动网络设置为首选。但要确保你经常切换回移动网络,比如每3秒切换一次,以防止你的互联网活动超时。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25818810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档