2011-07-14 9 views
5

बनाने में विफल आईएम एंड्रॉइड 3.1 पर एसआईपी में निर्मित वीओआईपी कॉल चलाने की कोशिश कर रहा है। मेरे पास भौतिक टैबलेट डिवाइस है (आकाशगंगा टैब 10.1)।एंड्रॉइड वीओआईपी SipException: SipSession

परीक्षण के उद्देश्य के लिए, मैंने SipDemo example से एक प्रोजेक्ट बनाया है - यह ठीक काम करता है! (जिसका अर्थ है कि मेरे प्रमाण पत्र काम कर रहे हैं और मेरा डिवाइस/नेटवर्क ठीक है)।

मेरी Manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="modera.com.doorcontroller" android:versionCode="1" android:versionName="1.0"> 

    <application android:icon="@drawable/logoeditedsmall" android:label="@string/app_name" android:debuggable="true"> 
     <activity android:name="MainActivity" android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     </activity> 

     <activity android:name="CallActivity"></activity> 

</application> 

<uses-sdk android:minSdkVersion="11" /> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.USE_SIP" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 

<uses-feature android:name="android.hardware.sip.voip" android:required="true" /> 
<uses-feature android:name="android.hardware.wifi" android:required="true" /> 
<uses-feature android:name="android.hardware.microphone" android:required="true" /> 

</manifest> 

मेरी बैकएंड कोड:

public void initializeManager() { 
    if (manager == null) { 
     manager = SipManager.newInstance(this); 
    } 

    if (me != null) { 
     closeLocalProfile(); 
    } 

    try { 
     SipProfile.Builder builder = new SipProfile.Builder(username, 
       domain); 
     builder.setPassword(password); 
     builder.setOutboundProxy(proxy); 
     me = builder.build(); 

     manager.open(me); 

     manager.setRegistrationListener(me.getUriString(), 
       new SipRegistrationListener() { 

        @Override 
        public void onRegistering(String localProfileUri) { 
         Log.i("MY", "onRegistering"); 

        } 

        @Override 
        public void onRegistrationDone(String localProfileUri, 
          long expiryTime) { 
         Log.i("MY", "onRegistrationDone"); 

        } 

        @Override 
        public void onRegistrationFailed(
          String localProfileUri, int errorCode, 
          String errorMessage) { 
         Log.i("MY", "onRegistrationFailed"); 

        } 
       }); 

    } catch (ParseException pe) { 
     Log.e("MY", pe.toString()); 
    } catch (SipException se) { 
     Log.e("MY", se.toString()); 
    } 
} 



public void initiateCall() { 

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

      @Override 
      public void onCallEstablished(SipAudioCall call) { 
       call.startAudio(); 
       call.setSpeakerMode(true); 
       call.toggleMute(); 
       Log.i("MY", "oonCallEstablished"); 
      } 

      @Override 
      public void onCallEnded(SipAudioCall call) { 
       Log.i("MY", "onCallEnded"); 
      } 
     }; 

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

    } catch (Exception e) { 
     Log.e("MY", e.toString()); 
     if (me != null) { 
      try { 
       manager.close(me.getUriString()); 
      } catch (Exception ee) { 
       Log.e("MY", ee.toString()); 
      } 
     } 
     if (call != null) { 
      call.close(); 
     } 
    } 
} 

इस कोड चल रहा है (पहली बार में मैं initalize, initalizeManager का उपयोग कर और फिर मैं initateCall चलाने) मैं एक प्राप्त अपवाद:

android.net.sip.SipException: Failed to create SipSession; network unavailable? 

... और LogCat लॉग्स:

07-14 13:35:16.200: ERROR/SipService(364): openToMakeCalls() 
07-14 13:35:16.200: ERROR/SipService(364): javax.sip.SipException: only creator can access the profile 
07-14 13:35:16.200: ERROR/SipService(364):  at com.android.server.sip.SipService.createGroup(SipService.java:337) 
07-14 13:35:16.200: ERROR/SipService(364):  at com.android.server.sip.SipService.open(SipService.java:185) 
07-14 13:35:16.200: ERROR/SipService(364):  at android.net.sip.ISipService$Stub.onTransact(ISipService.java:58) 
07-14 13:35:16.200: ERROR/SipService(364):  at android.os.Binder.execTransact(Binder.java:320) 
07-14 13:35:16.200: ERROR/SipService(364):  at dalvik.system.NativeStart.run(Native Method) 
07-14 13:35:16.200: WARN/SipService(364): only creator can set listener on the profile 
07-14 13:35:16.230: WARN/SipService(364): only creator or radio can close this profile 

गूगल, कोई भी परिणाम नहीं दिया है, क्योंकि वहाँ बस पर Android 2.3+ एसआईपी के लिए पर्याप्त डेटा नहीं है तो हर सुझाव आप कर मुझे बाहर एक बहुत मदद करता है!

+0

** नया **: मैंने कुछ (अधिक) परीक्षण किया है और यह समस्या हर बार नहीं होती है। मैं 1-2 कॉल कर सकता हूं और उसके बाद मैं Gettin SipException रखता हूं: SipSession बनाने या पंजीकरण पर विफल विफल। कुछ समय बाद (15 मिनट?) मैं फिर से कुछ कॉल कर सकता हूं। किसी प्रकार का वीओआईपी सर्वर रजिस्टर/टाइमआउट मुद्दा? –

+0

** नोट: ** हमारे सभी कंपनी फोन एक ही वीओआईपी सर्वर का उपयोग कर रहे हैं और वे ठीक काम कर रहे हैं। –

+1

हाय मुझे एक विश्वविद्यालय परियोजना के रूप में एंड्रॉइड में एसआईपी का उपयोग करके वीओआईपी सौंपा गया है। मुझे इसके बारे में बहुत परेशानी का सामना करना पड़ रहा है। क्या आप मुझे परियोजना भेज सकते हैं ताकि मैं कुछ मदद ले सकूं। मैंने बहुत काम किया है और वास्तव में नमूना परियोजना भी काम नहीं कर रही है। और यदि आप मुझे एक बहुत ही बुनियादी उदाहरण देते हैं जो बहुत उपयोगी होगा और मैं बहुत आभारी रहूंगा। [email protected] –

उत्तर

4

समस्या हल हो गई: आरंभ करने के बाद आप प्रारंभ करें कॉल() सही नहीं कर सकते हैं। जब एसआईपी घटकों ने शुरू किया है तो आपको लगभग 4 सेकंड तक इंतजार करना होगा।

EDIT- सिपमेनगर पंजीकरण के साथ अभी भी कुछ समस्या हो रही है: कॉलिंग उपयोगकर्ता पंजीकृत नहीं है (403)। ऐप को पुनर्स्थापित करना और रीबूट करने की डिवाइस समस्या हल करती है।

+0

क्या कोई सिग्नल है जिसे आप चेक कर सकते हैं, या अवरुद्ध कॉल जो प्रबंधक को सही तरीके से प्रारंभ किया गया है जब लौटाता है। –

+0

मेरे लिए काम नहीं है ... –