Vous êtes sur la page 1sur 37

Sommaire

1.

Etude de lorganisme ................................................................................................... 7 1.1. 1.2. Prsentation de lorganisme ................................................................................. 7 Organigramme de lorganisme ............................................................................. 7

2.

Prsentation du thme de stage .................................................................................. 10 2.1. 2.2. Champ de ltude et objet du stage .................................................................... 10 Planning prvisionnel du stage ........................................................................... 10

3.

Infrastructure informatique ........................................................................................ 11 3.1. 3.2. Matriel informatique ......................................................................................... 11 Logiciels utiliss ................................................................................................. 11

4.

Etude pralable .......................................................................................................... 14 4.1. 4.2. 4.3. Description de lexistant..................................................................................... 14 Critique de lexistant .......................................................................................... 15 Dveloppement de la solution finale .................................................................. 16

5. 6.

Etude conceptuelle ..................................................................................................... 17 Ralisation ................................................................................................................. 19 6.1. 6.2. 6.3. 7. 8. 9. 10. Spcifications fonctionnelles : ........................................................................... 19 Spcifications non fonctionnelles : .................................................................... 19 Langages et outils de dveloppement :............................................................... 19 La fentre principale .............................................................................................. 20 La fentre Contact : ................................................................................................ 22 Fentre Qui Somme nous ? .................................................................................... 24 Fentre Liste Matriel ............................................................................................ 26

Table des illustrations

Figure 1 : Organigramme de la socit .................................................................................. 7 Figure 2 : Planning du stage ................................................................................................ 10 Figure 3 : Site web statique ................................................................................................. 14 Figure 4 : Site web statique avec mulateur Android .......................................................... 15 Figure 5 : l'activit principale .............................................................................................. 21 Figure 6 : L'activit contact ................................................................................................. 23 Figure 7 : L'activit description ........................................................................................... 25 Figure 8 : L'activit Produit ................................................................................................. 35

Remerciement

Je tiens remercier et tmoigner toute ma reconnaissance aux personnels de la socit BECASOFT, pour lexprience enrichissante et pleine dintrt quelles mont fait vivre durant ce mois au sein de lentreprise BECASOFT. Cette premire exprience sera trs importante pour ma carrire et les tches auxquelles vous mavez associ mont vra iment permis de consolider mes connaissances et den dvelopper de nouvelles.

Introduction

Du 10 janvier 2013 au 9 fvrier 2013, jai effectu un stage au sein de la socit BECASOFT. Au cours de ce stage jai pu mintresser connatre le processus du travail dans cette entreprise, sintgrer dans la vie professionnelle et surtout amliorer mes connaissances thoriques avec laspect pratique dans le domaine de maintenance informatique. Llaboration de ce rapport a pour principales sources les diffrents enseignements tirs de la pratique journalire des tches auxquelles jtais affect. Enfin, les nombreux entretiens que jai pu avoir avec les employs des diffrents services de lentreprise mont permis de donner une cohrence ce rapport.

Etude de lorganisme

1. Etude de lorganisme 1.1. Prsentation de lorganisme

La socit BECASOFT est une entreprise de services informatique fonde en 2008 avec un capital de 15000 DT situe 20 Av. SALAH BEN YOUSSEF Midoun Djerba Tunisie. Cette entreprise est spcialise dans : les dveloppements de Tous Produits Multimdia: Site web, Logo, Flyer, Affiche, Carte Visite numrique, CD interactif, modlisation et animation 3D et plusieurs d'autres produits... -Ventes Matriels informatique: accessoires, ordinateur portable, ordinateur de bureau, imprimantes... -Rparation de tous Types d'appareils informatique. -Installation et configuration Rseau.

1.2.

Organigramme de lorganisme

Lorganisation de cette socit est compose dun grant M Boomaza Bechir et trois techniciens avec une secrtaire de direction.

F IGURE 1 : O RGANIGRAMME

DE LA SO CIETE

Page : 7 sur 37

Etude de lorganisme 1.2.1. La direction gnrale

Elle est charge du contrle et de la supervision du travail effectu par le service de dveloppement et le service technique, ainsi que de le contrle mensuelle du service commercial. 1.2.2. Service Commercial

