properly handle network connectivity changes.
This commit is contained in:
parent
84623b9474
commit
77c46c936a
1 changed files with 19 additions and 15 deletions
|
@ -138,7 +138,7 @@ public class LinphoneManager implements LinphoneCoreListener {
|
||||||
private String basePath;
|
private String basePath;
|
||||||
private static boolean sExited;
|
private static boolean sExited;
|
||||||
private boolean mAudioFocused;
|
private boolean mAudioFocused;
|
||||||
private boolean isNetworkReachable;
|
private int mLastNetworkType=-1;
|
||||||
private ConnectivityManager mConnectivityManager;
|
private ConnectivityManager mConnectivityManager;
|
||||||
|
|
||||||
private WakeLock mIncallWakeLock;
|
private WakeLock mIncallWakeLock;
|
||||||
|
@ -679,25 +679,29 @@ public class LinphoneManager implements LinphoneCoreListener {
|
||||||
|
|
||||||
if (eventInfo == null || eventInfo.getState() == NetworkInfo.State.DISCONNECTED) {
|
if (eventInfo == null || eventInfo.getState() == NetworkInfo.State.DISCONNECTED) {
|
||||||
Log.i("No connectivity: setting network unreachable");
|
Log.i("No connectivity: setting network unreachable");
|
||||||
if (isNetworkReachable) {
|
mLc.setNetworkReachable(false);
|
||||||
isNetworkReachable = false;
|
|
||||||
mLc.setNetworkReachable(isNetworkReachable);
|
|
||||||
}
|
|
||||||
} else if (eventInfo.getState() == NetworkInfo.State.CONNECTED){
|
} else if (eventInfo.getState() == NetworkInfo.State.CONNECTED){
|
||||||
manageTunnelServer(eventInfo);
|
manageTunnelServer(eventInfo);
|
||||||
|
|
||||||
boolean wifiOnly = LinphonePreferences.instance().isWifiOnlyEnabled();
|
boolean wifiOnly = LinphonePreferences.instance().isWifiOnlyEnabled();
|
||||||
if ((eventInfo.getTypeName().equals("WIFI")) || (!eventInfo.getTypeName().equals("WIFI") && !wifiOnly)) {
|
if (wifiOnly){
|
||||||
if (!isNetworkReachable) {
|
if (eventInfo.getType()==ConnectivityManager.TYPE_WIFI)
|
||||||
isNetworkReachable = true;
|
mLc.setNetworkReachable(true);
|
||||||
mLc.setNetworkReachable(isNetworkReachable);
|
else {
|
||||||
Log.i(eventInfo.getTypeName()," connected: setting network reachable (network = " + eventInfo.getTypeName() + ")");
|
Log.i("Wifi-only mode, setting network not reachable");
|
||||||
|
mLc.setNetworkReachable(false);
|
||||||
}
|
}
|
||||||
} else {
|
}else{
|
||||||
if (isNetworkReachable) {
|
int curtype=eventInfo.getType();
|
||||||
isNetworkReachable = false;
|
|
||||||
mLc.setNetworkReachable(isNetworkReachable);
|
if (curtype!=mLastNetworkType){
|
||||||
Log.i(eventInfo.getTypeName()," connected: wifi only activated, setting network unreachable (network = " + eventInfo.getTypeName() + ")");
|
//if kind of network has changed, we need to notify network_reachable(false) to make sure all current connections are destroyed.
|
||||||
|
//they will be re-created during setNetworkReachable(true).
|
||||||
|
Log.i("Connectivity has changed.");
|
||||||
|
mLc.setNetworkReachable(false);
|
||||||
}
|
}
|
||||||
|
mLc.setNetworkReachable(true);
|
||||||
|
mLastNetworkType=curtype;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue