2011-04-24 20 views
7

Estoy desarrollando una aplicación SIP, y cuando quiero llamar a alguien (con su identificador configurado en el servidor) tengo una NullPointerException => "Error al intentar cerrar el administrador." Aquí está el código:Excepción al intentar llamar (SIP)

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

Gracias por su ayuda.

+0

¿En qué línea se lanza la excepción? –

Respuesta

8

La biblioteca de VOIP/SIP no es compatible por defecto con el emulador de Android. El problema es que
manager == null- es por eso que está obteniendo la NullPointerException.

Afortunadamente, hay una ronda de trabajo. Descargue this link y cópielo en la carpeta ... \. Android \ avd \ .avd.

Comience su emulador y

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

ahora debe devolver verdadero.

Fuente: http://xilard.hu/

+0

Los enlaces ya no funcionan ... –

-3

Compruebe la conexión del puente en Android y el servidor SIP en su aplicación para obtener la clave de SIP de su aplicación.

0

Android.net.sip (Sip API) solo funciona en G711 sobre Android 2.3+. Además, los teléfonos suministrados por los operadores pueden tener la pila SIP (android.net.sip) bloqueada o paralizada. SipManager.isVoipSupported(this) & & SipManager.isApiSupported(this) devolverá falso para la mayoría de los dispositivos es su ie. su objeto SipManager siempre será nulo en tal caso. Debe usar una biblioteca de terceros para implementar SIP.

Existen diferentes bibliotecas de fuentes sip de código abierto, así como proyectos disponibles en Internet. Puede descargar el código fuente de esos proyectos. Aquí está la lista de algunas bibliotecas de fuentes sip populares de código abierto que permiten hacer llamadas de voz a través de Internet.

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

2. Pjsip

3. Mjsip

4. Doubango

Hay diferentes proyectos de código abierto que han utilizado estas bibliotecas en sus proyectos.

1.Jain sip: No se utiliza en una aplicación "famosa". 2. Sipdroid utiliza MjSip 3. Csipsimple utiliza PjSip 4. Imsdroid utiliza doubango.

Cuestiones relacionadas