2012-06-13 113 views
3

我正在開發SIP應用程序。我使用了SipDemo的SipDemo示例,但有些出錯。我有NullPointerException =>「試圖關閉管理器時出錯。」在這個地方(例外的 'e'):SipDemo示例代碼給出了NullPointerException

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(); 
     } 
    } 
} 

Additionaly我檢查這個SipManager.isApiSupported()SipManager.isVoipSupported()兩者返回。我使用4.0.3操作系統在Tab上測試這個。我想知道如果錯誤是不支持本地SIP,但我可以很容易地與SipDroid或從市場上的另一個應用程序打電話。

編輯 logcat的堆棧跟蹤:

05-15 22:29:11.255: INFO/WalkieTalkieActivity/InitiateCall(4247): Error when trying to close manager. 
05-15 22:29:11.255: INFO/WalkieTalkieActivity/InitiateCall(4247): java.lang.NullPointerException 
05-15 22:29:11.255: INFO/WalkieTalkieActivity/InitiateCall(4247):  at com.example.android.sip.WalkieTalkieActivity.initiateCall(WalkieTalkieActivity.java:212) 
05-15 22:29:11.255: INFO/WalkieTalkieActivity/InitiateCall(4247):  at com.example.android.sip.WalkieTalkieActivity$4.onClick(WalkieTalkieActivity.java:324) 
05-15 22:29:11.255: INFO/WalkieTalkieActivity/InitiateCall(4247):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:165) 
05-15 22:29:11.255: INFO/WalkieTalkieActivity/InitiateCall(4247):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-15 22:29:11.255: INFO/WalkieTalkieActivity/InitiateCall(4247):  at android.os.Looper.loop(Looper.java:130) 
05-15 22:29:11.255: INFO/WalkieTalkieActivity/InitiateCall(4247):  at android.app.ActivityThread.main(ActivityThread.java:3691) 
05-15 22:29:11.255: INFO/WalkieTalkieActivity/InitiateCall(4247):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-15 22:29:11.255: INFO/WalkieTalkieActivity/InitiateCall(4247):  at java.lang.reflect.Method.invoke(Method.java:507) 
05-15 22:29:11.255: INFO/WalkieTalkieActivity/InitiateCall(4247):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907) 
05-15 22:29:11.255: INFO/WalkieTalkieActivity/InitiateCall(4247):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 
05-15 22:29:11.255: INFO/WalkieTalkieActivity/InitiateCall(4247):  at dalvik.system.NativeStart.main(Native Method) 
+0

打印異常的堆棧跟蹤並將其發佈,或者只需在嘗試調用其任何方法之前添加驗證,即每個對象都爲非null。 –

+0

確定,已添加堆棧跟蹤 –

+0

「manager」或「me」爲空。 – Rajesh

回答

2

我想我已經得到了一些解決方案。並非所有的Android版本都支持sip。因此,你應該找第三部分庫。例如,您可以看到SipdroidCSipSimple的源代碼並根據您自己的需求進行轉換。

+1

你有一個工作樣本嗎? – Nizam

+0

我從很長一段時間努力做u有工作的它 –

+0

樣品是的,我能根據這些項目成功地構建應用程序,但是,這些項目都是非常大的,他們的大部分功能對我來說不必要的,儘量減少他們很難。所以我找到了另一個解決方案,我找到了一個PJSIP庫,其中這些項目都是基於這個庫的,並且我自己實現了它。 –

相關問題