Le service commercial est compos d'un agent commercial .Il est charg de la vente des produits et de la publicit. Lagent est responsable de la politique commerciale de la mini entreprise. Il suit les produits depuis leur sortie de l'atelier jusqu' leur commercialisation et s'assurant que tous les produits vendus ont bien t pays. Il transmet les comptes rendus au Responsable, coordonne la ralisation et l'exploitation de l'tude de march, tabli le prix de vente ainsi qu'un calendrier des ventes et fixe des objectifs commerciaux. 1.2.3. Service technique

Services Informatique - Dpannage - Dpannage MAC

Diagnostic complet Ajout de barrettes mmoire Rparation du systme d'exploitation MAC OS en cas de conflits matriels, drivers, Remise en service accs internet, messagerie, imprimante, scanner,... Changement de disque dur et transfert des donnes, Mise jour du MAC ou remplacer un composant dfectueux: carte mre, carte graphique, mmoire RAM, disque dur, OS,. Cration de clone, de partitions, Transfert d'un MAC a un autre (ex via Time Machine) Maintenance prventive

Page : 8 sur 37

Etude de lorganisme Services Informatique - Dpannage - Dpannage PC

Rparation du systme d'exploitation Windows en cas de conflits matriels, drivers, Suppression des virus, spyware,... Remise en service accs internet, messagerie, imprimante, scanner,... Changement de disque dur et transfert des donnes, Restauration des fichiers de dmarrage Windows, Dverrouillage de Windows 2000 / XP / VISTA / 7 en cas de perte du mot de passe, Mise jour du PC ou remplacer un composant dfectueux: carte mre, carte graphique, mmoire RAM, disque dur, OS,. Cration de clone, de partitions, Maintenance prventive

1.2.4. Service de dveloppement

CREATION GRAPHIQUE

Logo Flyer Carte visite Affiches

CREATION DES SITES WEB

Site Web statique Site Web dynamique

Page : 9 sur 37

Prsentation du thme du stage

2. Prsentation du thme de stage 2.1. Champ de ltude et objet du stage

Lobjectif majeur de ce stage est de trouver une solution mobile sous Android qui fournit presque les mmes services dun site web mais sous la forme dune application Android. Cette application fournit les services suivants : - Consulter les produits. - Voir une description sur la socit. - Permettre de contacter la socit.

2.2.

Planning prvisionnel du stage

1 ere semaine
2 me semaine 3 me semaine 4 me semaine

Phase prliminaire Etude de l'organisme Documentation Interventions dans le projet Ralisation

Rdaction du rapport Ralisation


F IGURE 2 : P LANNING
DU STAGE

Page : 10 sur 37

Infrastructure informatique

3. Infrastructure informatique 3.1. Matriel informatique

BECASOFT possde une infrastructure qui correspond ces besoins, offrant chaque employ un ordinateur, un tlfax et une imprimante multifonctions. 3.1.1. Les Ordinateurs

3.2.

Logiciels utiliss

BECASOFT utilise comme systme dexploitation Windows (Windows 7, Windows XP).Pour le service de dveloppement on utilise essentiellement deux logiciels Adobe

Photoshop et Adobe Dreamweaver, pour le service de technique on utilise Ma-Config et Hiren's BootCD. Ma-Config offre plusieurs fonctionnalit comme : Dtecter la configuration de lordinateur. Page : 11 sur 37

Infrastructure informatique Dtecter la configuration de lordinateur. Analyser les crans bleus de Windows.

Hiren's BootCD se prsente sous la forme d'une image disque graver sur un CD qui regroupe tous les outils que vous pouvez avoir besoin en cas de problme avec votre ordinateur. Tous les logiciels prsents sur le CD sont gratuits et fonctionnent sous Windows ou bien sous DOS, lequel vous pourrez accder en dmarrant votre ordinateur sur le CD Hiren's BootCD qui est bootable.

