2016-08-26 5 views
0

Привет, я хочу разработать приложение для вызова и ответа на вызовы, с приведенным ниже кодом, я получаю ответ «Закрытие SipManager» и Toast «Not registered».Регистрация SIP - Android Studio

Я не получаю никакого исключения, и тост в «setRegistrationListener» никогда не запускался.

Что не так? В чем проблема?

private void inicializarPerfilLocal(){ 
     if(mSipManager == null){ 
      Toast.makeText(getApplicationContext(), "Error al iniciar administrador SIP", Toast.LENGTH_LONG); 
      return; 
     } 
    String username = COUNTRYCODE+PHONE_NUMBER; 
    String domain = "xx.yy.zz"; 
    String password = "ABCABCABC"; 

    try{ 
     SipProfile.Builder builder = new SipProfile.Builder(username, domain); 
     builder.setPassword(password); 
     builder.setAuthUserName(username+"@"+domain); 
     builder.setOutboundProxy("255.255.255.0"); 
     builder.setProfileName(username + "@" + domain); 
     builder.setDisplayName("Test"); 
     builder.setProtocol("TCP"); 
     builder.setAutoRegistration(true); 

     mSipProfile = builder.build(); 

     Intent i = new Intent(); 
     i.setAction("android.SipDemo.INCOMING_CALL"); 
     PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, Intent.FILL_IN_DATA); 
     mSipManager.open(mSipProfile, pi, null); 

     if (mSipManager.isOpened(mSipProfile.getUriString())){ 
      Toast.makeText(getApplicationContext(), "Administrador abierto", Toast.LENGTH_LONG).show(); 
     }else{ 
      Toast.makeText(getApplicationContext(), "Administrador cerrado", Toast.LENGTH_LONG).show(); 
     } 

     mSipManager.setRegistrationListener(mSipProfile.getUriString(), new SipRegistrationListener() { 
      public void onRegistering(String localProfileUri) { 
       Toast.makeText(getApplicationContext(), "Registrando...", 
         Toast.LENGTH_LONG).show(); 
      } 

      public void onRegistrationDone(String localProfileUri, long expiryTime) { 
       Toast.makeText(getApplicationContext(), "Registrado", 
         Toast.LENGTH_LONG).show(); 
      } 

      public void onRegistrationFailed(String localProfileUri, int errorCode, 
              String errorMessage) { 
       Toast.makeText(getApplicationContext(), "Error en registro errorCode :: "+errorMessage, 
         Toast.LENGTH_LONG).show(); 

      } 
     }); 

     if (mSipManager.isRegistered(mSipProfile.getUriString())){ 
      Toast.makeText(getApplicationContext(), "Registrado", Toast.LENGTH_LONG).show(); 
     }else{ 
      Toast.makeText(getApplicationContext(), "No registrado", Toast.LENGTH_LONG).show(); 
     } 
    }catch(ParseException pe){ 
     Toast.makeText(getApplicationContext(), "Excepcion de parseo", Toast.LENGTH_LONG).show(); 
    }catch(SipException se){ 
     Toast.makeText(getApplicationContext(), "Excepcion SIP", Toast.LENGTH_LONG); 
    } 
} 

ответ

0

Пожалуйста, проверьте следующие вещи 1. Ваша сеть conectivity не нормально, т.е. IP и порт не являются openend. Чтобы проверить это, просто установите программный телефон и зарегистрируйте его.

  1. В вашем коде я вижу, что вы используете TCP в качестве протокола для регистра SIP. Проверьте, нормально ли порт 5060 открыт для UDP. Ниже приведен код, который вам, возможно, стоит подумать о builder.setProtocol («TCP»);
+0

Hi Ravi! о ваших рекомендациях, IP и порт открыты, потому что я настраиваю службу с помощью CSIPSimple, и она работает. Во второй рекомендации я перешел на «UDP», и теперь у меня есть «SipManager открыт», но не зарегистрирован. Я получаю ошибку «-9» (RegistrationFailed -9 :: 0) и «-4» (RegistrationFailed -4 :: registration not running) в журнале. –

+0

Пожалуйста, проверьте журналы через tcpdump и какую ошибку вы получаете на tcpdump. Надеюсь, что CSIPSimple принимает все типы заголовков, но ваше приложение не – Ravi

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