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!

One Solution collect form web for “Android VOIP SipException: Error al crear SipSession”

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.

  • PJSUA2 sip aplicación android nativa
  • ¿Hay un api libre de voip para android
  • Android M: VoIP, JAINSIP, SipStack; Inconsistent SipProvider Excepción al crear un punto de escucha con tls habilitado
  • ¿Es factible la adición de una dependencia libjitsi a un proyecto Android?
  • Chat y aplicación VOIP
  • ¿Ha utilizado alguien la biblioteca IAX24 J para las llamadas entrantes?
  • Notificaciones push de VOIP en android
  • ¿Soporta Android las API para implementar RTP, RTSP para VoIP y PTT Project?
  • Implementación de App-to-App llamando a Android
  • Aplicación a la llamada de voz de aplicación como Viber & Line en android
  • Aplicación VOIP para Android sin acceso a Internet
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.