Voici quelques outils prsents sur le CD : Antivirus : AntiVir, ComboFix, Malwarebytes Anti-Malware, RootkitRevealer, Spybot, SuperAntispyware, HijackThis, etc. Sauvegarde : CloneDisk, CopyWipe, DiskImage, DriveImage XML, ImgBurn, Partition Saving, ShadowCopy, Seagate DiscWizard, XXClone, etc. BIOS : BIOS Utility, BIOS Cracker, UniFlash, etc. Gestionnaire de fichiers : Bulk Rename Utility, 7-Zip, Dos Command Center, File Wizard, Mini Windows Xp, Total Commander, etc. Nettoyeur : CCleaner, CloneSpy, Data Shredder, Duplicate File Finder, Revo Uninstaller, WinDirStat, etc. Disque dur : Darik's Boot and Nuke, DiskView, DiskWipe, HDTune, Maxtor PowerMax, Western Digital Data Lifeguard Tools,, Samsung HDD Utility,, SeaTools for Dos, etc. MBR : BootFix Utility, BootSect, Grub4Dos, isolinux, MBR Utility, etc. Optimisation : Defraggler, NT Registry Optimizer, RemoveWGA, TweakUI, XpAntiSpy. Test : Bart's Stuff Test, H2testw, CPU-Z, Memtest86+, Prime95, Windows Memory Diagnostic, HWiNFO, GPU-Z, etc. Registre : ERUNT, Glary Registry Repair, Regmon, RegShot, etc. Page : 12 sur 37

Infrastructure informatique Rcupration : DiskDigger, DiskGenius, IsoBuster, PartitionRecovery, Recuva, ShadowExplorer, TestDisk, etc. Mot de passe : ATAPWD, Kon-Boot, Offline NT Password Changer, PST (Outlook) Password Recovery, ProduKey, SniffPass, WindowsGate, etc. Partition : eXtended Fdisk, GParted Partition Editor, Mount Drives, The Partition Resizer, Partition Wizard Home Edition, etc.

BusinessCards MX est un logiciel de cration et de projet de carte de visite. Grce ce logiciel, prparez puis imprimez facilement et rapidement des cartes de visite professionnelles. L'interface du logiciel est conue de telle sorte que mme un dbutant n'aura aucune difficult l'utiliser. La phase de projet consiste positionner volont des lments prenregistrs (textes, symboles, images et fonds) disponibles dans le logiciel sur un projet de carte dj prt. Le logiciel se base sur sa propre rserve de modles de cartes prenregistres, ou sur des modles que vous pouvez imaginer vous-mme. Le logiciel contient prs de 750 modles de cartes de visite prenregistrs. Fonctionnalits: Formats: jpg, bmp, wmf, png, tiff, et plus Une douzaine deffets applicables sur les lments, par exemple : ombre porte, textures, spia, dgrads, etc. Exportez en haute rsolution (300/600 DPI) pour les fichiers PDF, JPG, TIFF et BMP Taille des cartes: min. 7040, max. 10565 Le thme de linterface peut tre chang Convertissez et exportez en CMYK (avec profils ICC) Prend en charge les langues droites gauche (comme larabe) Impression recto-verso

Page : 13 sur 37

Dveloppement de lapplication

4. Etude pralable 4.1. Description de lexistant

Dans notre cas lexistant est un site web statique (www.becasoft.tn) qui offre une ide sur la socit BECASOFT ainsi que leurs activits. Le site est compos en plusieurs parties : Qui Somme Nous ? : une description gnrale sur la socit et quelques informations sur lactivit de lentreprise. Nos Service : dans cette partie on donne plus de dtails sur les services offertes par BECASOFT : RECHARGE AUTOMATIQUE DES CARTOUCHES REPARATION DE TOUS TYPES D'APPAREIL INFORMATIQUE CREATION GRAPHIQUE CREATION DES SITES WEB Contact : Donne tous les coordonnes de la socit : E-mail, Tlphone et ladresse.

F IGURE 3 : S ITE

WEB STATIQUE

Page : 14 sur 37

Dveloppement de lapplication

4.2.

Critique de lexistant

Le site www.becasoft.tn est un site web statique mais il ne possde pas une version mobile donc la navigation sur les appareils mobiles (Smartphones ou bien les Mini Tablette). La version statique noffre pas une bonne exprience mais aussi le site ne contient pas la gamme de produit fourni par BECASOFT.

F IGURE 4 : S ITE

WEB STATIQUE AVEC EMULATEUR

A NDROID

Page : 15 sur 37

Dveloppement de lapplication

4.3.

Dveloppement de la solution finale

