如何在 android 中访问多个网络接口(WiFi 和移动数据)

How to access Muliple network interface in android (WiFi and mobile data)

好的,所以我的问题可能与主题无关,但我真的没有发现任何有用的内容可以在我的应用程序中同时使用两个网络接口是简单的图像上传到服务器使用两个开放网络更好 speed.here我们可以通过在 java 中编程来使用这两个网络吗? 我找到了这个代码片段,但它 return 只有连接状态。

 ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
            Network etherNetwork = null;
            for (Network network : connectivityManager.getAllNetworks()) {
                NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network);
                if (networkInfo.getType() == ConnectivityManager.TYPE_ETHERNET) {
                    etherNetwork = network;
                }
            }
            Network boundNetwork = connectivityManager.getBoundNetworkForProcess();
            if (boundNetwork != null) {
                NetworkInfo boundNetworkInfo = connectivityManager.getNetworkInfo(boundNetwork);
                if (boundNetworkInfo.getType() != ConnectivityManager.TYPE_ETHERNET) {
                    if (etherNetwork != null) {
                        connectivityManager.bindProcessToNetwork(etherNetwork);
                    }
                }
            }

据我所知这是不可能的。

尽管如此:

  • MPTCP 存在,您可能会找到支持它的 rom,但它不是开箱即用的。
  • Speedify 声称能够做到这一点,但由于它不需要 root,我认为这只是对 VPN 连接的巧妙使用以及连接类型之间的一种负载平衡技巧。

基本上,为了真正激活这两种连接类型,您需要修改内核,以便可以同时使用两种网络接口。

如果有帮助,您可以按照我在此应用中使用的方法进行操作

https://github.com/yschimke/OkHttpAndroidApp/

您可以在连接之前自行将每个套接字绑定到特定的网络接口。每个单独的套接字都需要在一个网络上,但您可以同时使用两者。

https://github.com/yschimke/OkHttpAndroidApp/blob/master/android/app/src/main/java/com/okhttpandroidapp/factory/AndroidNetworkManager.kt#L123