2012-05-10 7 views
6

Estoy tratando de construir un Sip client para android usando pjsip como CSipSimple project. Sin embargo, en realidad no sé mucho sobre pjsip. ¿Alguien tiene un tutorial sobre pjsip o algo así para construir un Sip softphone en Android usando PJsip lib? ¡Cualquier sugerencia es bienvenida!PJSip en android

+1

¿Hay algún tutorial? Tristemente no puedo usar la API SIP nativa. ¿Alguna sugerencia por dónde empezar? –

Respuesta

3

Usted no tiene que utilizar las bibliotecas de terceros para construir la funcionalidad de cliente SIP en Android. Android incluye un completo SIP API. Puede echar un vistazo al SIP demo para comprender cómo usar las API SIP para una implementación de tipo walkie-talkie.

+1

Tenga en cuenta que esto limitará su aplicación a la versión 2.3 de Android [(API Level 9)] (http://developer.android.com/guide/appendix/api-levels.html#level9) y superior, pero supongo que es algo así como el 75% de la base de usuarios – Paaske

+0

Según las estadísticas de Play Store en [Versiones de plataforma] (http://developer.android.com/resources/dashboard/platform-versions.html), su conjetura es correcta (como en el día de este comentario) – Rajesh

+1

esto también limita tu aplicación a wi-fi solamente, lo cual no es útil .... conoces otra forma de usar pjsip excepto apjsua porque apjsua no funciona, he pasado días en ello ... .. –

1

La respuesta aceptada no es del todo precisa. Hay muchas características deseables que faltan en la API SIP de Android que puede desear lograr a través de una biblioteca de terceros.

Con respecto al pjsip antes mencionado, he pasado mucho tiempo experimentando con la compilación de Android de pjsip, y la verdad es que la única manera de lograr que el registro instantáneo confiable funcione como se documenta es compilando OpenSSL 1.0.2a biblioteca y pasarlo a la hora de configurar. Luego, en Java debe intentar (y no) habilitar la comunicación TLS, tal como lo ve para UDP y TCP. Esto es lo que quiero decir:

/* Create transports. */ 
    try { transports.add(ep.transportCreate(pjsip_transport_type_e.PJSIP_TRANSPORT_TLS, transportConfig)); } 
    catch (Throwable t2) { SipManager.log().e(t2); } 

    try { transports.add(ep.transportCreate(pjsip_transport_type_e.PJSIP_TRANSPORT_UDP, transportConfig)); } 
    catch (Throwable t) { SipManager.log().e(t); } 

    try { transports.add(ep.transportCreate(pjsip_transport_type_e.PJSIP_TRANSPORT_TCP, transportConfig)); } 
    catch (Throwable t) { SipManager.log().e(t); } 

Reemplazar los SipManager.log() llamadas para su propia aplicación.

No estoy del todo seguro por qué, pero esto es necesario para mí. De lo contrario, el proceso de registro es semi-no determinista, en el sentido de que funcionará después de fallar unas pocas veces, o fallar durante 5 minutos y luego tener éxito de repente, etc. Parece confundirse después de la 1ra inscripción.

Así es como he configurado:

TARGET_ABI=arm64-v8a ./configure-android --use-ndk-cflags --with-ssl=`pwd`/../3rd-party/openssl-1.0.2a 

Y eso fue después de seguir el proper Android instructions, exrtacting el paquete de archivos de OpenSSL en una carpeta por encima de PJSIP ../3rd-party/ y primer edificio allí. Describí ese proceso en detalle en un previous post.

-1

Si desea desarrollar solo un cliente de sip, puede usar la API de sip de Android, pero como se menciona en las respuestas anteriores, limitará las funciones de su aplicación. Pero si desea desarrollar funciones de chat o de llamada en su aplicación, puede usar pjsip, que ofrece muchas características avanzadas. En cuanto a la construcción de pjsip para android, puede aprender de here(android) y para ios, aprender de here(ios). Básicamente, pjsip le ofrece muchas API con características enriquecidas que puede usar de acuerdo con sus requisitos como pjlib, pjsip, PJ media, pjsua, etc. pjsua (o pjsua2 para android) son API de nivel superior que le ayuda a extraer el máximo rendimiento con un mínimo complejities.you puede ver directamente here. usted puede aprender sobre pjsua de here. También han proporcionado una aplicación de demostración (pjsua CLI), Pjsua CLI y su fuente que le ayudará a comprender la estructura básica de una aplicación para compilar con pjsip que tiene funciones de chat y llamada.

para Android, puede ver una aplicación de demostración en github.