2012-05-10 16 views
6

Sto cercando di creare un Sip client per Android utilizzando pjsip come il progetto CSipSimple. Tuttavia, in realtà non so molto di pjsip. Qualcuno ha un tutorial su Pjsip o qualcosa del genere per costruire un Sip softphone in Android usando PJsip lib? Qualsiasi suggerimento è benvenuto!PJSip in android

+1

Esiste un tutoprial. Purtroppo non posso usare l'API SIP nativa. Qualche suggerimento da dove iniziare? –

risposta

3

Non è necessario utilizzare librerie di terze parti per costruire funzionalità di client SIP in Android. Android include un completo SIP API. Puoi dare un'occhiata a SIP demo per capire come utilizzare le API SIP per un tipo di implementazione walkie-talkie.

+1

Nota che questo limiterà la tua applicazione ad Android versione 2.3 [(API Livello 9)] (http://developer.android.com/guide/appendix/api-levels.html#level9) e più in alto, ma immagino che sia qualcosa come il 75% della base di utenti – Paaske

+0

Secondo le statistiche di Play Store su [Platform Versions] (http://developer.android.com/resources/dashboard/platform-versions.html), la tua ipotesi è giusta (come nel giorno di questo commento) – Rajesh

+1

anche questo limita la tua app al solo wi-fi, il che non è utile .... conosci qualche altro modo per usare pjsip tranne apjsua perché apjsua non funziona, ho passato giorni su di esso ... .. –

1

La risposta accettata non è del tutto precisa. Ci sono molte caratteristiche desiderabili che mancano all'API Android SIP che potresti desiderare di ottenere tramite una libreria di terze parti.

Per quanto riguarda il pjsip di cui sopra, ho passato molto tempo a sperimentare con la build Android di pjsip, e sinceramente l'unico modo per ottenere una registrazione istantanea affidabile per funzionare come documentato è costruire OpenSSL 1.0.2a libreria e passarla al momento della configurazione. Quindi, in Java è necessario tentare (e fallire) di abilitare la comunicazione TLS, proprio come li vedi fare per UDP e TCP. Ecco cosa voglio dire:

/* 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); } 

Sostituire le SipManager.log() inviti a presentare la propria app.

Non sono del tutto sicuro del perché, ma questo è necessario per me. Altrimenti, il processo di registrazione è semi-non-deterministico, nel senso che funzionerà dopo aver fallito alcune volte, o fallirà per 5 minuti, poi improvvisamente avrà successo, ecc. Sembra confondersi dopo la prima registrazione.

Ecco come ho configurato:

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

E questo è stato dopo aver seguito il proper Android instructions, exrtacting il tarball OpenSSL in una cartella sopra PJSIP ../3rd-party/ e primo edificio lì. Ho descritto questo processo in dettaglio in un previous post.

-1

Se si desidera sviluppare solo client sip, è possibile utilizzare l'API sip di Android ma, come indicato nelle risposte precedenti, limiterà le funzionalità delle app. Ma se vuoi sviluppare servizi di chat o di chiamata nella tua app, puoi usare pjsip che offre molte funzionalità avanzate. Per quanto riguarda la creazione di pjsip per Android, è possibile imparare da here(android) e per iOS, imparare da here(ios). Fondamentalmente, pjsip ti offre molte API con funzionalità avanzate che puoi utilizzare secondo le tue esigenze come pjlib, pjsip, PJ media, pjsua ecc. Pjsua (o pjsua2 per android) sono API di livello superiore che ti aiutano ad estrarre il massimo output con il minimo complessità.si può vedere direttamente here. è possibile conoscere pjsua da here. Hanno anche fornito un'app demo (pjsua CLI), Pjsua CLI e la sua fonte che ti aiuterà a capire la struttura di base di un'app da costruire con pjsip che ha funzioni di chat e di chiamata.

per Android, è possibile visualizzare un'applicazione demo allo github.