This shows you the differences between two versions of the page.
eim:laboratoare:laborator08.sip [2016/04/08 19:39] dragos.niculescu [Activitate de Laborator] |
eim:laboratoare:laborator08.sip [2016/04/12 11:48] (current) dragos.niculescu |
||
---|---|---|---|
Line 4: | Line 4: | ||
* pentru acest laborator este nevoie de telefon personal, sau microfon pentru genymotion | * pentru acest laborator este nevoie de telefon personal, sau microfon pentru genymotion | ||
- | * creați un cont gratuit pe getonsip.com | + | * creați un cont gratuit pe http://getonsip.com |
- | * sunt necesare datele de la "View Profile", atenție la parola f. lungă | + | * sunt necesare datele de la "View Profile", atenție la parola f. lungă |
+ | * username este diferit de auth_username | ||
+ | * sau un cont gratuit la http://pbxes.org, de exemplu student | ||
+ | * este obligatorie crearea unei extensii, de exemplu 100 | ||
+ | * username va fi student-100 | ||
+ | * parola este specifică extensiei/username-ului, nu contului creat la pbxes.org | ||
* se instalează aplicația CSIPsimple din playstore | * se instalează aplicația CSIPsimple din playstore | ||
+ | * introduceți contul creat la pasul anterior folosind Generic wizard/Advanced cu setările: | ||
+ | * getonsip.com: server=getonsip.com Username=student SIP authentication ID=getonsip_student Password=parola din View Profile Proxy=sip.onsip.com | ||
+ | * pbxes.org: server=pbxes.org Username=student-100 Password=parola extensiei Proxy=pbxes.org, restul câmpurilor default. | ||
* se poate face paste din host în Genymotion cu long press (left click) | * se poate face paste din host în Genymotion cu long press (left click) | ||
* se creează un contact nou 'testcall', și în loc de număr de telefon se selectează 'Add another field'/Internet Call și se adaugă adresa thetestcall@getonsip.com | * se creează un contact nou 'testcall', și în loc de număr de telefon se selectează 'Add another field'/Internet Call și se adaugă adresa thetestcall@getonsip.com | ||
Line 19: | Line 27: | ||
=== Android NGN stack === | === Android NGN stack === | ||
- | Android are o stivă SIP [[http://developer.android.com/guide/topics/connectivity/sip.html|nativă]], dar nu are încă toate funcționalitățile implementate (instant messenging, video). Totuși, pentru voce, SIP este parte a sistemului, sub numele de "internet calling". | + | Android are o stivă SIP [[http://developer.android.com/guide/topics/connectivity/sip.html|nativă]], dar nu are încă toate funcționalitățile implementate (instant messenging, video). Totuși, pentru voce, SIP este după Android 2.3 parte a sistemului, sub numele de "internet calling" în Phone/Settings. |
Pentru acest laborator, se va folosi NGN (New Generation Networking) SIP stack, cu documantația pentru API de nivel înalt: https://imsdroid.googlecode.com/svn-history/r381/branches/2.0/android-ngn-stack-00.pdf | Pentru acest laborator, se va folosi NGN (New Generation Networking) SIP stack, cu documantația pentru API de nivel înalt: https://imsdroid.googlecode.com/svn-history/r381/branches/2.0/android-ngn-stack-00.pdf | ||
+ | |||
+ | Această stivă se utilizează în modul următor: se inițializează stiva //NgnEngine//, și un serviciu SIP | ||
+ | //INgnSipService//. Se continuă cu operația de signin(SIP Registration), apoi se pot deschide sesiuni de audio/video //NgnAVSession//, sau instant messenging //NgnMessagingSession//. | ||
+ | |||
+ | Interacțiunile sunt fie imperative: | ||
+ | * //INgnSipService.register()// | ||
+ | * //NgnAVSession.makeCall()// | ||
+ | * //NgnMessagingSession.sendTextMessage()// | ||
+ | fie reactive, prin intermediul unor receivere care filtrează următoarele evenimente: | ||
+ | * //NgnRegistrationEventArgs.ACTION_REGISTRATION_EVENT// primește răspunsurile de la signin (refuz, timeout, succes) | ||
+ | * //NgnInviteEventArgs.ACTION_INVITE_EVENT// primește evenimentele legate de apel (sună, apel stabilit, apel terminat) | ||
+ | * //NgnMessagingEventArgs.ACTION_MESSAGING_EVENT// - tratează sosirea unui mesaj IM | ||
===== Activitate de Laborator ===== | ===== Activitate de Laborator ===== | ||
Line 30: | Line 50: | ||
* dacă este timp, se implementează instant messenging în activitatea secundară | * dacă este timp, se implementează instant messenging în activitatea secundară | ||
* atenție, conturile de pe getonsip.com sunt limitate la numărul de signins pe oră :(, altfel conturile sunt avantajoase deoarece au și webrtc | * atenție, conturile de pe getonsip.com sunt limitate la numărul de signins pe oră :(, altfel conturile sunt avantajoase deoarece au și webrtc | ||
- | * ([[https://github.com/dragos-niculescu/ngnsip|Aplicație finisată]]) | + | * soluție: [[https://github.com/dragos-niculescu/ngnsip|Aplicație]] care implementează punctele 1-8. Țintim în 2 ore pentru 1-6 |
** 1. ** Se clonează stiva SIP [[https://github.com/dragos-niculescu/android-ngn-stack|Android NGN stack]], și se importă în Eclipse. Se compilează și se obține bin/android-ngn-stack.jar. Se adaugă acest jar la scheletul ngnsip la Project Properties/Java Build Path/Libraries/Add JARs din proiectul deschis în eclipse (android-ngn-stack). | ** 1. ** Se clonează stiva SIP [[https://github.com/dragos-niculescu/android-ngn-stack|Android NGN stack]], și se importă în Eclipse. Se compilează și se obține bin/android-ngn-stack.jar. Se adaugă acest jar la scheletul ngnsip la Project Properties/Java Build Path/Libraries/Add JARs din proiectul deschis în eclipse (android-ngn-stack). |