La solution finale pour rsoudre les problmes cest une application Android native qui donne une bonne exprience au niveau de la navigation (compatibilit des interfaces) ainsi quelle offre la liste des produits de la socit. Cette application faire une connexion directe avec linternet pour rcuprer les donnes sur la liste des produits. Cette application ne ncessite pas une mise jour pour chaque changement au niveau des produits car le changement est effectu sur le niveau de fichier PHP qui est situ au niveau serveur web. Lapplication contient une interface principale qui contient trois boutons images qui assure la navigation vers les autres interfaces. Ces derniers sont un bouton vers linterface Contact un bouton vers linterface description un bouton vers linterface de produits Chaque interface offre une ou plusieurs fonctionnalits. Linterface de contact donne aux utilisateurs plusieurs fonctionnalit comme : Tlphoner directement partir de lapplication. Ouvrir directement la boite mail pour composer un nouveau mail. Ouvrir directement le navigateur sur le site web statique de lentreprise partir de lapplication Ouvrir la situation gographique sur Google Maps en utilisant Google API. Linterface Qui Sommes-nous ? qui donne une description complte sur lentreprise. Linterface Produits permet aux utilisateurs daccder une petite base de donnes sous la forme des fichiers JSON. Les informations stockes au niveau fichier data.php (fichier qui contient tous les informations ainsi que la modification sera effectu sur ce fichier seulement) seront affichs sur trois niveaux : Dans la premire interface on veut donner la liste des produits (PC Portables, PC de bureau, Tablette etc).

Page : 16 sur 37

Dveloppement de lapplication Dans la deuxime interface on veut donner les noms des marques pour chaque produit choisi dans le premier niveau. Dans la troisime interface on veut donner des informations spcifiques de produits choisi dans linterface prcdente. La rcupration des donner ce fait par des fichiers JSON qui contiennent des fonctions qui permettent la rcupration. Les fichiers JSON sont situs au niveau de notre serveur dans le mme dossier. (Nom de domaine du serveur : besrour.uphero.com ).

5. Etude conceptuelle
Notre tude conceptuelle se base sur les services principaux de lapplication expliqus au niveau du point 4.3. Diagramme de cas dutilisation :

Page : 17 sur 37

Dveloppement de lapplication Diagramme de squence se base sur un scnario simple :

Page : 18 sur 37

Dveloppement de lapplication

6. Ralisation 6.1. Spcifications fonctionnelles :

Lapplication permet de : -accder aux donnes situes dans un serveur. -Consulter la description de la socit. -Consulter les contacts de la socit (Tlphone, E-mail, site web et situation gographique)

6.2.

Spcifications non fonctionnelles :

Lapplication doit assurer : -Un accs scuris. -Un temps de rponse faible

6.3.

Langages et outils de dveloppement :

Pour raliser ce projet, nous avons choisi d'utiliser les langages de programmation et les outils de dveloppement suivants : Langages : -UML -java -XML - PHP -JSON Les outils: -Eclipse IDE. Page : 19 sur 37

Dveloppement de lapplication -Star UML -Microsoft Word 2010 Notre application comme dans ltude conceptuelle offre plusieurs services donc elle possde plusieurs fentres :

7. La fentre principale
La fentre principale se compose essentiellement de trois boutons qui assurent la navigation vers les services de lapplication de plus il y a un bouton refresh qui permet de rafrachir lapplication. La fentre est un fichier XML qui a une relation avec un fichier java qui assure la manipulation des actions. Code XML :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:orientation="vertical" > <ImageView android:id="@+id/imageView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/becasoft" android:contentDescription="@string/becasoft"/> <TextView android:id="@+id/Text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:text="@string/credit" android:textAlignment="center" > <requestFocus /> </TextView> <ImageButton android:id="@+id/imageButton1" android:layout_width="match_parent"

Page : 20 sur 37

Dveloppement de lapplication
android:layout_height="wrap_content" android:src="@drawable/contact" android:contentDescription="@string/imagecontact"/> <ImageButton android:id="@+id/imageButton2" android:layout_width="match_parent" android:layout_height="101dp" android:src="@drawable/qui_somme_nous" android:contentDescription="@string/imagequisommenous" /> <ImageButton android:id="@+id/imageButton3" android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/logopub" android:contentDescription="@string/imageproduit" /> </LinearLayout>

F IGURE 5 : L ' ACTIVITE

PRINCIPALE

Page : 21 sur 37

Dveloppement de lapplication

