बनाने में विफल आईएम एंड्रॉइड 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+ एसआईपी के लिए पर्याप्त डेटा नहीं है तो हर सुझाव आप कर मुझे बाहर एक बहुत मदद करता है!
** नया **: मैंने कुछ (अधिक) परीक्षण किया है और यह समस्या हर बार नहीं होती है। मैं 1-2 कॉल कर सकता हूं और उसके बाद मैं Gettin SipException रखता हूं: SipSession बनाने या पंजीकरण पर विफल विफल। कुछ समय बाद (15 मिनट?) मैं फिर से कुछ कॉल कर सकता हूं। किसी प्रकार का वीओआईपी सर्वर रजिस्टर/टाइमआउट मुद्दा? –
** नोट: ** हमारे सभी कंपनी फोन एक ही वीओआईपी सर्वर का उपयोग कर रहे हैं और वे ठीक काम कर रहे हैं। –
हाय मुझे एक विश्वविद्यालय परियोजना के रूप में एंड्रॉइड में एसआईपी का उपयोग करके वीओआईपी सौंपा गया है। मुझे इसके बारे में बहुत परेशानी का सामना करना पड़ रहा है। क्या आप मुझे परियोजना भेज सकते हैं ताकि मैं कुछ मदद ले सकूं। मैंने बहुत काम किया है और वास्तव में नमूना परियोजना भी काम नहीं कर रही है। और यदि आप मुझे एक बहुत ही बुनियादी उदाहरण देते हैं जो बहुत उपयोगी होगा और मैं बहुत आभारी रहूंगा। [email protected] –