You are on page 1of 60

Ministre de l'Enseignement Suprieur et de la Recherche

Scientifique
Universit de la Manouba

cole Nationale Des Sciences de l'Informatique

Rapport de pro jet de conception et de dveloppement

Softphone pour Android


SUJET :

Ralis par :

Ben Abdallah Kmar

Lazar Hamza

Sous l'encadrement de :

M. Mezghani Dhafer

Anne Universitaire :

2012-2013

Signature de l'encadrant

M. Mezgheni Dhafer

Rsum
Softphone VoIP/SIP sous Android :
Ce travail, qui s'inscrit dans le cadre du projet de conception et de dveloppement (PCD) destin aux lves ingnieurs en deuxime anne l'cole Nationale des Sciences de l'Informatique
(ENSI), a pour but la ralisation d'un client VoIP 1 mobile autour du protocole SIP 2 destin
la plate-forme Android.
L'application vise permetterait de tlphoner sur IP 3 , grer des contacts et garder un journal des appels. MjSIP, une implmentation troisime-tier crite en Java de la pile des protocoles
multimdia a t utilis et la librairie ActionBarSherlock nous a permis de surmonter les problmes de compatibilit lies aux versions Android antrieures 3.0 (Honeycomb).

Mots cls : VoIP, SIP, SDP 4 , RTP 5 , Android, MjSIP, SQLite, ActionBarSherlock, Java, POO 6

1.
2.
3.
4.
5.
6.

Voice over IP
Session Initiation Protocol
Internet Protocol
Session Description Protocol
Real-time Transport Protocol
Programmation Oriente Objet

Abstract
VoIP/SIP Softphone for Android :
This work, conducted under the software design and implementation project for the second
year engineering students at the National School for Computer Studies, aims to develop a VoIP
client for the Android platform based, mainly, on SIP.
The application's main purposes are telephony over IP, managing contacts and saving calls'
log. MjSIP, a third-party implementation of the multimedia protocols written in Java were used
as well as ActionBarSherlock library project which solved compatibility problems related to Android versions pre 3.0 (HoneyComb).

Keywords :

VoIP, SIP, SDP, RTP, Android, MjSIP, SQLite, ActionBarSherlock, Java, OOP 7

7. Object-Oriented Programming

Remerciements

Nous voudrions exprimer notre gratitude et notre reconnaissance envers tous ceux qui ont
contribu l'accomplissement de ce travail.
Nos remerciements s'adressent en premier lieu notre encadrant M. Dhafer Mezghani qui a
su nous faire sentir responsables et conants.
Nous tenons aussi remercier nos camarades de classe de l'cole Nationale des Sciences de
l'Informatique.
Qu'il nous soit aussi permis de remercier Mmes Nesrine Ben Yahia, Imtiez Fliss et Emna Souilah
pour leurs eorts dans la rvision et dans la correction de ce rapport.

Table des matires

Introduction gnrale

1 tude pralable
1.1

1.2
1.3

tat de l'art . . . . . . . . . . . . . . . . . . . . . . .
1.1.1 VoIP . . . . . . . . . . . . . . . . . . . . . . .
1.1.2 Protocole SIP . . . . . . . . . . . . . . . . . .
1.1.3 Protocole SDP . . . . . . . . . . . . . . . . .
1.1.4 Protocoles RTP/RTCP . . . . . . . . . . . .
1.1.5 Exemples de ux SIP . . . . . . . . . . . . . .
Etude de l'existant . . . . . . . . . . . . . . . . . . .
1.2.1 Etude de clients SIP/VoIP Android existants
1.2.2 Description de la solution propose . . . . . .
Prsentation du projet . . . . . . . . . . . . . . . . .
1.3.1 Cadre du projet . . . . . . . . . . . . . . . . .
1.3.2 Travail faire . . . . . . . . . . . . . . . . . .

2 Analyse et spcication
2.1

2.2

Expression des besoins . . . . . . . . .


2.1.1 Acteurs . . . . . . . . . . . . .
2.1.2 Besoins fonctionnels . . . . . .
2.1.3 Besoins non fonctionnels . . . .
Spcication . . . . . . . . . . . . . . .
2.2.1 Cas d'utilisation . . . . . . . .
2.2.2 Description des cas d'utilisation

3 Conception
3.1
3.2

3.3

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

Conception globale . . . . . . . . . . . . . . .
3.1.1 Diagramme de paquetage . . . . . . .
3.1.2 Description des paquetages . . . . . .
Conception dtaille . . . . . . . . . . . . . .
3.2.1 Conception de l'IHM . . . . . . . . . .
3.2.2 Conception de la base de donne locale
3.2.3 Traitement en arrire plan . . . . . . .
Diagrammes de squence . . . . . . . . . . . .

II

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

2
2
2
4
4
5
6
6
8
9
9
9

10

10
10
10
11
12
12
14

19

19
19
20
20
20
22
22
23

4 Ralisation
4.1
4.2

4.3

4.4

Environnement de travail . . .
4.1.1 Environnement matriel
4.1.2 Environnement logiciel .
Choix technologiques . . . . . .
4.2.1 SDK . . . . . . . . . . .
4.2.2 ActionBarSherlock . . .
4.2.3 MjSip . . . . . . . . . .
4.2.4 SQLite . . . . . . . . . .
Description des interfaces . . .
4.3.1 Gestion du compte SIP
4.3.2 Interface d'appel . . . .
4.3.3 Gestion des contacts . .
Chronogramme du travail . . .

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

27

27
27
28
29
29
29
30
31
31
31
34
35
40

Conclusion gnrale

41

Bibliographie

41

Ntographie

42

Annexes

43

A Changer l'apparence de l'mulateur Android

44

B Ajouter la bibliothque ActionBarSherlock un projet Android sous Eclipse 47


Glossaire

48

Table des gures

1.1
1.2
1.3
1.4

Fonctionnement de base de SIP [3] . . . . . . . . . . . . . . . .


Enregistrement auprs du serveur avec authentication[2] . . .
Interface de SipDroid : Activit principale avec menu apparent
Aperu de l'interface de CSipSimple . . . . . . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

5
6
7
8

2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10

Diagramme des cas d'utilisation golbal . . . . . . . . . . . . . . . . . . .


Cas d'utilisation : Emettre appel . . . . . . . . . . . . . . . . . . . . . .
Cas d'utilisation : Recevoir appel . . . . . . . . . . . . . . . . . . . . . .
Cas d'utilisation : Ajouter contact SIP . . . . . . . . . . . . . . . . . . .
Diagramme de squence systme : Ajouter compte SIP scnario nominal
Diagramme de squence : Ajouter compte SIP scnarios exceptionnels .
Diagramme de squence : Emettre appel . . . . . . . . . . . . . . . . . .
Diagramme de squence de rfrence : Conversation . . . . . . . . . . . .
Diagramme de squence : Recevoir appel . . . . . . . . . . . . . . . . . .
Diagramme de squence : Ajouter contact SIP . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

12
13
13
14
14
15
15
16
17
18

3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10

Diagramme
Diagramme
Diagramme
Diagramme
Diagramme
Diagramme
Diagramme
Diagramme
Diagramme
Diagramme

4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9

Position de l'ActionBar dans l'cran . . . . . . . . . . . .


Activit Ajouter compte . . . . . . . . . . . . . . . . . . .
Message d'erreur quand un des champs au moins est laiss
SIP URI non conforme la norme . . . . . . . . . . . . .
Ecran de chargement . . . . . . . . . . . . . . . . . . . . .
Interface de modication du compte SIP . . . . . . . . . .
Boite de dialogue de changement d'identiant SIP . . . .
Boite de dialogue de changement de mot de passe . . . . .
Interface d'mission des appels . . . . . . . . . . . . . . .

de paquetage . . . . . . . . . . . . . .
de classes du package IHM . . . . . . .
d'activits . . . . . . . . . . . . . . . .
de classes du package Base de donnes
de classes du package SIP . . . . . . .
de squence - Ajouter Contact . . . . .
de squence - Modier Contact . . . .
de squence - Supprimer Contact . . .
de squence - Appeler Adresse SIP . .
de squence - Recevoir Appel SIP . . .

