2013-10-08 137 views
2

這裏是我的註冊代碼:Android原生庫SIP註冊失敗(IN_PROGRESS)

SipProfile.Builder builder = new SipProfile.Builder(username, ip); 
builder.setPort(Integer.parseInt(port)); 
builder.setPassword(password); 
builder.setSendKeepAlive(true); 
builder.setAutoRegistration(true); 
sipProfile = builder.build(); 

Intent i = new Intent(); 
i.setAction(ACTION); 
PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 
     Intent.FILL_IN_DATA); 
sipManager.open(sipProfile, pi, null); 
sipManager.setRegistrationListener(sipProfile.getUriString(), 
     new SipRegistrationListener() { 
      public void onRegistering(String localProfileUri) { 
       Log.e("SipService", 
         "Registering with SIP Server...\n" 
           + localProfileUri); 
      } 

      public void onRegistrationDone(String localProfileUri, 
        long expiryTime) { 
       Log.e("SipService", "Ready: " + localProfileUri); 
      } 

      public void onRegistrationFailed(
        String localProfileUri, int errorCode, 
        String errorMessage) { 
       Log.e("SipService", "Error: " + errorCode + " " + rorMessage); 
       Handler handler = new Handler(Looper 
         .getMainLooper()); 
       handler.post(new Runnable() { 
        @Override 
        public void run() { 

        Toast.makeText(SipService.this, 
         R.string.sip_registration_error, 
           Toast.LENGTH_LONG).show(); 
        } 
       }); 
      } 
     }); 

儘管有時它成功註冊,大多數時間我得到一個錯誤代碼-9:
10-08 14:49:53.389: E/SipService(5793): Error: -9 0
我發現這個描述在參考網站:

public static final int IN_PROGRESS 
    The client is in a transaction and cannot initiate a new one. 
    Constant Value: -9 (0xfffffff7) 

這是什麼意思?我的手機上沒有任何其他SIP應用程序正在運行。

+0

你好Leonhart,你得到了解決?我也面臨很多的問題,本地SIP實施。 –

+0

希望你提供解決方案,如果你得到它 我也有這個問題 Android不發送更多的regestration數據包和返回-9錯誤代碼 – MolhamStein

+0

你註冊什麼SIP提供商?嘗試註冊我的linphone.org帳戶時遇到同樣的錯誤。 – mehturt

回答

0

我曾有過似乎是類似的問題。當使用基於官方Android SIP教程的示例時,我發現兩個失敗的註冊同時發生,其中一個給出了錯誤-9。有時候我也得到了錯誤-10,DATA_CONNECTION_LOST。

我能夠睡同時解決創建意圖後短暫:

Intent intent = new Intent(); 
intent.setAction("my.package.name.INCOMING_CALL"); 
SystemClock.sleep(1000); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(parent, 0, intent, Intent.FILL_IN_DATA); 
sipManager.open(mySipProfile, pendingIntent, null); 
sipManager.setRegistrationListener(mySipProfile.getUriString(), new SipRegistrationListener() { ... } 

正如建議:SIP:ERROR DATA_CONNECTION_LOST