8. La fentre Contact :
Dans cette fentre on trouve un bouton qui permet douvrir le service dappel pour tlphoner directement partir de lapplication, il y a aussi un bouton sous forme dimage dans laquelle on trouve le-mail et lvnement de clique permet douvrir la boite mail directement partir de lapplication, mme chose pour le site web. Finalement on a un bouton qui permet daccder Google maps

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000000" android:orientation="vertical" > <TextView android:id="@+id/Text11" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="0.12" android:ems="10" android:fontFamily="arial" android:shadowDx="1.5" android:text="@string/contact" android:textColor="#FFF456" android:textSize="50sp" > <requestFocus /> </TextView> <ImageButton android:id="@+id/imageButton2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="2.74" android:contentDescription="@string/imagecall" android:src="@drawable/device_access_call" /> <ImageButton android:id="@+id/imageButton4" android:layout_width="match_parent" android:layout_height="120sp" android:src="@drawable/siteweb" android:background="#000000" android:contentDescription="@string/descriptionfirst"/> <ImageButton android:id="@+id/imageButton3" android:layout_width="match_parent"

Page : 22 sur 37

Dveloppement de lapplication
android:layout_height="120sp" android:src="@drawable/email" android:background="#000000" android:contentDescription="@string/descriptionfirst"/> <ImageButton android:id="@+id/imageButton1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1.67" android:background="#000000" android:contentDescription="@string/imagemap" android:src="@drawable/google_maps_icon" /> </LinearLayout>

F IGURE 6 : L' ACTIVITE

CONTACT

Notre application utilise des services prdfinis comme laccs au internet et le dclenchement dun appel tlphonique directement ainsi que louverture de la boite mail tous cela ncessite des permissions qui seront situ au niveau de fichier AndroidManifest.xml : Page : 23 sur 37

Dveloppement de lapplication
<uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Pour lAPI Google maps est considrera comme un Library doit tre situ aussi dans le mme fichier AndroidManifest.xml :

<uses-library android:name="com.google.android.maps"/>

9. Fentre Qui Somme nous ?


Dans cette fentre on trouve une description complete de la socit. Code XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" tools:context=".Description" android:background="#000000"> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:contentDescription="@string/descriptionfirst" android:src="@drawable/qui" /> </RelativeLayout>

Page : 24 sur 37

Dveloppement de lapplication

F IGURE 7 : L' ACTIVITE

DESCRIPTION

La navigation entre ces fentres se fait grce lintent, ce mcanisme consiste envoyer une intent avec laquelle le systme permet douvrir les autres activits. Code Java :
imgb1 = (ImageButton)findViewById(R.id.imageButton1); imgb1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent nextScreen = new Intent(getApplicationContext(),Contact.class); startActivity(nextScreen); } });

Ce code est un exemple dune image bouton qui permet douvrir une autre activit, dans lautre activit il faut declarer une intent comme ce exemple: Intent i= getIntent();. Page : 25 sur 37

Dveloppement de lapplication

10.Fentre Liste Matriel


