I noticed that while streaming audio from a remote server through 3G (mobile) connection and while the WIFI is disconnected or OFF, as soon as WIFI is activated and connected, connection through 3G is dropped.
I want the app keep using 3G even if WIFI is connected too now. I want to do this to keep continuity. (User may opt-in/out to/from this behaviour).
Is there a special flag, lock, etc.. For this purpose?
To do this, swipe down on your notification bar and check that the mobile data toggle is switched on. Or go into “Settings,” tap “Connections,” and “Data Usage” and make sure that mobile data is switched on. Step 2: Connect to a Wi-Fi network. Tap “Settings,” then “Connections”, then “Wi-Fi” and flip the switch on.
Most people keep their mobile data off until they have to go outside and know they won't be connected to a WiFi network. If you keep your mobile data on in case your WiFi isn't working, your battery drains much faster. Android has a built-in feature that lets you automatically disable mobile data on WiFi.
If your Android phone disconnects from Wi-Fi regardless of the network, you might be dealing with a buggy wireless interface. Rebooting the device might make a difference, so press the Power button (some phones require you to press the Power and Volume Up/Down buttons simultaneously) and tap Restart.
This isn't possible on devices before Android 5.0 (Lollipop). The OS only keeps one interface up at a time, and applications don't have any control over this choice.
On devices running Android 5.0 or newer, you can use the new multi-networking APIs to pick which interface you want to use for network traffic.
Here's the steps to do this, from the Android 5.0 changelog:
To select and connect to a network dynamically from your app, follow these steps:
- Create a
ConnectivityManager
.- Use the
NetworkRequest.Builder
class to create anNetworkRequest
object and specify the network features and transport type your app is interested in.- To scan for suitable networks, call
requestNetwork()
orregisterNetworkCallback()
, and pass in theNetworkRequest
object and an implementation ofConnectivityManager.NetworkCallback
. Use therequestNetwork()
method if you want to actively switch to a suitable network once it’s detected; to receive only notifications for scanned networks without actively switching, use theregisterNetworkCallback()
method instead.When the system detects a suitable network, it connects to the network and invokes the onAvailable() callback. You can use the Network object from the callback to get additional information about the network, or to direct traffic to use the selected network.
Specifically, if you want to force your traffic over 3G/LTE, even if there's a WiFi signal present, you'd use something like this:
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder req = new NetworkRequest.Builder();
req.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
cm.requestNetwork(req.build(), new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
// If you want to use a raw socket...
network.bindSocket(...);
// Or if you want a managed URL connection...
URLConnection conn = network.openConnection(...);
}
// Be sure to override other options in NetworkCallback() too...
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With