我可以在Android上同时打开Wi-Fi和蜂窝网络接口吗?

我正在开发一款可以在手机上运行的应用程序,该手机将成为私人Wi-Fi网络上的一个电台。 电话将是电台,而不是接入点,私人Wi-Fi网络不会路由到互联网。 我的应用程序需要与Internet上的服务器以及本地Wi-Fi网络上的设备进行通信,因此需要在两个网络上同时进行连接。 我一直试图弄清楚如何做到这一点。

我一直在尝试谷歌Android开发者小组讨论中描述的技术,题为“Android 2.X可以同时连接到3G和Wifi数据网吗?”,但它运行不佳。 我发现,当我通过调用ConnectivityManager.setNetworkPreference(ConnectivityManager.TYPE_MOBILE)启用蜂窝网络时,我在Wi-Fi网络上打开的任何套接字都将关闭。 我没有尝试过,但我怀疑当我切换回Wi-Fi时蜂窝网络上的sockets会发生同样的事情。

另一个问题是,这些呼叫在全球范围内运行,改变了整个电话的网络设置,而不仅仅是应用程序。 像这样在全球范围内切换网络设置会干扰恰好在手机上运行的任何其他应用程序。 即使我的应用程序退出后,手机仍会继续运行它设置的最后一个网络配置。

我正在寻找一种方法,同时在蜂窝数据和Wi-Fi网络上打开连接,而不会干扰手机上运行的其他应用程序。

1.有谁知道怎么做?
2.有人知道这是否可行?

谢谢你的帮助。

Solutions Collecting From Web of "我可以在Android上同时打开Wi-Fi和蜂窝网络接口吗?"

这个线程Android:通过无线电与WiFi发送的强制数据提到了两种可能的问题解决方法。

  1. 只要您希望应用使用特定连接,请设置网络首选项:

     ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); cm.setNetworkPreference(ConnectivityManager.TYPE_MOBILE); 
  2. 启用高优先级移动数据连接:

     connectivityManager.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, "enableHIPRI"); 

对于第二种方法,它特别声明它适用于Android 2.2,不知道这是否也适用于实际版本。 但是据我enableHIPRIenableHIPRI是一个隐藏的网络设置,所以如果可能的话我更喜欢第一种方法。

如果您无法使用API​​调用,并且如果您愿意接受较低级别的操作,那么一些Linux知识可能会有所帮助。 基本上你要做的就是调出两个接口并在3g接口上设置默认路由。 您必须使用具有root权限的系统命令来执行此类任务。 由于API调用,关闭套接字的原因可能是再次向下和向上的接口。

没有root访问权限,应用程序不会有太大影响。

使用Android API,你最多可以做的就是打开WiFi,希望设备切换到它并关闭WiFi以使设备切换到3G(如果它在那里,APN是正确的等等)。

其他任何东西都不能保证有效。 例如,设置首选连接types并不能保证设备将切换到该types。

通常的行为是,只要WiFi可用,设备将同时启用3G和WiFi短时间(3-5秒),然后关闭3G。 一旦用户或您的应用关闭WiFi,并且设备尝试连接到互联网,它将在一段时间后打开3G。

从Android 2.3开始,您无法再禁用/启用3G。 一个用于破坏/恢复APN设置以启用/禁用3G,但从4.0开始,您无法以编程方式更改APN设置。

我认为一次只能提供一项服务。 您可以使用WiFi,也可以使用Cellular 3G Data。 两者都不能同时工作。

3G和Wifi数据网络不能同时连接,但如果运营商支持和Android框架也为运营商改变,则3G和Wifi可以同时连接。 现在一些运营商已经有了这个function,但有些运营商不能

目前在Android App中无法同时使用两个网络,但您可以在PC中执行此操作。
从WIFI路由器连接一个,从LAN或USB Internet Stick连接一个。
因此,创建APp并在PC上使用。 如果您不知道如何在PC上运行Android而不是谷歌。

如果我没弄错的话,如果Wi-Fi和3G / 4G都可用,Wi-Fi将优先考虑。

只有当Wi-Fi不可用时,它才会切换到3G / 4G。 当然,这两者都是同时打开的。

您可以考虑使用面向VPN的互联网,以便设备将从3G / 4G连接到VPN,而不是随后访问数据,如果安全是您使用私有wifi的问题,而不是使用私人WiFi。

VPN客户端内置于Android中,还有第三方客户端可用。

希望能帮助到你!

您可能想要研究ad-hoc wifi网络。 它通过wifi连接到设备,即使机器人已经使用wifi上网(但不使用ip栈)。

不要将wifi(IEEE 802.11x)连接与互联网(IP)连接混淆。 IP可以在wifi,移动,以太网,DSL,dailup或归巢鸽上运行,但一次只能运行一个网络。

有关ad-hoc wifi网络的更多信息,请查看以下链接。

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

请注意,许多运营商禁止多播(共享)其IP连接。 尼斯。