2016-08-26 12 views
0

こんにちは私は、以下のコードで、 "SipManagerが閉じています"とトーストが "登録されていません"という回答を得て、コールを呼び出して電話に出ます。SIP登録 - Androidスタジオ

私は例外がなく、 "setRegistrationListener"のToastは起動されませんでした。

どうしたのですか?何が問題ですか?

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は何がopenendされ、すなわちIPとポート罰金ではありません。これを確認するには、ソフトフォンをインストールして登録するだけです。

  1. コードでは、SIPレジスタのプロトコルとしてTCPを使用しています。正常にポート5060がUDPのために開かれていることを確認してください 以下はあなたが考えなければならないかもしれないコードです builder.setProtocol( "TCP");
+0

こんにちは!あなたの勧告については、CSIPSimpleでサービスを設定しているので、IPとポートが開かれています。 2番目の勧告について、私は "UDP"に変更しましたが、今は "SipManagerが開いています"が登録されていません。ログに「-9」(RegistrationFailed -9 :: 0)と「-4」(RegistrationFailed -4 ::登録が実行されていません)エラーが表示されます。 –

+0

tcpdumpでログをチェックし、tcpdumpでどのようなエラーが表示されているかを確認してください。うまくいけば、CSIPSimpleはすべての種類のヘッダを受け入れなければならないが、あなたのアプリケーションはそうではない – Ravi

関連する問題