IV

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

19
20
21
22
23
23
24
25
25
26

. . .
. . .
vide
. . .
. . .
. . .
. . .
. . .
. . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

29
31
32
32
32
33
33
33
34

4.10
4.11
4.12
4.13
4.14
4.15
4.16
4.17
4.18
4.19
4.20
4.21
4.22
4.23
4.24

Interface d'appel entrant .


Contact nom vide . . . . .
Contact nom existant . .
Contact SIP Uri vide . . .
Contact SIP URI invalide
E-mail non valide . . . . .
Choisir photo . . . . . . .
Prendre photo . . . . . . .
Liste des contacts . . . . .
Sans champs optionnels .
Avec champs optionnels .
Modier Contact . . . . .
Liste aprs modication .
Achage contact modi
Chronogramme du travail

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

A.1
A.2
A.3
A.4
A.5

Cration d'un nouveau AVD . . . .


Ligne de commande . . . . . . . .
Modication du chier conf.ini . .
Avant la personnalisation de l'AVD
Aprs la personnalisation de l'AVD

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

35
36
36
36
36
37
37
37
38
38
38
39
39
39
40

. . .
. . .
. . .
skin
skin

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

44
45
45
46
46

B.1 Importer Code Android existant . . . . . . . . . . . . . . . . . . . . . . . . . . .


B.2 Slectionner rpertoire spcique . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.3 Ajouter la bibliothque au projet Android . . . . . . . . . . . . . . . . . . . . . .

47
48
48

. . . .
. . . .
. . . .
avec le
avec le

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Liste des tableaux

1.1

Tableau comparatif entre solutions existantes tudies et solution propose . . . .

4.1
4.2
4.3
4.4
4.5

Caractristiques du HP Compaq 6830s .


Caractristiques du Dell Inspiron n5110
Caractristique du Samsung Gt5570 . .
Caractristique du GALAXY Nexus . .
Environnement logiciel . . . . . . . . . .

VI

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

9
27
27
28
28
29

Introduction gnrale

Avec la banalisation des rseaux haut dbit, notamment la 3G 8 , le nombre d'applications


possibles a considrablement augment. La voix sur IP est l'une des technologies les plus en vue
actuellement.
La rduction des cots des terminaux mobiles, softphones et tablettes, ainsi que la vulgarisation
des connexions permanentes orent des possibilits de dveloppement de la voix sur IP dans notre
pays. De plus, en 2012, le ministre des Technologies de l'Information et de la Communication a
annonc la libration de la VoIP de l'emprise de l'Etat et des oprateurs tlphoniques[4]. Par
ailleurs, Android constitue le principal leader des systmes d'exploitation embarqus, en nombre
d'activation par jour et en nombre d'application dans le Google Play Store. Il constitue aussi le
standard ouvert de fait des systmes d'exploitations mobiles. Sans oublier son SDK 9 toujours
en volution et dont les API 10 s sont riches et varies. Toutes ces raisons encouragent tourner
vers cette platforme.
Les intrts pour la tlphonie sur IP sont donc, de plus en plus importants et son exploitation
est de moins en moins coteuse surtout avec l'arrive du protocole SIP qui a beaucoup facilit
l'change de ux multimdia sur les rseaux IP. Il serait alors, intressant de proter de cette
nouvelle opportunit pour dcouvrir le protocole SIP, qui est relativement nouveau, par le biais
de la VoIP, sa principale application actuellement qui peut tre vue la fois comme tant une
application rpartie mais aussi une technologie de systmes temps-rel.
Notre projet consiste dvelopper une application Android de VoIP qui prote des fonctionnalits
oertes par le protocole SIP et qui permet principalement de tlphoner sur IP avec une gestion
de contacts qui s'ajoute ses fonctionalits.
Le prsent rapport s'articule autour de quatres chapitres. Le premier est une prsentation du
travail qui inclut l'essentiel des connaissances thoriques recquises et une tude comparative
des softphones VoIP/SIP les plus populaires sur Google Play Store. Le deuxime consiste
spcier les besoins de notre application. Le troisime chapitre est consacr la conception. La
ralisation sera prsente dans le dernier chapitre moyennant les imprimes cran des interfaces
de notre logiciel.

8. Troisime Gnration
9. Sofware Development Kit
10. Application Programming Interface

Chapitre

tude pralable
Dans ce chapitre, nous allons en premier lieu introduire les bases thoriques, terminologie
et concepts, lis notre projet. Deuximement, nous allons prsenter une tude comparative de
deux softphones VoIP/SIP existants sur Google Play Store. Ensuite, nous allons prsenter le
cadre gnral du projet.

1.1 tat de l'art


1.1.1 VoIP
VoIP est un abrg de l'anglais Voice over IP. Cette technologie permet de communiquer par
voix via les rseaux IP dont Internet est le principal exemple. VoIP est donc une technique, un
procd et non pas un protocole en lui mme mais durant ce processus dirents protocoles sont
utiliss dont SIP qui est considr aujourd'hui comme le protocole VoIP de rfrence.

1.1.2 Protocole SIP


Prsentation :
SIP est un protocole de signalisation de bout en bout permettant l'tablissement en temps
rel d'une session multimdia sur les rseaux IP. SIP possde l'avantage de ne pas tre exclusif
un mdium particulier et est sens tre indpendant du protocole de transport de la couche
sous-jacente.
SIP est un protocole publi par un groupe de travail de l'IETF 1 sous la RFC 2 3261 (juin 2002)
et est en cours d'adoption massive.

Fiche technique :
SIP reprend des lments techniques des protocoles SMTP 3 et HTTP 4 . Voici les caractristiques techniques de SIP en bref :
 Dans la pile TCP 5 /IP, SIP appartient la couche applicative.
1.
2.
3.
4.
5.

Internet Engineering Task Force


Request For Comment
Simple Mail Transport Protocol
Hyper Text Transport Protocol
Transmission Control Protocol

Chapitre 1. tude pralable







Le numro de port rserv par dfaut au protocole SIP est 5060.


SIP est bti sur une architecture client/serveur.
SIP est un protocole de type requte/rponse.
SIP utilise des messages textuels structures sous la forme de chanes de caractres ASCII 6
directement lisibles et ressemblent celles de HTTP.
 Les messages sont transports par les protocoles de transport rseaux TCP ou UDP 7 .
 Dans les messages SIP les parties tablissement de session et description de session sont
spares : L'en-tte dnit les paramtres ncessaires au routage du message et l'tablissement de la session. Le corps dnit les caractristiques de la session l'aide d'un
protocole de description de session.

Entits SIP
Il existe une multitudes d'entits qui interviennent dans les changes des messages SIP parmi
lesquels nous pouvons citer[1] :
 Les Agents
 Agent Client (UAC 8 ) : Entit, qui se trouve sur tout quipement, ayant pour rle d'envoyer les requtes et recevoir les rponses. Par exemple l'appelant est considr comme
un UAC.
 Agent Serveur (UAS 9 ) : Entit, qui se trouve sur tout quipement SIP, ayant pour rle
de gnrer et d'envoyer les rponses. Par exemple l'appel est considr comme un UAS
puisqu'il rpond aux requtes.
 Les serveurs SIP
Les serveurs sont des fonctions (appareils logiques) qui peuvent tre dployes sur un ou
plusieurs appareils physiques. Voici les principaux exemple de serveurs SIP :
 Serveurs proxy (Relais mandataire) : Entits qui agissent la fois en tant que UAC et
UAS. Ils ont surtout un rle de routage des messages SIP et parfois il peuvent intervenir
dans une politique d'accs et de scurit.
 Serveurs de redirection : Les serveurs Redirect sont utiliss pendant la phase d'initiation
