fra*_*ish 5 android connectivity android-networking android-wifi
我注意到,当通过3G(移动)连接从远程服务器传输音频时,当WIFI断开或关闭时,只要WIFI被激活并连接,就会丢弃通过3G的连接.
即使现在连接了WIFI,我也希望应用程序继续使用3G.我想这样做是为了保持连续性.(用户可以选择加入/退出此行为).
有没有特殊的旗帜,锁等等.为此目的?
Tre*_*hns 14
这在Android 5.0(Lollipop)之前的设备上是不可能的.操作系统一次只保留一个接口,应用程序无法控制此选择.
在运行Android 5.0或更高版本的设备上,您可以使用新的多网络API来选择要用于网络流量的接口.
以下是从Android 5.0更新日志中执行此操作的步骤:
要从您的应用中动态选择并连接到网络,请按以下步骤操作:
- 创建一个
ConnectivityManager.- 使用
NetworkRequest.Builder该类创建NetworkRequest对象并指定您的应用感兴趣的网络功能和传输类型.- 要扫描合适的网络,请调用
requestNetwork()或registerNetworkCallback()传入NetworkRequest对象和实现ConnectivityManager.NetworkCallback.requestNetwork()如果要在检测到网络后主动切换到合适的网络,请使用此方法; 要在不主动切换的情况下仅接收已扫描网络的通知,请改用该registerNetworkCallback()方法.当系统检测到合适的网络时,它会连接到网络并调用onAvailable()回调.您可以使用回调中的网络对象来获取有关网络的其他信息,或引导流量以使用所选网络.
具体来说,如果您想通过3G/LTE强制流量,即使存在WiFi信号,您也可以使用以下内容:
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...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7325 次 |
| 最近记录: |