Я использую приложение HIPRIKeeper для одновременного подключения данных Wifi и Mobile.
HIPRIKeeper: https://github.com/MPTCP-smartphone-thesis/MultipathControl/tree/master/HIPRIKeeper
Но я хочу использовать Мобильные данные для отправки запросов вместо Wi-Fi. Для этого я должен сделать мобильные данные в качестве сети по умолчанию.
Код для одновременного подключения Mobile Data и Wifi
private boolean isWifiConnected()
{
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return mWifi.isConnectedOrConnecting();
}
/* Check whether Mobile Data has been disabled in the System Preferences */
private boolean isMobileDataEnabled()
{
boolean mobileDataEnabled = false;
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
try {
Class<?> cmClass = Class.forName(cm.getClass().getName());
Method method = cmClass.getDeclaredMethod("getMobileDataEnabled");
method.setAccessible(true);
mobileDataEnabled = (Boolean) method.invoke(cm);
} catch (Exception e) {
}
return mobileDataEnabled;
}
/* Enable having WiFi and 3G/LTE enabled at the same time */
public void setMobileDataActive(boolean mEnabled)
{
if (Manager.DEBUG)
Log.d(Manager.TAG, "setMobileDataActive " + new Date());
final ConnectivityManager cManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (isMobileDataEnabled() && isWifiConnected())
{
cManager.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE,
"enableHIPRI");
Toast.makeText(context, "Binded to Mobile Data",Toast.LENGTH_LONG).show();
}
else
{
cManager.stopUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE,
"enableHIPRI");
Toast.makeText(context, "Cannot bind to Mobile data", Toast.LENGTH_LONG).show();
}
}
Хотя методы startUsingNetworkFeature () и stopUsingNetworkFeature () устарели, но у меня есть старое тестовое устройство с API 18, поэтому оно работает над ним. Проблема в том, что при включении обоих соединений все данные передаются через Wifi.