d'appel pour dterminer l'adresse de l'appareil appel. L'UAC de l'appareil appelant est
donc redirig vers une URI 10 alternative (le serveur proxy le plus proche du destinataire)
pour contacter l'UAS correspondant.
 Serveur d'enregistrement (RG 11 ) : Le Registrar est un serveur qui gre les requtes
REGISTER envoyes par les UAC pour signaler leur emplacement courant. Ces requtes
contenant une adresse IP (avec le numro de port), associe une URI SIP, seront envoys
un serveur de localisation pour stockage.
 Serveurs de localisation (LS 12 ) : Ce serveur, pseudo DNS 13 , fonctionne comme une base
de donnes qui contient les enregistrements des terminaux, donc l'association entre URI
SIP et (IP,port). Le serveur de localisation est consult par un serveur proxy ou un
serveur de redirection pour obtenir des informations sur la localisation de l'appel.
6.
7.
8.
9.
10.
11.
12.
13.

American Standard Code for Information Interchange


User Datagram Protocol
User Agent Client
User Agent Server
Uniform Resource Identier
Registrar
Location Server
Domain Name System

Rapport de PCD

2012 - 2013

Chapitre 1. tude pralable

1.1.3 Protocole SDP


Pour dcrire la session dans le corps de quelques messages du protocole SIP, le protocole
recommand mais non obligatoire est SDP (RFC4566). Ce protocole sert spcier les paramtres de session en cours d'tablissement ou dj tablie an d'aider les candidats souhaitant
y participer dcider d'y joindre ou non en fonction des mdias proposs et leur compatibilit
avec la conguration du candidat en question.
Un message SDP est compos d'une srie de lignes dont chacune correspond un champ identi par la premire lettre minuscule de la ligne en question qui est l'abrviation du nom de ce
champ. Chaque ligne respecte un ordre prcis an de simplier l'analyse lexicale. Il existe aussi
des normes d'utilisation du jeu de caractres dans les messages SDP, leur standarisation est xe
par les RFCs.
Parmi les lments qui peuvent tre prsents dans un message SDP ont peut citer :
 Le nom et l'objet de la session
 La dure de la session (instants de dbut et de n)
 Informations sur le ou les mdias utiliss dans la session (type [audio/video], protocoles de
transport, numro(s) de port(s) et format (codecs))
 Adresse(s) du/des destinataire(s)
D'autres informations complmentaires peuvent tre incluses dans un message SDP comme la
bande passante ncessaire pour la session ou les rgles de scurit appliquer la session.

1.1.4 Protocoles RTP/RTCP


Dans l'architecture TCP/IP, les protocoles de la couche transmission ne susent pas assurer un transport de la voix. D'une part, le mcanisme de contrle de congestion de TCP pourrait
aecter le ux de donnes avec la rduction automatique du dbit d'mission. D'autre part, UDP
ne prvoit pas la correction d'erreurs et ne garantie pas l'ordre de rception des paquets. Pour
remdier ces lacunes, il est ncessaire d'utiliser un ou plusieurs protocoles supplmentaires.
Avec SIP, les protocoles conseills mais non obligatoires sont RTP et RTCP 14 . Voici quelques
caractristiques sur ces deux protocoles :
 Ces deux protocoles qui vont en pair, se situent au niveau applicatif et utilisent une stratgie
de bout en bout et n'ont donc aucun contrle sur le rseau.
 UDP est favoris TCP pour le transport des paquets RTP/RTCP.
 Ils peuvent fonctionner aussi bien en mode Unicast (point point) qu'en mode Multicast
(multipoint).
 La plage des ports utilisables par ces protocoles est comprise entre 1025 et 65535, leurs
ports rservs par dfaut sont respectivement 5004 et 5005, et bien qu'ils utilisent des ports
dirents, le numro de port de RTP est toujours pair, et celui de RTCP est toujours le
numro impair immdiatement suprieur.

RTP
Le but de RTP et de permettre la transmission des donnes ayant des contraintes de temps
rel sur les rseaux IP. Il permet entre autre de :
 identier le type des donnes transportes
14. RTP Control Protcol

Rapport de PCD

2012 - 2013

Chapitre 1. tude pralable


 synchroniser le ux de donnes du ct du destinataire grce aux marqueurs temporels ou

timestamps

 garantir la reconstruction des paquets livrs et dtecter les ventuelles pertes grce aux
numros de squence

RTCP
RTCP est un protocole de contrle des ux RTP. Il accompagne toujours le protocole RTP ;
ds qu'une session RTP est ouverte une session RTCP est implicitement lance. Son fonctionnement est bas sur des transmissions priodiques de paquets de contrle par tous les participants
d'une mme session. Si l'on considre une session audio avec deux participants, des paquets
RTCP peuvent tre mis toutes les 5 secondes. Ces paquets de contrles peuvent contenir des
feedbacks sur la qualit de service et des informations sur les participants.

1.1.5 Exemples de ux SIP


La gure 1.1 met en relief, dans un cas d'cole simple d'appel SIP, les tapes de la dcouverte
de l'adresse distante, celle de l'appel puis l'tablissement d'un simple appel SIP.

Figure 1.1  Fonctionnement de base de SIP [3]


La gure 1.2 montre les changes entre un client et un serveur SIP suite l'envoi d'une requte

REGISTER du ct du client. L'authentication est une phase importante et non obligatoire


mais souvent impose par les serveurs par mesure de scurit. Dans cet exemple, la demande
d'authentication se traduit par le message SIP 401 Unauthorized contenant dans une entte

Rapport de PCD

2012 - 2013

Chapitre 1. tude pralable


de type WWWAuthenticate une cl appele nonce que l'utilisateur doit utiliser avec l'algorithme
de cryptage ou de hashage appropri, par exemple MD5 15 , pour gnrer la rponse au ds lanc
par le serveur. Le mot de passe de l'utilisateur, dit secret est un autre paramtre de gnration
de la rponse.

Figure 1.2  Enregistrement auprs du serveur avec authentication[2]

1.2 Etude de l'existant


1.2.1 Etude de clients SIP/VoIP Android existants
Plusieurs applications VoIP/SIP sont dj disponibles sur le Play Store. Nous avons test
celles qui sont les plus recommandes 16 [5] pour mieux comprendre leur objectif commun.
15. Message Digest 5
16. recherche sur Google Play Store, mot cl = sip

Rapport de PCD

2012 - 2013

Chapitre 1. tude pralable

SipDroid

Figure 1.3  Interface de SipDroid : Activit principale avec menu apparent


SipDroid[6] est un logiciel libre sous licence GNU 17 GPL 18 . Le projet SipDroid, qui a commenc avec HSC 19 en 2008 puis repris par i-p-tel GmbH en 2009, reste la rfrence et le pionnier
des projets SIP sur Android puisqu'il existe avant mme l'arrive des APIs SIP ocielles (Android API 9). Le plus grand point fort de ce client SIP donc est sa compatiblit avec les versions
d'Android partir de 1,6 (Donut). SipDroid est bas sur MjSip : une pile SIP tierce crite en
Java en 2005 par Luca Veltri 20 .
L'aspect graphique de SipDroid n'a pas suivi l'volution de l'aspect technique de l'application
dont la version 3.0 vient de sortir le 22 avril 2013. D'autre part, la prise en main de SipDroid
n'est pas intuitive. C'est pour cel que plusieurs modes d'emploi multilingues sont disponibles
partir du site ociel [7] expliquant entre autres comment congurer SipDroid avec pbxes.org, le
fournisseur de services SIP favoris de SipDroid. Globalement, SipDroid nous a paru faible, ct
nition.
17.
18.
19.
20.

GNU's Not Unix


General Public License
Hughes Systique Corporation (tats Unis)
Universit de Parme (Italie)

Rapport de PCD

2012 - 2013

Chapitre 1. tude pralable

CSipSimple

Figure 1.4  Aperu de l'interface de CSipSimple


