我正在使用pjsua2开发android应用程序。我能够注册,拨打电话并在有互联网连接时执行所有操作但是一旦互联网连接丢失并再次连接到互联网,则无法与服务器建立连接。当我检查日志时显示Sip未注册。即使重新建立了互联网连接。 请帮忙找一下这个错误是什么?
由于
答案 0 :(得分:2)
您可以使用这段代码 如本link
中所述$urls = explode(',', $data);
$first = isset($urls[0]) ? $urls[0] : null;
答案 1 :(得分:0)
我在连接问题中运行时发现了相同的行为。我已经结束注册到android.net.conn.CONNECTIVITY_CHANGE
以检测互联网状态何时发生变化,然后使用方法检测新状态.Bellow是我对该方法的实现:
public enum InternetStatus { WIFI, MOBILE, ROAMING, NO_INTERNET, UNKNOWN };
/**
* Get the internet status of the phone. The possible values are :
* +Not connected
* +Connected through WiFi
* +Connected to Mobile Carrier
* +Connected on Roaming
* @param context Context under which the app is running
* @return Returns the internet status as an enum value
*/
public static InternetStatus getInternetStatus(Context context)
{
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null) { // connected to the internet
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
// connected to wifi
//Toast.makeText(context, activeNetwork.getTypeName(), Toast.LENGTH_SHORT).show();
return InternetStatus.WIFI;
} else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
// connected to the mobile provider's data plan
if(activeNetwork.isRoaming()) {
//Toast.makeText(context, activeNetwork.getTypeName() + " Roaming", Toast.LENGTH_SHORT).show(); // roaming
return InternetStatus.ROAMING;
}
else {
//Toast.makeText(context, activeNetwork.getTypeName() + " NOT Roaming", Toast.LENGTH_SHORT).show();
return InternetStatus.MOBILE;
}
}
} else {
// not connected to the internet
//Toast.makeText(context," NO Internet", Toast.LENGTH_SHORT).show();
return InternetStatus.NO_INTERNET;
}
return InternetStatus.UNKNOWN;
}
获得互联网连接后,您应该访问SIP帐户类并致电
sipAccount.setRegistration(true);
这将触发库再次发送注册消息,一切都应该正常工作。
希望它有所帮助。