可以在Android上同时使用Wi-Fi(wlan)和Cellular Data 4G / LTE(rmnet)接口吗?

时间:2018-03-06 02:20:23

标签: java android networking android-wifi cellular-network

我正在使用Android设备连接到Wi-Fi网络的应用程序。此Wi-Fi网络无法访问互联网 - 它是由终端设备创建的Wi-Fi网络,仅用于使用TCP套接字与其通信。我希望能够通过Wi-Fi与Android设备通信时访问Android设备上的蜂窝数据互联网连接,我想知道这是否可行。

目前我所知道的是:

  1. 可以通过Android NetworkInterface API获取设备上可用的所有接口及其相应IP地址的列表。
  2. Android中的“开发者设置”中有一个选项,即使连接了Wi-Fi,也可以保持蜂窝数据接口的连接。
  3. 可以提供local address for the Socket to bind to when creating a Socket()
  4. 考虑到这些:

    当我通过设备中的SIM卡连接到Wi-Fi网络并启用LTE时,我能够使用192.168.xx格式的“本地”IP地址获取 wlan0接口 rmnet0接口与非本地IP地址。

    但是,根据设备的不同,我一次只能访问其中一个设备。

    例如,在运行Oreo 8.1,启用LTE,启用蜂窝数据始终开启的Pixel 2 XL上:

    我无法通过Wi-Fi进行通信。使用Wi-Fi本地地址创建的任何套接字超时。

    在运行Nougat 7.1的Galaxy Tab S2 SM-T818W上启用LTE,启用蜂窝数据始终开启:

    我能够通过Wi-Fi进行通信,但无法访问蜂窝数据接口。

    我能够访问Pixel 2 XL上的wlan0接口的唯一方法是从Android的requestNetwork调用ConnectivityManager API并使用TRANSPORT_WIFI功能请求网络,但这从现在所有通信和套接字仅绑定到Wi-Fi网络。

    我知道当启用USB网络共享时,可以通过指定Socket连接上的本地地址访问虚拟USB“以太网”接口上的设备,该接口通过wlan0接口或甚至rmnet0接口显示为eth0调用。它似乎只是Wi-Fi和蜂窝数据的问题。

    我想知道这是否是固有的和预期的Android限制,或者是否有办法在我缺少的同时访问这两个界面。

    感谢您的帮助。请告诉我,如果我提供特定的代码片段会更好,我不确定,因为它会使这篇文章很长。

    最佳,

0 个答案:

没有答案