CSipSimple[8] a t cr par Rgis Montoya en 2009 quand il a vu que SipDroid ne faisait
pas l'aaire[9]. Le principal avantage de ce client VoIP est sa qualit sonore de PjSIP : une
librairie SIP externe ddie aux systmes embarqus, entirement crite en C. CSipSimple est
un logiciel libre sous licence GNU GPL. Ainsi le projet est activement dvelopp ; de nouvelles
fonctions sont ajoutes la demande des utilisateurs et par des utilisateurs mme. Il existe plusieurs plugins et addons tlchargeable partir du Google Play Store.
CSipSimple est dot d'une belle interface qui prote de la libraire ActionBarSherlock pour apporter la touche de beaut de Honeycomb (Android version 3.x) aux version antrieures. CSipSimple
est assez facile manipuler et parmi les choses agrables avec CSipSimple ce sont les wizards 21
de conguration.

1.2.2 Description de la solution propose


Les applications dcrites prcdemment sont quasiment compltes du point de vue fonctionnalits et ne pourraient tre que de bons exemples pour notre projet sans pour autant les
rpliquer. Le problme est qu'ils utilisent plusieurs applications par dfaut d'Android comme le
gestionnaire des contacts ou le journal des appels au lieu d'implmenter des fonctionnalits quivalentes ce qui a provoqu l'entrelacement des donnes SIP avec les autres donnes personnelles
du tlphone. Le tableau rcapitulatif 1.1 contient les principales dirences entre notre solution
propose (nomme AndroSip) et les solutions existantes.
21. Assistants

Rapport de PCD

2012 - 2013

Chapitre 1. tude pralable

Table 1.1  Tableau comparatif entre solutions existantes tudies et solution propose
Application Gestion des Contacts Journal des appels Interface graphique Facilit d'usage
CSipSimple
Non
Oui
Soigne
Eleve
SipDroid
Non
Non
Archaque
Moyenne
AndroSip
Oui
Oui
Simple
Eleve

1.3 Prsentation du projet


1.3.1 Cadre du projet
Ce travail s'inscrit dans le cadre du Projet de Conception et de Dveloppement (PCD),
anciennement appel Projet de deux Modules (P2M), que nous sommes amens ectuer durant
le deuxime semestre en deuxime anne l'Ecole National des Sciences de l'Informatique (ENSI).

1.3.2 Travail faire


Notre travail consiste concevoir et raliser une application VoIP mobile sous Android en
exploitant le protocole SIP avec les fonctionnalits de gestion de contacts et de sauvegarde de
journal des appels.

Conclusion
Dans ce chapitre nous avons, tout d'abord, prsent les protocoles essentiels notre application. En deuxime lieu, nous avons eectu une tude de l'existant dans le but d'en extraire les
critres de la solution adopter. Dans le chapitre qui suit, nous allons spcier les besoins de la
solution retenue.

Rapport de PCD

2012 - 2013

Chapitre

Analyse et spcication
Dans le prsent chapitre, nous commenons par identier l'acteur de notre application et
exprimer les services que doit lui orir l'application. Dans la deuxime partie, nous prsentons la
spcication semi-formelle, suivant la norme UML 1 2.0, de ces besoins travers des diagrammes
de cas d'utilisations et leurs scnarios respectifs.

2.1 Expression des besoins


2.1.1 Acteurs
Nous avons un seul acteur pour notre application qui est l'utilisateur qui peut la fois tre
appelant (mettre des appels) et appel (recevoir des appels).

2.1.2 Besoins fonctionnels


L'application cible doit orir les fonctionnalits suivantes :

Grer un compte SIP :


 Ajouter un compte SIP : Un premier lancement de l'application ncessite la saisie des informations relative au compte SIP qui sera utilis pour pouvoir tlphoner. Ces informations
sont essentiellement : l'identiant SIP et le mot de passe utilis.
 Mettre jour un compte SIP : L'application doit permettre tout moment de recongurer
le compte SIP utilis en modiant ses paramtres.

Emettre des appels vers des numros SIP :


Deux cas de gures se prsentent :
 L'application doit permettre l'utilisateur de composer directement une URI SIP et
d'mettre un appel vers cet URI.
 L'application doit permettre l'utilisateur de choisir un contact SIP enregistr et de l'appeler.
1. Unied Modeling Language

10

Chapitre 2. Analyse et spcication

Recevoir des appels :


L'application doit permettre l'utilisateur de recevoir des appels sur son compte SIP.

Garder un journal des appels :


 Sauvegarder le journal : L'application doit garder automatiquement la trace et les dtails
de tous les appels entrants et sortants .
 Consulter le journal : L'application doit permettre, la demande de l'utilisateur, l'achage
du journal des appels.

Grer des contacts :


 Ajouter un nouveau contact : L'application doit permettre l'ajout d'un nouveau contact.
 Supprimer un contact existant : L'application doit permettre la suppression des contacts.
 Modier un contact existant : L'application doit permettre la mise--jour des informations
d'un contact.

2.1.3 Besoins non fonctionnels


L'application doit satisfaire les facteurs de qualits suivants :

Rutilisablit :
Le code source de notre application doit tre bien organis, lisible et comprhensible. Les
tabulations, espacements, indentations et autres normes (appellation des variables, paramtres,
classes, mthodes, attributs doit tre signicative) sont recommands.

Ergonomie :
L'interface doit tre moderne et le passage entre les dirents menus doit tre intuitif. Les
lments prsents l'cran doivent tre de faible densit.

Performance :
L'application doit permettre d'changer de la voix dans un rgime de temps rel et lancer
des sevices en arrire plan quand c'est ncessaire.

Gnricit :
L'application doit pouvoir communiquer avec n'importe quel entit SIP.

Ecacit :
L'application doit tre assez lgre dans le sens ou elle utilise le moins possible de ressources
matrielles.

Compatibilit :
L'application doit viser le maximum de terminaux Android.

Rapport de PCD

11

2012 - 2013

Chapitre 2. Analyse et spcication

2.2 Spcication
Les diagrammes de cas d'utilisation servent illustrer le comportement fonctionnel de notre
application. Chaque cas d'utilisation reprsente un type d'interaction entre l'utilisateur et notre
systme.

2.2.1 Cas d'utilisation


Cas d'utilisation global
La gure 2.1 reprsente le diagramme de cas d'utilisation global de notre systme.

Figure 2.1  Diagramme des cas d'utilisation golbal


Ranements des cas d'utilisation
Les gures 2.2, 2.3 et 2.4 sont les ranements du diagramme des cas d'utilisation gnral de
la gure 2.1.

Rapport de PCD

12

2012 - 2013

Chapitre 2. Analyse et spcication

Emettre appel

Figure 2.2  Cas d'utilisation : Emettre appel


Recevoir appel

Figure 2.3  Cas d'utilisation : Recevoir appel

Rapport de PCD

13

2012 - 2013

Chapitre 2. Analyse et spcication

Ajouter contact

Figure 2.4  Cas d'utilisation : Ajouter contact SIP


2.2.2 Description des cas d'utilisation
Diagramme de squence : Grer compte SIP
 Scnario nominal :

Figure 2.5  Diagramme de squence systme : Ajouter compte SIP scnario nominal
 Premier scnario exceptionnel :
1. L'utilisateur saisit des donnes errones.
2. Le systme vrie les donnes.
3. Le systme n'accepte pas les donnes introduites.
 Deuxime Scnario exceptionnel :
1. L'utilisateur saisit des donnes syntaxiquement correctes.
2. Le systme tempte de s'enregistrer auprs du serveur SIP spci.
3. L'enregistrement choue et le compte n'a pas t sauvegard

Rapport de PCD

14

2012 - 2013

Chapitre 2. Analyse et spcication

Figure 2.6  Diagramme de squence : Ajouter compte SIP scnarios exceptionnels


Diagramme de squence : Emettre appel
 Prconditions :
1. Le compte SIP est enregistr.
2. Pas d'appel dj en cours.
 Scnario nominal :

Figure 2.7  Diagramme de squence : Emettre appel


Rapport de PCD

15

2012 - 2013

Chapitre 2. Analyse et spcication

Figure 2.8  Diagramme de squence de rfrence : Conversation


 Scnario alternatif :