Dans cette activit on veut rcuprer des informations partir des fichiers situs au niveau du serveur. Il faut dabord crer ces fichiers JSON sous forme dun fichier PHP. Le fichier principal contient les informations et les autres fichiers contiennent juste les fonctions qui permettent la rcupration des donnes.
<?php $album_tracks = array( 1 => array( "id" => 1, "album" => "127 Hours", "songs" => array( array("id" => 1, "name" => "Never Hear Surf Music Again", "duration" => "5:52"), array("id" => 2, "name" => "The Canyon", "duration" => "3:01"),

Exemple dun fichier JSON

<?php include_once './data.php'; $albums = array(); // looping through each album foreach ($album_tracks as $album) { $tmp = array(); $tmp["id"] = $album["id"]; $tmp["name"] = $album["album"]; $tmp["songs_count"] = count($album["songs"]); // push album array_push($albums, $tmp); } // printing json echo json_encode($albums); ?>

Exemple dune fonction de rcupration situe dans un autre fichier

Page : 26 sur 37

Dveloppement de lapplication Il faut crer un nouveau package pour placer les classes d'aides. Vous pouvez crer nouveau package en cliquant droit sur le dossier src du projet nouveau - package> et en le nommant comme helper. Crer un nouveau fichier de classe nomm AlertDialogManager.java dans votre paquet d'aide et collez le code suivant. Ce fichier sert montrer de dialogue d'alerte dans l'application. AlertDialogManager.java
package com.example.becasoft.helper; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import com.example.becasoft.R; public class AlertDialogManager { /** * Function to display simple Alert Dialog * @param context - application context * @param title - alert dialog title * @param message - alert message * @param status - success/failure (used to set icon) * - pass null if you don't want icon * */ public void showAlertDialog(Context context, String title, String message, Boolean status) { AlertDialog alertDialog = new AlertDialog.Builder(context).create(); // Setting Dialog Title alertDialog.setTitle(title); // Setting Dialog Message alertDialog.setMessage(message); if(status != null) // Setting alert dialog icon alertDialog.setIcon((status) ? R.drawable.success : R.drawable.fail); // Setting OK Button alertDialog.setButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } });

Page : 27 sur 37

Dveloppement de lapplication
// Showing Alert Message alertDialog.show(); } }

Crer un nouveau fichier sous le mme paquet nomme ConnectionDetector.java.Ce fichier sert dtecter une connexion Internet. ConnectionDetector.java
package com.example.becasoft.helper; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; public class ConnectionDetector { private Context _context; public ConnectionDetector(Context context){ this._context = context; } /** * Checking for all possible internet providers * **/ public boolean isConnectingToInternet(){ ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity != null) { NetworkInfo[] info = connectivity.getAllNetworkInfo(); if (info != null) for (int i = 0; i < info.length; i++) if (info[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } return false; } }

Crer un nouveau fichier appel JSONParser.java et collez le code suivant. Ce fichier de classe utilis pour obtenir des donnes JSON en faisant des requtes HTTP.

Page : 28 sur 37

Dveloppement de lapplication JSONParser.java


package com.example.becasoft.helper; import import import import import import import import import import import import import import import import java.io.BufferedReader; java.io.IOException; java.io.InputStream; java.io.InputStreamReader; java.io.UnsupportedEncodingException; java.util.List; org.apache.http.HttpEntity; org.apache.http.HttpResponse; org.apache.http.NameValuePair; org.apache.http.client.ClientProtocolException; org.apache.http.client.entity.UrlEncodedFormEntity; org.apache.http.client.methods.HttpGet; org.apache.http.client.methods.HttpPost; org.apache.http.client.utils.URLEncodedUtils; org.apache.http.impl.client.DefaultHttpClient; org.json.JSONObject;

import android.util.Log; public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; // constructor public JSONParser() { } // function get json from url // by making HTTP POST or GET mehtod public String makeHttpRequest(String url, String method, List<NameValuePair> params) { // Making HTTP request try { // check for request method if (method == "POST") { // request method is POST // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(params)); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent();

Page : 29 sur 37

Dveloppement de lapplication

} else if (method == "GET") { // request method is GET DefaultHttpClient httpClient = new DefaultHttpClient(); String paramString = URLEncodedUtils.format(params, "utf-8"); url += "?" + paramString; HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } // return JSON String return json; } }

Puis il faut juste rcuprer les donnes partir de fichier JSON et mettre dans une liste. AlbumsActivity.java
package com.example.becasoft; import java.util.ArrayList; import java.util.HashMap; import java.util.List;

Page : 30 sur 37

Dveloppement de lapplication

import import import import import import import import import import import import import import import import

org.apache.http.NameValuePair; org.json.JSONArray; org.json.JSONException; org.json.JSONObject; android.app.ListActivity; android.app.ProgressDialog; android.content.Intent; android.os.AsyncTask; android.os.Bundle; android.util.Log; android.view.View; android.widget.AdapterView; android.widget.ListAdapter; android.widget.ListView; android.widget.SimpleAdapter; android.widget.TextView;

import com.example.becasoft.helper.AlertDialogManager; import com.example.becasoft.helper.ConnectionDetector; import com.example.becasoft.helper.JSONParser; public class ProduitsActivity extends ListActivity { // Connection detector ConnectionDetector cd; // Alert dialog manager AlertDialogManager alert = new AlertDialogManager(); // Progress Dialog private ProgressDialog pDialog; // Creating JSON Parser object JSONParser jsonParser = new JSONParser(); ArrayList<HashMap<String, String>> produitsList; //produits JSONArray JSONArray produits = null; // albums JSON url private static final String URL_ALBUMS = "http://besrour.uphero.com/produits.php"; // ALL JSON node names private static final String TAG_ID = "id"; private static final String TAG_NAME = "name"; private static final String TAG_PRODUIT_COUNT = "produit_count"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_albums);

Page : 31 sur 37

Dveloppement de lapplication
cd = new ConnectionDetector(getApplicationContext()); // Check for internet connection if (!cd.isConnectingToInternet()) { // Internet Connection is not present alert.showAlertDialog(AlbumsActivity.this, "Internet Connection Error", "Please connect to working Internet connection", false); // stop executing code by return return; } // Hashmap for ListView albumsList = new ArrayList<HashMap<String, String>>(); // Loading Produits JSON in Background Thread new LoadProduits().execute(); // get listview ListView lv = getListView(); /** * Listview item click listener * ModelActivity will be lauched by passing album id * */ lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) { // on selecting a single album // TrackListActivity will be launched to show tracks inside the album Intent i = new Intent(getApplicationContext(), ModelActivity.class); // send produit id to model activity to get list of songs under that album String produit_id = ((TextView) view.findViewById(R.id.produit_id)).getText().toString(); i.putExtra("album_id", album_id); startActivity(i); } }); } /** * Background Async Task to Load all Produits by making http request * */ class LoadProduits extends AsyncTask<String, String, String> { /** * Before starting background thread Show Progress Dialog * */ @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(ProduitsActivity.this);

Page : 32 sur 37

Dveloppement de lapplication
pDialog.setMessage("Chargement Produits ..."); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show(); } /** * getting Produits JSON * */ protected String doInBackground(String... args) { // Building Parameters List<NameValuePair> params = new ArrayList<NameValuePair>(); // getting JSON string from URL String json = jsonParser.makeHttpRequest(URL_PRODUITS, "GET", params); // Check your log cat for JSON reponse Log.d("Produits JSON: ", "> " + json); try { albums = new JSONArray(json); if (albums != null) { // looping through All albums for (int i = 0; i < produits.length(); i++) { JSONObject c = produits.getJSONObject(i); // Storing each json item values in variable String id = c.getString(TAG_ID); String name = c.getString(TAG_NAME); String songs_count = c.getString(TAG_PRODUIT_COUNT); // creating new HashMap HashMap<String, String> map = new HashMap<String, String>(); // adding each child node to HashMap key => value map.put(TAG_ID, id); map.put(TAG_NAME, name); map.put(TAG_PRODUITS_COUNT, produits_count); // adding HashList to ArrayList produitsList.add(map); } }else{ Log.d("Produits: ", "null"); } } catch (JSONException e) { e.printStackTrace(); } return null; }

Page : 33 sur 37

Dveloppement de lapplication

/** * After completing background task Dismiss the progress dialog * **/ protected void onPostExecute(String file_url) { // dismiss the dialog after getting all produits pDialog.dismiss(); // updating UI from Background Thread runOnUiThread(new Runnable() { public void run() { /** * Updating parsed JSON data into ListView * */ ListAdapter adapter = new SimpleAdapter( ProduitsActivity.this, produitsList, R.layout.list_item_albums, new String[] { TAG_ID, TAG_NAME, TAG_PRODUITS_COUNT }, new int[] { R.id.produit_id, R.id.produit_name, R.id.produits_count }); // updating listview setListAdapter(adapter); } }); } } }

Page : 34 sur 37

Dveloppement de lapplication Le rsultat est :

F IGURE 8 : L' ACTIVITE P RODUIT

Page : 35 sur 37

Conclusion

Ce stage ma permis une approche plus concrte du fonctionnement des services de lentreprise BECASOFT. De point de vue technique, ce stage mas permis de comprendre clairement les tapes suivis pour rsoudre tous les problmes techniques dune manire trs efficace et de donner la chance de maitriser la maintenance concrtement. En plus jai eu loccasion de faire une tude de cas pour une application qui peut tre utilis dans la socit et cela me donner un enthousiasme de bien comprendre limportance de linformatique dans la vie relle. Le stage de perfectionnement est une occasion primordiale pour amliorer la formation des tudiants. De ma part, jai eu loccasion dtre parmi les agents de lentreprise BECASOFT, dirig par Mr Boumaaza Bechir, ce qui ma permis davoir une ide gnrale sur le plan dexcution et le processus de travail de la socit. Jai labor des connaissances sur le fonctionnement de certains services. Jai mme affect convenablement certaines tches, encadr par les agents de la socit. Ce stage ma offert une opportunit pour confronter mes connaissances thoriques avec la vie professionnelle, denrichir mes savoirs.

Page : 36 sur 37

Ntographie
http://stackoverflow.com/questions/tagged/android http://developer.android.com/develop/index.html http://www.siteduzero.com/informatique/tutoriels/creez-des-applications-pour-android http://android.developpez.com/cours/ http://www.tutos-android.com/

Page : 37 sur 37

Vous aimerez peut-être aussi