2016-06-14 5 views
0

Я разрабатываю приложение для Android с помощью pjsua2.Я могу зарегистрироваться, совершать звонки и выполнять все, когда есть интернет-соединение, но как только интернет-соединение потеряно и снова подключено к Интернету, соединение не устанавливается с сервером. когда я проверил отображаемые журналы, Sip не зарегистрирован. даже после подключения к Интернету. Пожалуйста, помогите найти, что может быть ошибкой?pjsua2 проблемы с подключением к Android при подключении к интернету

Благодаря

ответ

0

Я нашел такое же поведение при работе в вопросах подключения. Я закончился регистрация в android.net.conn.CONNECTIVITY_CHANGE для обнаружения при изменении статуса Интернета, а затем с помощью метода для обнаружения нового status.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 класс Account и вызвать

sipAccount.setRegistration(true); 

Это вызовет библиотеку для отправки сообщения о регистрации еще раз, и все должно работать правильно.

Надеюсь, это поможет.

+0

Я сделал то же самое. Это работает, если вы не звоните. Если вы находитесь в вызове, это не работает, что означает, что вызов не будет повторно подключен. Любые предложения очень ценятся. – Vinay

Смежные вопросы