1. L'appelant raccroche avant que l'appel dcroche.
2. L'appel est annul. L'cran d'appel est ferm.

Diagramme de squence : Recevoir appel


 Prconditions :
1. Le compte SIP est enregistr.
2. Pas d'appel dj en cours.
 Scnario nominal :

Rapport de PCD

16

2012 - 2013

Chapitre 2. Analyse et spcication

Figure 2.9  Diagramme de squence : Recevoir appel


 Scnario alternatif :
1. L'appel appuie sur le bouton raccrocher.
2. L'appel est refus. L'cran d'appel est ferm automatiquement.

Diagramme de squence : Ajouter contact


 Prcondition :
Contact inexistant.
 Scnario nominal :

Rapport de PCD

17

2012 - 2013

Chapitre 2. Analyse et spcication

Figure 2.10  Diagramme de squence : Ajouter contact SIP


 Scnario alternatif :
1. L'utilisateur n'introduit pas le nom du contact ou son addresse SIP et appuie sur le
bouton d'ajout.
2. Le systme lui ache un message lui indiquant que l'un des deux champs au moins
est vide.

Conclusion
Tout au long de ce chapitre nous avons essay de spcier avec le degr de dtails le plus
haut possible les besoins auxquels doit rpondre notre application. La conception, qui se base
sur cette spcication, fera l'objet du prochain chapitre.

Rapport de PCD

18

2012 - 2013

Chapitre

Conception
Aprs avoir explicit les fonctionnalits de notre logiciel, nous entamons le stade de conception. Nous prsentons dans la partie conception globale de ce chapitre, le dirents composants
de notre application travers un diagramme de paquetage. Dans la conception dtaille, nous
illustrons la vue structurelle par des diagrammes de classes et la vue comportementale par un
diagramme d'activit.

3.1 Conception globale


3.1.1 Diagramme de paquetage
Notre application se dcompose en trois grandes parties essentiellement comme le montre la
gure 3.1. Il faut noter que les packages MjSIP et ActionBarSherlock sont des librairies externes
utiles notre application.

Figure 3.1  Diagramme de paquetage


19

Chapitre 3. Conception

3.1.2 Description des paquetages


1. L'interface graphique : comme la partie statique est garantie par les chiers XML 1 , la
partie dynamique de l'inteface graphique qui constitut l'IHM 2 qui permet l'interaction
avec l'utilisateur est assure soit par les classes de type Activity 3 soit par les classes de
type Fragment 4 .
2. SIP : C'est la partie qui s'excute en arrire plan et qui gre le trac SIP/RTP et nous
pouvons en distinguer ds classes de type Service 5 ou BroadcastReceiver 6 .
3. Base de donnes : Dans notre application, les donnes sauvegarder peuvent prendre trois
formes : des paramtres persistants grs par une classe qui hrite de SharedPreference 7 ,
une base de donnes locale de type SQLite et d'autres donnes stockes dans une classe
ContentValues 8 .

3.2 Conception dtaille


3.2.1 Conception de l'IHM
Le diagramme de classe de la gure 3.2 illustre les principales classes appartenant au package
de l'IHM.

Figure 3.2  Diagramme de classes du package IHM


Le diagramme d'activit de la gure 3.3 montre les interactions possibles avec les direntes
interfaces de notre application. Ce diagramme rsume le cycle de vie de notre application.
1.
2.
3.
4.
5.
6.
7.
8.

eXtanded Markup Language


Interface Homme Machine
android.app.Activity
android.app.Fragement
android.app.Service
android.content.BroadcastReceiver
android.content.SharedPreferences
android.content.ContentValues

Rapport de PCD

20

2012 - 2013

Chapitre 3. Conception

Figure 3.3  Diagramme d'activits


Rapport de PCD

21

2012 - 2013

Chapitre 3. Conception

3.2.2 Conception de la base de donne locale


La gure 3.4 illustre les classes utilises dans la gestion des contacts.

Figure 3.4  Diagramme de classes du package Base de donnes


3.2.3 Traitement en arrire plan
Le diagramme de classe de la gure 3.5 illustre les principales classes appartenant au package
SIP.

Rapport de PCD

22

2012 - 2013

Chapitre 3. Conception

Figure 3.5  Diagramme de classes du package SIP

3.3 Diagrammes de squence

Figure 3.6  Diagramme de squence - Ajouter Contact


Rapport de PCD

23

2012 - 2013

Chapitre 3. Conception
L'ajout d'un contact est une fonctionnalit de notre application exprime l'aide du diagramme de squence de la gure 3.6.
L'utilisateur, suite l'appui sur le bouton "Ajouter contact" se trouvant dans le fragment
"ContactsFrag" se situe dans une nouvelle activit "AddconActivity". Dans cette dernire il va
remplir les champs obligatoires Nom, SIP URI et optionellement E-mail et une image du contact.
Aprs l'insertion des donnes, le systme vrie leurs validits en envoyant un message d'erreur dans le cas chant.
Lorsque les donnes sont valides et avec l'appui sur le bouton "Ajouter" on va crer un nouveau
contact avec la mthode createContact(String,String,String,String) de la classe ContactDB. Finalement, un retour au fragment "ContactsFrag" aura lieu avec l'achage de la liste des contacts
et parmi eux le contact nouvellement ajout.

Figure 3.7  Diagramme de squence - Modier Contact


Notre application ore la possibilit de modier les contacts, ce qui est illustr par la gure
3.7. En eet, dans le fragment "ContactsFrag", la slection d'un lment de la liste des contacts
permet le passage une autre activit qui est "ShowContact". Dans cette dernire, l'appui sur le
bouton "Modier Contact" induit son tour le passage l'activit "ModifContact". L'utilisateur
insre les modications spciques. Le systme vrie ainsi la validit des donnes introduites.
Dans le cas chant, il envoie un message d'erreur jusqu' leur acceptation. Une mise jour du
contact est alors faite et ce l'aide de la mthode updateContactWithId(int,Contact) de la classe
ContactDB.
Rapport de PCD

24

2012 - 2013

Chapitre 3. Conception

Figure 3.8  Diagramme de squence - Supprimer Contact


Une fonctionnalit de suppression de contact est dcrite dans la gure 3.8 comme suit : en
appuyant sur le bouton "Supprimer" se trouvant dans l'activit "ModifContact", nous pourrons
supprimer le contact en question grce la mthode RemoveContactWithName(String) de la
classe ContactDB.

Figure 3.9  Diagramme de squence - Appeler Adresse SIP


La gure 3.9 montre l'enchanement des actions pour mettre un appel vers une adresse SIP.
Rapport de PCD

25

2012 - 2013

Chapitre 3. Conception
Ceci commence par la saise d'une SIP URI correcte du destinataire. Ensuite le fait d'appuyer
sur le bouton d'mission d'appel permet de lancer un dialogue SIP en background, qui une fois
termin par un message "180 RINGING" signalant que l'appel est joignable et non occup avec la
mthode onCallConrmed(), permet le lancement d'une nouvelle activit "Call". La session audio
RTP est ouverte une fois l'appel dcroche, qui est un vnement signal par onCallAccepeted(),
et peut nir quand l'un des deux bouts de la session dcide d'appuyer sur le bouton qui permet
de "Raccrocher".

Figure 3.10  Diagramme de squence - Recevoir Appel SIP


Notre application reste l'coute de nouveaux appels entrants. Les appels reus sont signals
par l'achage en premier plan de l'activit "Call" qui permet soit de dcrocher soit d'ignorer
l'appel comme le montre la gure 3.10. Une fois la communication tablie, une session audio RTP
est automatiquement lance. Le ux RTP n'est coup que lorsque l'appel est termin ; c'est--dire
quand un des deux extrmits dcide d'appuyer sur le bouton "Raccrocher".

Conclusion
Dans ce chapitre, nous avons dtaill l'aide des diagrammes UML, la conception de notre
application dont la ralisation va suivre dans le chapitre suivant.
Rapport de PCD

26

2012 - 2013

