2011-04-24 178 views
7

我正在開發一個SIP應用程序,並且當我想呼叫某人(在服務器中配置其標識符時),我有一個NullPointerException =>「嘗試關閉管理器時出錯。 下面是代碼:嘗試呼叫時發生異常(SIP)

public void initiateCall() { 

     updateStatus(sipAddress); 

     try { 
      SipAudioCall.Listener listener = new SipAudioCall.Listener() { 

       @Override 
       public void onCallEstablished(SipAudioCall call) { 
        call.startAudio(); 
        call.setSpeakerMode(true); 
        call.toggleMute(); 
        updateStatus(call); 
       } 

       @Override 
       public void onCallEnded(SipAudioCall call) { 
        updateStatus("Ready."); 
       } 
      }; 

      call = manager.makeAudioCall(me.getUriString(), sipAddress, listener, 30); 

     } 
     catch (Exception e) { 
      Log.i("WalkieTalkieActivity/InitiateCall", "Error when trying to close manager.", e); 
      if (me != null) { 
       try { 
        manager.close(me.getUriString()); 
       } catch (Exception ee) { 
        Log.i("WalkieTalkieActivity/InitiateCall", 
          "Error when trying to close manager.", ee); 
        ee.printStackTrace(); 
       } 
      } 
      if (call != null) { 
       call.close(); 
      } 
     } 
    } 

謝謝您的幫助。

+0

在什麼行中拋出異常? – 2011-04-26 03:09:46

回答

8

Android模擬器默認不支持VOIP/SIP庫。問題是這就是爲什麼你得到NullPointerException。

幸運的是,有一個工作輪。下載this link並將其複製到... \。android \ avd \ .avd文件夾中。

啓動模擬器和

Boolean voipSupported = SipManager.isVoipSupported(this); 
Boolean apiSupported = SipManager.isApiSupported(this); 

現在應該返回true。

來源:http://xilard.hu/

+0

鏈接不工作了... – 2017-10-13 11:59:29

-3

入住Android的橋連接,並在應用中獲得應用程序的SIP關鍵SIP服務器。

0

Android.net.sip(Sip API)僅適用於Android 2.3及更高版本的G711。 此外,運營商提供的手機可能會使SIP堆棧(android.net.sip)被阻止或癱瘓。 SipManager.isVoipSupported(this) & & SipManager.isApiSupported(this)將返回false爲大多數設備是你的ie。在這種情況下,您的SipManager對象將始終爲空。您應該使用第三方庫來實現SIP。

有不同的開源sip堆棧庫以及互聯網上的項目。您可以下載該項目的源代碼。 這裏是一些流行的開源sip堆棧庫允許通過互聯網進行語音通話的列表。

Jain sip (I think the best option): 1.

2. Pjsip

Mjsip 3.

4. Doubango

有已經在他們的項目使用這些庫不同的開源項目。

1.Jain sip:未在「着名」應用中使用。 2. Sipdroid使用MjSip 3. Csipsimple使用PjSip 4. Imsdroid使用doubango。