Android VOIP SipException: Error al crear SipSession

Estoy tratando de ejecutar una llamada VOIP utilizando construido en SIP en Android 3.1. Tengo un dispositivo de tableta física (galaxia Tab 10.1).

Para fines de prueba, he creado un proyecto de SipDemo ejemplo – funciona bien! (Lo que significa que mis credenciales están funcionando y mi dispositivo / red está bien).

Mi 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> 

Mi código de backend:

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

Ejecutando este código (al principio initalize, usando initalizeManager y luego ejecuto initateCall) Recibo una excepción:

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

… y registros de 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 

Google no ha dado ningún resultado, porque no hay suficientes datos en Android 2.3+ SIP, por lo que cada sugerencia que haces me ayuda mucho!

Problema resuelto: No puede llamar a initiateCall () justo después de initializeManager (). Tienes que esperar unos 4 segundos cuando los componentes SIP se han inicializado.

EDIT: parece que todavía hay algún problema con el registro de SipManager: Llamando al usuario No registrado (403). Reinstalar la aplicación y reiniciar el dispositivo resuelve el problema.

  • ¿Se recomienda Android para la plataforma del procesador Atom?
  • PJSUA2 sip aplicación android nativa
  • ¿Soporta Android las API para implementar RTP, RTSP para VoIP y PTT Project?
  • WebRTC Conference Quality utilizando varias PeerConnection
  • ¿Es posible iniciar una llamada en Google Hangout utilizando código?
  • Android M: VoIP, JAINSIP, SipStack; Inconsistent SipProvider Excepción al crear un punto de escucha con tls habilitado
  • Error: No se encontró ningún recurso que coincida con el nombre dado (en 'theme' con el valor '@ style / AppTheme')
  • VOIP en bibliotecas de Android o código de ejemplo
  • Aplicación a la llamada de voz de aplicación como Viber & Line en android
  • SipManager.isApiSupported () y SipManager.isVoipSupported () devuelve false
  • Sipdroid - Otra llamada entrante no se muestra mientras se continúa
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.