Chapitre

Ralisation
Ce chapitre permet de prsenter les rsultats du travail achev. Tout d'abord, nous y prcisons
les caractristiques du matriel utilis et les logiciels choisis dans l'laboration de ce projet pour
justier ensuite les choix techniques adopts. Enn, nous nissons par exposer les direntes
interfaces de notre application.

4.1 Environnement de travail


Il est indispensable de connatre les caractristiques du matriel qui a permis la ralisation
de ce projet ainsi que les dirents logiciels utiliss.

4.1.1 Environnement matriel


Ordinateurs portables
Durant ce projet, nous avons utilis chacun son ordinateur personnel dont les principales
caractrstiques sont mentionnes respectivement dans les tableaux 4.1 et 4.2.
Modle
CPU
RAM
Disque dur

HP Compaq 6830s
Intel(R) Core(TM)2 Duo T5870 2x2.00GHz
2990 MiB
250Gb

Table 4.1  Caractristiques du HP Compaq 6830s


Modle
CPU
RAM
Disque dur

Dell Inspiron n5110


Intel(R)Core(TM) i7-2670QM CPU @ 2.20 GHz
8192 MiB
500Gb

Table 4.2  Caractristiques du Dell Inspiron n5110

27

Chapitre 4. Ralisation

Smartphones
Pour debugger et tester l'application, hormis l'usage frquent des AVD 1 s, nous avons utilis
deux smartphones de la marque Samsung totalement dirents dans leurs caractristiques surtout
la version de l'OS 2 et le type d'achage. Les tableaux 4.3 et 4.4 rsument ces caractristiques.
Modle
CPU
Mmoire interne
Mmoire externe
Rsolution

Samsung GALAXY Mini Gt5570


Single core, 600 MHz, ARM11
0.16 Gb
2 Gb (microSD)
240 x 320 pixels

Table 4.3  Caractristique du Samsung Gt5570


Modle
CPU
RAM
Mmoire interne
Rsolution

Samsung GALAXY Nexus


Dual core, 1200 MHz, ARM Cortex-A9
1024 MB
32 GB
720 x 1280 pixels

Table 4.4  Caractristique du GALAXY Nexus


4.1.2 Environnement logiciel
Utilitaires SIP
 Serveur SIP : Pour pouvoir tester notre application en local, nous avons opt pour le serveur
IPBX 3 open-source le plus utilis : Asterisk de Digium. Nous avant tout d'abord essay la
compilation AsteriskNow 11 qui n'est tout autre que la distribution GNU/Linux CentOS
avec Asterisk et FreePBX pr-installs. Cependant nous avons eu des problmes avec cette
version d'Asterisk qui nous a oblig migrer vers une version plus stable et nous avons
choisi d'installer Asterisk 1.8 sur Ubuntu.
 Client SIP : Pour pouvoir eectuer des manipulations autour du protocole SIP nous avons
utilis sipSAK un outil de tests SIP accessible en ligne de commande. Cet outil puissant
est quali de couteau suisse SIP.

Logiciels divers
Tous les logiciels utiliss durant notre projet sont numrs dans le tableau 4.5.
1. Android Virtual Device
2. Operating System
3. IP Private Branch eXchange

Rapport de PCD

28

2012 - 2013

Chapitre 4. Ralisation
IDE
Modlisation UML 2.0
Editeur Latex

Systme d'exploitation
VCS 4

Eclipse Juno avec ADT v21.1.0


Microsoft Visio 2013
GNU/Linux
Texmaker 3.2
Microsoft Windows
WinEdit
Ordinateur 1
Ubuntu 12.04 LTS 32bits
Ordinateur 2 Microsoft Windows 7 64bits
Tlphone 1 Android 2.3.6 (Gingerbread)
Tlphone 2
Android 4.2 (Jelly Bean)
Git avec EGit

Table 4.5  Environnement logiciel

4.2 Choix technologiques


4.2.1 SDK
Nous avons choisi de travailler avec la dernire version disponible et stable d'Android savoir
Android 4.2.x Jelly Bean (API 17) mais nous avons aussi pris en considration les autres versions
prcedentes d'Android et nous avons x la version minimale recquise dans le manifest.xml de
notre application l'API 9 qui est l'quivalent d'Android 2.3.x (Gingerbread) et ceci pour viser
le maximum d'utilisateurs vu qu'il existe encore une grande partie de terminaux Android encore
quips par cette version [10].

4.2.2 ActionBarSherlock

Figure 4.1  Position de l'ActionBar dans l'cran


ActionBar [14] est un composant graphique essentiel des applications Android, qui apparat
en haut de chaque cran, sous la barre de notication comme le montre la gure 4.1. Il permet
notamment de donner une identit visuelle l'application (icne et nom). Cette barre permet
Rapport de PCD

29

2012 - 2013

Chapitre 4. Ralisation
galement de naviguer entre les direntes fragments de l'application. ActionBar est disponible
dans le SDK Android ociel, depuis la version 3.0 Honeycomb d'Android (avec des amliorations importantes dans la version 4.0 Ice Cream Sandwich). Le souci majeur est que l'usage de
l'ActionBar dans une application, rend cette dernire incompatible avec les versions Android
antrieures 3.0.
ActionBarSherlock est la solution ce problme. ABS 5 est donc une extension de la librairie
de compatibilit faite pour faciliter l'utilisation de la barre d'action travers toutes les versions
d'Android avec l'utilisation d'une seule API. La stratgie de Jake Wharton, initiateur et princiapl
dveloppeur du projet ABS, a t plutt simple : utiliser le code source mis disposition sur
le projet AOSP 6 et faire les modications ncessaires pour le faire fonctionner sur des versions
antrieures. Pour rsumer ABS, c'est :
 l'API standard de l'ActionBar adapte sur n'importe quelle version d'Android
 l'implmentation native sur Android 4.x : il se comporte alors simplement comme une
simple wrapper
 une implmentation ddie pour toutes les versions antrieures 4.0 en utilisant une version
largement modie par rapport ce qui est disponible dans le projet AOSP

4.2.3 MjSip
L'implmentation par dfaut du protocole SIP dans le SDK d'Android est disponible partir
de la version 9 de l'API, cependant cette implmentation soure de beaucoup de problmes et
il n'existe presque pas d'applications sur le Google Play Store qui l'utilise. Parmi les dfauts
majeurs de la pile SIP d'Android est son incompatiblit avec plusieurs appareils[11]. Nous avons
tlcharg et essay l'exemple diditacticiel ociel qui montre l'utilisation des APIs SIP. Notre
test conrme ce que nous avons lu sur le web, le projet n'a pas pu s'excuter car notre appareil
est non support par SipManager. Ceci ne prouve qu'une chose ; le ct SIP avec Android est
presque dlaiss.
Pour ce qui est du protocole RTP, mme s'il a t utilis ds l'API 9 ct du protocole SIP, il
n'a t rendu publique qu'en API 12[12]. Or, notre projet doit tre compatible avec les versions
d'Android antrieures l'API 12. C'est pourquoi on a dlaiss l'usage des classes RTP d'Android.
C'est ainsi que nous nous sommes mis chercher une alternative, donc une implmentation
troisime-tier de la pile SDP/SIP/RTP. Aprs avoir mis beaucoup de temps pour la recherche
et la documentation sur les dirents choix, nous avons nit par opter pour MjSip et nous avons
cart JainSIP, NGN 7 Stack de Doubango et PjSIP pour les raisons suivantes :
 La librairie JainSIP[17] ne peut pas s'ajouter un projet Android cause des conits de
nommage avec les classes SIP ocielles qui sont inspires de celles de JainSIP[18].
 PjSIP[15] est crite en C, d'o la ncessit de dvelopper avec le NDK 8 en utilisant les
glsJNIs. Cette approche nous a paru hazardeuse et risque vu que nous sommes encore
nos dbuts avec Android. De plus, PjSIP ne prsente pas encore de version ocielle pour
Android.
 NGN-Stack de Doubango [16] est trop gourmande en espace mmoire et ajoute des fonctionnalits jugs inutiles dans notre projet.
