2011-04-24 17 views
7

मैं एक एसआईपी एप्लीकेशन विकसित कर रहा हूं, और जब मैं किसी को कॉल करना चाहता हूं (सर्वर में कॉन्फ़िगर किए गए इसके पहचानकर्ता के साथ) मेरे पास एक 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(); 
      } 
     } 
    } 

आपकी मदद के लिए धन्यवाद: यहाँ कोड है।

+0

अपवाद किस पंक्ति में फेंक दिया गया है? –

उत्तर

8

वीओआईपी/एसआईपी libary डिफ़ॉल्ट रूप से एंड्रॉइड एमुलेटर पर समर्थित नहीं है। समस्या यह है कि
manager == null- यही कारण है कि आप NullPointerException क्यों प्राप्त कर रहे हैं।

सौभाग्य से, एक कार्य-एक-दौर है। this link डाउनलोड करें और इसे ... \। एंड्रॉइड \ avd \ .avd फ़ोल्डर में कॉपी करें।

अपने एमुलेटर शुरू

और

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

अब सच लौटना चाहिए।

स्रोत: http://xilard.hu/

+0

लिंक अब और काम नहीं करते हैं ... –

-3

चेक एंड्रॉयड में पुल कनेक्शन और आपके आवेदन अपने आवेदन की एसआईपी कुंजी प्राप्त करने में एसआईपी सर्वर।

0

Android.net.sip (एसआईपी एपीआई) केवल एंड्रॉइड 2.3+ पर जी 711 पर काम करता है। इसके अलावा वाहकों द्वारा प्रदान किए गए फोन में एसआईपी स्टैक (android.net.sip) अवरुद्ध या क्रिप्ल हो सकता है। SipManager.isVoipSupported(this) & & SipManager.isApiSupported(this) अधिकांश डिवाइसों के लिए झूठी वापसी होगी यानी आपका अर्थ है। आपके SipManager ऑब्जेक्ट हमेशा इस तरह के मामले में शून्य हो जाएगा। आपको एसआईपी लागू करने के लिए तीसरे पक्ष पुस्तकालय का उपयोग करना चाहिए।

विभिन्न खुले स्रोत सिप स्टैक पुस्तकालयों के साथ-साथ परियोजनाएं इंटरनेट पर उपलब्ध हैं। आप उन परियोजनाओं के स्रोत कोड डाउनलोड कर सकते हैं। यहां कुछ लोकप्रिय ओपन सोर्स सिप स्टैक लाइब्रेरीज़ की सूची दी गई है जो इंटरनेट पर वॉयस कॉल करने की अनुमति देती है।

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

2. Pjsip

3. Mjsip

4. Doubango

अलग ओपन सोर्स प्रोजेक्ट जो उनकी परियोजनाओं में इन पुस्तकालयों का इस्तेमाल किया है रहे हैं।

1. जैन सिप: "प्रसिद्ध" ऐप में उपयोग नहीं किया जाता है। 2. Sipdroid MjSip का उपयोग करता है 3. Csipsimple PjSip का उपयोग करता है 4. Imsdroid दोगों का उपयोग करता है।

संबंधित मुद्दे