Par lmination des autres choix, nous nous sommes trouvs contraints utiliser MjSIP[13]
qui n'tait pas notre premier choix ds le dbut vu que cette librairie est presque stagnante
5.
6.
7.
8.

ActionBarSherlock
Android Open Source Project
Next Generation Network
Native Development Kit

Rapport de PCD

30

2012 - 2013

Chapitre 4. Ralisation
et manque normment de documentation. Nous avons dcouvert plus tard dans la phase de
ralisation, d'autres dfauts dans MjSIP.

4.2.4 SQLite
Pour sauvegarder les contacts de notre application nous avons opt pour l'option d'une base
de donnes locale l'aide du SGBD 9 SQLite. Ce dernier a t intgr sans le coeur mme
d'Android.Il ne ncessite pas de serveur pour fonctionner donc son excution se fait dans le
mme processus que celui de l'application. Par ailleurs, il faut le matriser an de ne pas alourdir
l'application.

4.3 Description des interfaces


4.3.1 Gestion du compte SIP
Ajout du compte SIP :
Un premier lancement de l'application va automatiquement dclencher l'achage de l'activit
Ajouter Compte qui demandera la saisie de l'adresse SIP de l'utilisateur et son mot de passe
comme le montre la gure 4.2.

Figure 4.2  Activit Ajouter compte


Plusieurs tests sont excuts en local avant la vrication avec le serveur qui peut prendre
un laps de temps d'o l'cran de chargement illustr par la gure 4.5. Parmi ces tests : le test de
champs vides dont la gure 4.3 donne un exemple et le test syntaxique du champ adresse SIP
(voir 4.4).
9. Systme de Gestion de Bases de Donnes

Rapport de PCD

31

2012 - 2013

Chapitre 4. Ralisation

Figure

Figure 4.4  SIP URI non conforme la

4.3  Message d'erreur quand un


des champs au moins est laiss vide

norme

Figure 4.5  Ecran de chargement


Modication de compte SIP
Il est possible de modier les paramtres de votre compte SIP tout moment, ceci grce
l'interface montre par la gure 4.6.
Rapport de PCD

32

2012 - 2013

Chapitre 4. Ralisation

Figure 4.6  Interface de modication du compte SIP


Les deux gures 4.7 et 4.8 montrent les boites de dialogues qui s'ouvrent lors de l'insertion
des nouvelles valeurs du compte SIP.

Figure 4.8  Boite de dialogue de change-

Figure 4.7  Boite de dialogue de change-

ment de mot de passe

ment d'identiant SIP

Rapport de PCD

33

2012 - 2013

Chapitre 4. Ralisation

4.3.2 Interface d'appel


La gure 4.9 prsente l'interface d'mission d'appels qui est l'interface qui est ache en
premier lieu chaque nouveau dmarrage de l'application sauf le cas o nous n'avons pas encore
congur le compte SIP. A partir de ce fragment du menu principal, il est possible d'appeler
le contact compos dans le champ "Adresse SIP" aprs avoir vri les tests habituels sur les
champs obligatoires ou ceux de type URI SIP.

Figure 4.9  Interface d'mission des appels


Ds que l'application dtecte l'arriv d'un appel entrant l'interface illustr par la gure 4.10
s'ache immdiatement l'cran en premier plan.

Rapport de PCD

34

2012 - 2013

Chapitre 4. Ralisation

Figure 4.10  Interface d'appel entrant


4.3.3 Gestion des contacts
Ajouter Contact :
An d'ajouter un contact, une saisie de ses donnes est ncessaire. On a deux champs obligatoires : Nom et SIP URI et deux champs optionnels : E-mail et Image du contact. Notre
application ore la possibilt de choisir soit une image dja existante dans la galerie des photos
soit une prise instantanne d'une photo par l'appareil photo du mobile.
Dans le cas de la non slection d'une image, une image par dfaut sera aecte au contact
nouvellement ajout.

Rapport de PCD

35

2012 - 2013

Chapitre 4. Ralisation

Figure 4.11  Contact nom vide

Figure 4.12  Contact nom existant

Dans les deux gures prcdentes 4.11 et 4.12, nous mettons en valeur les vrifcations faites
par notre application par rapport au nom du contact. Le champ nom tant obligatoire par
consquent il doit tre non vide et an d'liminer toute redondance des noms de contacts un test
est alors implment.

Figure 4.13  Contact SIP Uri vide

Figure 4.14  Contact SIP URI invalide

Nous visualisons dans les deux gures 4.13 et 4.14 les vrications faites par rapport au
deuxime champ obligatoire SIP URI. Lui aussi il doit tre non vide et sa validit est determine
partir de sa contenance "@".

Rapport de PCD

36

2012 - 2013

Chapitre 4. Ralisation

Figure 4.15  E-mail non valide


La gure prcdente 4.15 clarie le test fait par rapport la saisie du champ optionnel E-mail.

Figure 4.16  Choisir photo

Figure 4.17  Prendre photo

Les deux gures ci dessus 4.16 et 4.17 prsentent les deux possibilits avec lesquelles l'utilisateur peut personnaliser l'image du contact et ce soit en choisissant une photo contenue dans
la galerie soit en prenant une capture d'image instantanne.

Rapport de PCD

37

2012 - 2013

Chapitre 4. Ralisation

Figure 4.18  Liste des contacts


La gure prcdente 4.18 nous permet de visualiser la liste des dirents contacts.

Acher Contact :
La slection d'un contact se trouvant dans la liste des contacts nous permet de visualiser ses
donnes dja enregistres et une possibilit de sa modication ou de sa suppression.

Figure 4.19  Sans champs optionnels

Figure 4.20  Avec champs optionnels

La gure 4.19 montre l'exemple d'un contact enregistr avec seulement les champs obligatoires
(Nom et SIP URI),une photo par dfaut est alors lui aecte. Quant la seconde gure 4.20 ,
elle nous permet de visulaiser toutes les donnes mmes les optionnelles.

Rapport de PCD

38

2012 - 2013

Chapitre 4. Ralisation

Modier Contact :
Notre application permet de modier les donnes relatives aux contacts enregistrs dans sa
base de donnes.

Figure 4.21  Modier Contact


La gure ci dessus 4.21 illustre l'interface de modication de contact.

Figure 4.22  Liste aprs modication

Figure 4.23  Achage contact modi

Les gures prcdentes 4.22 et 4.23 permettent de visualiser les modications faites par
rapport au contact slectionn.

Rapport de PCD

39

2012 - 2013

Chapitre 4. Ralisation

Gestion du compte

4.4 Chronogramme du travail

Figure 4.24  Chronogramme du travail

Conclusion
Dans ce chapitre, nous avons dcrit l'environnement de travail. Ensuite, nous avons argument
les dirents choix technologiques que nous avons pris. En dernier lieu, nous avons pris quelques
captures d'cran des principales interfaces de notre application.

Rapport de PCD

40

2012 - 2013

Conclusion gnrale

L'objectif de ce projet a t de concevoir et de dvelopper une application Android de tlphonie sur IP en se basant principalement sur le protocole SIP.
Dans ce rapport, les notions thoriques de base concernant l'architecture protocolaire de
VoIP choisie ont t explicites ainsi qu'une tude de deux exemples de softphones SIP dj
existant. Ensuite, les besoins auxquels est cense rpondre notre application ont t numres
puis spcies.
La conception a t illustre par les dirents diagrammes de la norme UML 2.0, suivie de la
partie ralisation o les rsultats pratiques de notre projet ont pu tre prsents aprs avoir
prcis l'environnement de travail.
La ralisation de ce projet a t l'tape la plus dlicate faute de varits de choix technologiques
et de documentation. L'absence d'APIs de qualit des protocoles concerns par notre application,
savoir SIP et RTP destines Android nous a rendu la tche encore plus dicile. Mme le
choix de MjSIP tait mal plac. Cependant nous avons pu raliser les parties fonctionnelles de
notre application et nous avons russi raliser une interface graphique utilisant les nouveauts
d'Android et adaptes aux anciennes versions de l'OS grce la libraire ActionBarSherlock, mais
tout cel au dpit de la qualit de service.
Tout au long de ce projet, nous avons appris une certaine autonomie dans la prise de dcision
et une meilleure gestion du temps grce la combinaison Git/GitHub. Nous avons eu aussi
l'occasion d'exploiter notre savoir thorique acquis surtout en matire de conception.
Notre travail pourrait servir de support pour d'autres projets Android ou VoIP. Les principales
amliorations ventuelles notre applications seraient l'ajout de la gestion multi-comptes SIP et
d'autres codecs audio.

41

Bibliographie

[1] Gonzalo Camarillo. SIP Demystied. McGraw-Hill, 2002.


[2] Rogelio Martnez Perea. Internet Multimedia Communications Using SIP, A Modern ApR Practice. Elsevier, Inc., 2008.
proach Including Java
[3] Henry Sinnreich and Alan B. Johnston. Internet Communications Using SIP Delivering
VoIP and Multimedia Services with Session Initiation Protocol. Wiley Publishing,Inc., second
edition, 2006.

42

Ntographie

[4]

http://thd.tn/index.php?option=com_content&view=article&id=2359:
le-ministere-des-tic-libere-la-voip-de-lemprise-de-letat-orange-tunisie-peut-relancer-s
64&Itemid=361
dernire consultation 20 Janvier 2013

[5]

https://play.google.com/store/search?q=sip&c=apps
dernire consultation 11 Janvier 2013

[6]

https://play.google.com/store/apps/details?id=org.sipdroid.sipua
dernire consultation 15 Janvier 2013

[7]

http://sipdroid.com/
dernire consultation 29 Janvier 2013

[8]

https://play.google.com/store/apps/details?id=com.csipsimple
dernire consultation 15 Janvier 2013

[9]

http://r3gis.fr/blog/index.php?post/2009/10/31/SipDroid-and-Direct-RTP
dernire consultation 15 Janvier 2013

[10]

http://developer.android.com/about/dashboards/index.html
dernire consultation 12 Avril 2013

[11]

http://developer.android.com/guide/topics/connectivity/sip.html
dernire consultation 15 Avril 2013

[12]

http://developer.android.com/reference/android/net/rtp/RtpStream.html
dernire consultation 17 Avril 2013

[13]

http://www.mjsip.org/
dernire consultation 06 Mai 2013

[14]

http://actionbarsherlock.com/
dernire consultation 02 Mai 2013

[15]

http://www.pjsip.org/
dernire consultation 20 Avril 2013

[16]

http://www.doubango.org/
dernire consultation 15 Avril 2013

[17]

https://jsip.java.net/
dernire consultation 11 Avril 2013

[18]

http://stackoverflow.com/questions/tagged/jain-sip+android
dernire consultation 11 Avril 2013
43

Annexe

Changer l'apparence de l'mulateur Android


An de modier l'apparence de l'AVD pour qu'il ressemble un smartphone rel, il est
possible de lui faire changer de skin. Dans la dernire version du plugin ADT 1 disponible 21.1.0,
personnaliser son mulateur est devenu une tche un peu complexe puisque l'ancienne mthode
graphique n'est plus supporte. Ainsi, une utilisation de la ligne de commande s'impose. Nous
allons dcrire les direntes tapes ncessaires de la personnalisation du skin de l'mulateur :
1. Crer un nouveau AVD en choisissant l'appareil souhait :

Figure A.1  Cration d'un nouveau AVD


2. Choisir un skin d'un appareil mobile de votre choix : Nous partageons avec vous la source
1. Android Development Toolkit

44

Annexe A : Changer l'apparence de l'mulateur Android


du skin qu'on a utilise et qui comporte les skins pour les appareils Samsung suivants :
Galaxy Nexus, Nexus S, Nexus One, Galaxy Note, Nexus 7 et Nexus 10. http://github.
com/mingchen/android-emulator-skins/
3)Placer le dossier du skin tlcharg sous sdk/platfroms/android-[version d'API choisie]/skins
Dons notre exemple nous allons mettre le dossier NEXUS-S sous : sdk/platfroms/android17/skins
3. Sur la ligne de commande taper :
cd .android/avd/[Nom de l'avd que vous venez de crer].avd
gedit cong.ini

Figure A.2  Ligne de commande


et l vous modier les deux champs :
skin.name=[Nom du dossier tlcharg]
skin.path=/platfroms/android-[version d'API]/skins/[Nom du dossier tlcharg]

Figure A.3  Modication du chier conf.ini


4. Excuter votre application Android avec l'AVD nouvellement cr :
Rapport de PCD

45

2012 - 2013

Annexe A : Changer l'apparence de l'mulateur Android

Figure A.4  Avant la personnalisation de

Figure A.5  Aprs la personnalisation de

l'AVD avec le skin

Rapport de PCD

l'AVD avec le skin

46

2012 - 2013

Annexe

Ajouter la bibliothque ActionBarSherlock


un projet Android sous Eclipse
1. Tlcharger la version de la bibliothque souhaite depuis ce lien : http://actionbarsherlock.
com/download.html
Nous avons travaill avec la version 4.3.1
2. Sous Eclipse : Choisir File -> import -> Existing Android Code into Workspace

Figure B.1  Importer Code Android existant


Puis parcourir l'endroit o vous avez enregistr la bibliothqe tlcharge. Choisir la rpertoire contenant la bibliothque actionbarsherlock (pour les versions antrieures 4.3 le
dossier est nomm library).

47

Annexe B : Ajouter la bibliothque ABS un projet Android sous Eclipse

Figure B.2  Slectionner rpertoire spcique


3. Ajouter la bibliothque votre projet : Click droit sur le projet concern -> Properties ->
Android. Ajouter ensuite la bibliothque.

Figure B.3  Ajouter la bibliothque au projet Android


4. Supprimer le chier "android-support-v4.jar" localis dans le rpertoire "libs" de votre
projet an de xer l'erreur de type "jar mismatch".

Rapport de PCD

48

2012 - 2013

Glossary

3G

Troisime Gnration. 1

ABS ActionBarSherlock. 30
ADT Android Development Toolkit. 44
AOSP Android Open Source Project. 30
API Application Programming Interface. 1, 7, 29, 30, 41
ASCII American Standard Code for Information Interchange. 3
AVD Android Virtual Device. 28, 44
DNS

Domain Name System. 3

GNU GNU's Not Unix. 7


GPL General Public License. 7
HTTP

Hyper Text Transport Protocol. 2, 3

IETF Internet Engineering Task Force. 2


IHM Interface Homme Machine. 20
IP Internet Protocol. I, 14
IPBX IP Private Branch eXchange. 28
LS

Location Server. 3

MD5

Message Digest 5. 6

NDK
NGN

Native Development Kit. 30


Next Generation Network. 30

OOP Object-Oriented Programming. I


OS Operating System. 28
POO

Programmation Oriente Objet. I

RFC

Request For Comment. 2


49

Glossaire

RG Registrar. 3
RTCP RTP Control Protcol. 4, 5
RTP Real-time Transport Protocol. I, 4, 5, 30, 41
SDK Sofware Development Kit. 1, 30
SDP Session Description Protocol. I, 4, 30
SGBD Systme de Gestion de Bases de Donnes. 31
SIP Session Initiation Protocol. I, 15, 7, 20, 30, 36, 38, 41
SMTP Simple Mail Transport Protocol. 2
TCP

Transmission Control Protocol. 24

UAC User Agent Client. 3


UAS User Agent Server. 3
UDP User Datagram Protocol. 3, 4
UML Unied Modeling Language. 10, 26, 29, 41
URI Uniform Resource Identier. 3, 36, 38
VCS Version Control System. 29
VoIP Voice over IP. I, 1, 2, 41
XML

eXtanded Markup Language. 20

Rapport de PCD

50

2012 - 2013

You might also like