• Aucun résultat trouvé

[PDF] Développement d’une application Météo avec Android document de formation - Free PDF Download

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Développement d’une application Météo avec Android document de formation - Free PDF Download"

Copied!
22
0
0

Texte intégral

(1)

Implémentation d’une application

Météo avec android

Réaliser par :

BOUHAJJA Lamia

MP1-SSICE 1

(2)
(3)

Table des matières

I. Introduction ... 4

II. Plateforme Android et outils de développement ... 4

II.1. Le SDK Android ... 4

II.2. L’Emulateur Android ... 5

II.2.1. Présentation de l’émulateur ... 5

II.2.2. Méthode de configuration d’un AVD : ... 6

II.3. Système d’exploitation Android ... 8

II.3.1. Présentation du système d’exploitation Android ... 8

II.3.2. Architecture du système d’exploitation Android ... 8

II.4. Autres outils utilisés ... 10

II.4.1. Environnement de développement Eclipse IDE ... 10

II.4.2. Langage de programmation JAVA ... 10

III. Les Web Services : ... 11

III.1. Le protocole SOAP ... 12

III.2. SOAP et XML ... 12

IV. Application Réalisée ... 14

IV.1. Introduction... 14

IV.2. Implémentation ... 14

V. Test de l’application ... 21

(4)

I. Introduction

Les appareils mobiles d'aujourd'hui sont allés au-delà de leur rôle primitif d'outils de communication. En effet ils présentent de plus en plus de fonctionnalité afin de suivre l’évolution des besoins des consommateurs. C’est le cas des Smartphones.

Aujourd’hui on parle plus des Systèmes d’exploitations dédié a des Smartphone, tel que le IOS, BADA, BlackBerry OS et ANDROID…

Dans notre projet nous intéressant au system d’exploitation mobile ANDROID où nous essayerons d’implémenté une application android qui peut se connecté a un web-service et nous rendre les informations nécessaire concernant la météo et la température.

II. Plateforme Android et outils de développement

II.1.

Le SDK Android

Le SDK (Software Developpement kit) est un ensemble d’outils de développement qui permet de créer des nouvelles applications. Son installation se fait en lançant le SDK-Manager.exe, téléchargé du site officiel d’Android, la fenêtre suivante s’ouvre :

(5)

Figure2 : Installation des packages

II.2. L’Emulateur Android

II.2.1. Présentation de l’émulateur

Le SDK Android inclut un émulateur d’appareil mobile, c’est un dispositif mobile virtuel qui s'exécute sur l’ordinateur et permet de développer et de tester des applications Android sans l'aide d'un dispositif physique.

Lorsque l'émulateur est lancé, il nous permet d’interagir avec le périphérique mobile émulé. Nous utilisons également le pointeur de la souris pour "toucher" l'écran tactile et nous pouvons utiliser certaines touches du clavier pour invoquer certaines touches sur l'appareil. L'émulateur Android imite toutes les fonctionnalités matérielles et logicielles d'un dispositif mobile typique, tel que la lecture des fichiers audio et vidéo, stockage des données, sauf qu'il ne peut pas passer des appels réels.

L'émulateur Android est une application basée sur le QEMU qui fournit un dispositif mobile virtuel ARM sur lequel nous pouvons exécuter notre application Android. Il fonctionne comme un système Android complet.

L'image du système Android distribué dans le SDK contient le code machine ARM du noyau Linux d’Android, les librairies natives, la machine virtuelle Dalvik, et les différents package Android. Les couches de l'émulateur QEMU fournissent une traduction dynamique binaire du code machine ARM à l'OS et à l'architecture du processeur de notre machine de développement.

L’émulateur Android supporte de nombreuses fonctionnalités du matériel susceptible de se trouver sur des appareils mobiles, y compris:

(6)

Le CPU ARMv5, l'unité correspondante de gestion mémoire (MMU), un écran LCD, un ou plusieurs claviers, partitions de mémoire Flash (émulé par le biais des fichiers images disque sur la machine de développement), un modem GSM, et une simulation de carte SIM.

Pour utiliser l'émulateur, nous devons d'abord créer une configuration AVD (Android Virtual Device). Nous spécifions la plateforme Android à exécuter dans l'émulateur et l'ensemble des options matérielles.

II.2.2. Méthode de configuration d’un AVD :

L'émulateur utilise un AVD configurée (Android Virtual Device) selon le choix du programmeur pour permettre de modéliser et de tester notre application plus facilement. Les AVDs permettent de définir les aspects matériels de certains téléphones émulés et de créer de nombreuses configurations pour tester des différentes versions de la plateforme Android.

La meilleure façon est de créer et configurer un AVD en utilisant l’outil graphique « AVD Manager », qui est lancé à partir d'Eclipse en cliquant sur « Fenêtre » puis « Android SDK and AVD Manager ».

La fenêtre de la figure suivante s’affiche.

Figure3 : Outil graphique « AVD manager »

Pour créer un nouvel AVD, il suffit de cliquer sur le bouton « New », une fenêtre de configuration de l’AVD se lance. Où nous pouvons donner un nom à notre AVD, choisir la version du système d’exploitation Android à utiliser, la taille de la carte SD, et le type d’écran.

(7)

Figure 4: Outil de configuration de l’AVD

Nous pouvons également ajouter autant de matériels dont on aura besoin dans notre application à partir de la zone « hardware », en cliquant sur le bouton « New » comme le montre la figure 5.

(8)

II.3. Système d’exploitation Android

II.3.1. Présentation du système d’exploitation Android

L’Android est un système d'exploitation open source pour Smartphones, PDA et les terminaux mobiles conçu par Android qui est une startup rachetée par Google.

Le Système d’exploitation Android est fondé sur un noyau Linux. Il comporte une interface spécifique développée en java. Les programmes sont exécutés via un interpréteur JIT (Just in time).

Parmi les caractéristiques de notre système d’exploitation adopté, une machine virtuelle « Dalvik » optimisé pour les appareils mobiles, un navigateur intégré basé sur l'open source « WebKit », aussi une transition graphique optimisée et alimenté par une bibliothèque graphique 3D (OpenGL ES 2.0).

De plus, Android contient l’outil « SQLite » pour stocker des données structurées, il soutien des médias pour l'audio, la vidéo et des formats d'images telles que : MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF.

II.3.2. Architecture du système d’exploitation Android

Les principales composantes du système d'exploitation Android sont organisées sous formes de couches décrites ci-dessous.

La couche Application :

Android est livré avec un ensemble d'applications de base, dont un client de messagerie, un programme des SMS, un calendrier, un navigateur, la liste des contacts. Toutes les applications sont écrites en utilisant le langage de programmation Java.

La couche Application Framework :

En fournissant une plateforme de développement ouverte, Android offre aux développeurs la possibilité de créer des applications extrêmement riches et innovantes. Les développeurs sont libres de profiter du matériel périphérique. En effet, ils peuvent exécuter les services d'arrière plan, définir des alarmes, ajouter des notifications de la barre d'état et beaucoup plus de fonctionnalité.

Les développeurs ont un accès complet aux APIs utilisés par les applications de base. L'architecture d'application est conçue pour simplifier la réutilisation des composants. N'importe quelle application peut publier ses capacités pouvant être utilisé par une autre. Cet héritage de capacité entre les applications est soumis à des contraintes de sécurité imposées par la couche.

(9)

Android inclut un ensemble des librairies utilisées telles que la librairie Open GL ES utilisée dans notre application et décrite dans le chapitre précédent. Ces bibliothèques sont accédées à travers la couche application d’Android.

La couche Android Runtime :

Un ensemble de bibliothèques de base inclut par le système d’exploitation Android. Ces bibliothèques fournissent la plupart des fonctionnalités disponibles dans les bibliothèques basiques du langage de programmation Java.

Chaque application Android s'exécute dans son propre processus avec sa propre instance dans la machine virtuelle « Dalvik ». Cette dernière a été fait de sorte qu'un dispositif peut fonctionner plusieurs tâches de manière efficace. Elle exécute les fichiers avec l'exécutable de Dalvik (. Dex) qui est un format optimisé pour une utilisation minimale de mémoire. Dalvik est composée de registres de bases et des classes compilées par un compilateur Java. De plus elle s'appuie sur le noyau Linux pour les fonctionnalités de base telles que le filtrage et la gestion de la mémoire de bas niveau.

La couche Linux Kernel :

Android se base sur le noyau Linux 2.6 pour les services système de base tels que la sécurité, la gestion de la mémoire, la gestion des processus, la pile réseau et le modèle de pilote, ce qui permet une meilleure gestion des caractéristiques des appareils mobiles.

Le noyau agit également comme une couche d'abstraction entre le matériel et le reste de la pile logicielle.

Le noyau linux est choisi car il représente un système de gestion mémoire et de processus reconnu par sa stabilité et ses performances, avec un model de sécurité, basé sur un système de permission reconnu par sa robustesse et sa performance. Ainsi le noyau linux fournit un système de driver permettant une abstraction avec le matériel. Il permet également le partage de librairies entre différents processus.

La figure ci-dessous représente les couches disponibles dans l'écosystème d’une application Android.

(10)

Figure 6 : Différentes couches du système Android

II.4. Autres outils utilisés

A part le kit de développement Android, nous avons utilisé les outils décrites ci-dessous.

II.4.1. Environnement de développement Eclipse IDE

L’environnement que nous avons utilisé pour développer notre application est « Eclipse ». Eclipse IDE (Integrated Development Environment) est un environnement de développement intégré, permettant de créer des projets de développement. Il est principalement programmer en Java, créé par la firme Sun Microsystems.

Le développement de l’architecture Eclipse IDE est basé sur la notion de plug-in. Le plug-in ADT (Android Developpement Tools) est conçu pour l’Eclipse IDE afin d’avoir un environnement intégré dans lequel on crée des applications Android. Ce plug-in sert également à l’utilisation des éditeurs XML personnalisés et le débogage.

II.4.2. Langage de programmation JAVA

Vu que notre application est destinée à être utiliser avec les Smartphones sous le système d’exploitation Android développé en JAVA et que le SDK Android (software development

(11)

kit) est en fait un ensemble d’API programmé en JAVA. Nous avons recours à utiliser ce langage de programmation, le JAVA.

Les principales caractéristiques de ce langage de programmation sont sa flexibilité, son efficacité et sa portabilité, qui font de JAVA un outil indispensable permettant d'écrire des applications puissantes et efficaces pour les multiplateformes embarquées ayant un JRE (Java Runtime Environment) telles que les téléphones portables et les processeurs à distance.

III. Les Web Services :

Un Web service est un mécanisme qui tend à donner plus d’interactions pour permettre à deux entités hétérogènes (entreprises, clients, applications, etc. ...) de dialoguer au travers du réseau Internet. Les logiciels écrits dans divers langages de programmation (C#, Visual Basic, Java, etc.), sur diverses plateformes (Linux, Windows, etc.) et avec diverses architectures peuvent employer des services Web pour échanger des données à travers des réseaux informatique. Chaque Web service doit pouvoir être découvert et invoqué dynamiquement par les applications.

Selon la définition du W3C (World Wide Web Consortium), un Web service (ou service Web) est une application appelable via Internet par une autre application d’un autre site Internet permettant l’échange de données (de manière textuelle) afin que l’application appelante puisse intégrer le résultat de l’échange à ses propres analyses. Les requêtes et les réponses sont soumises à des standards et normalisées à chacun de leurs échanges.

Si l’on devait résumer les raisons de la création des services Web, les qualificatifs tels que la simplicité des échanges, l’amélioration de la communication entre les applications en seraient les points principaux. En ajoutant à cela l’interopérabilité des programmes indifféremment de leur langage et de leur plateforme, les services Web nous prouvent une nouvelle fois que leur technologie est très attrayante. Le véritable point fort du concept c’est la normalisation des données au travers de standards connus et acceptés par tous.

(12)

1) L’application construit sa requête et la normalise grâce aux standards. 2) Le service Web traduit la requête, recherche l’application nécessaire. 3) Les données sont traitées.

4) Le service Web normalise la réponse de la requête et envoie le résultat vers l’application appelante.

5) Les données réponses sont reçues par l’application. Elles peuvent directement être interprétées.

III.1. Le protocole SOAP

C’est un protocole de dialogue par appels de procédures à distance entre objets logiciels. Sa syntaxe d’utilisation est fondée sur XML et ses commandes sont envoyées sur Internet par l’intermédiaire du protocole HTTP mais aussi SMTP et POP sous forme de texte structuré. Il permet aux systèmes objets distribués de solliciter et d’obtenir des services rendus par d’autres objets, il est moins lourd à mettre en œuvre que d’autres protocoles et c’est pour cela qu’il est de plus en plus adopté.

Le protocole SOAP est une note du Consortium W3C dont Microsoft fait partie, mais qui n’est pas spécifique à Microsoft et Windows. IBM a également participé à l’élaboration de ce protocole.

De plus il existe des implémentations Java, et Borland vient déjà d’implémenter SOAP sous Windows dans Delphi 6 et sous Linux avec Kylix.

Bien qu’il soit utilisable avec d’autres protocoles de transport, HTTP est le plus couramment utilisé. Le deuxième standard, XML, utilisé pour la structuration des données sous forme de messages est quand à lui le seul utilisé.

III.2. SOAP et XML

SOAP repose sur une approche RPC, basée donc sur des messages dont le contenu est structuré en XML.

SOAP est un protocole de communication d’ordinateur à ordinateur sous HTTP très simple, écrit en XML. Il permet l’échange de données, quelque soit les systèmes d’exploitation.

Exemple de requête HTTP contenant du code SOAP :

L’envoi d’un message SOAP correspond à une requête HTTP POST red POST /StockQuote HTTP/1.1

Host : www.stockquoteserver.com Content-Type : text/xml ; charset="utf-8" Content-Length : nnnn

(13)

SOAPAction : "Some-URI" red<SOAP-ENV :Envelope

xmlns :SOAP-ENV="http ://schemas.xmlsoap.org/soap/envelope/"

SOAP-ENV :encodingStyle="http ://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV :Body> <m :GetLastTradePrice xmlns :m="Some-URI"> <symbol>DIS</symbol> </m :GetLastTradePrice> </SOAP-ENV :Body> </SOAP-ENV :Envelope> Réponse HTTP correspondante redHTTP/1.1 200 OK

Content-Type : text/xml ; charset="utf-8" Content-Length : nnnn

red<SOAP-ENV :Envelope

xmlns :SOAP-ENV="http ://schemas.xmlsoap.org/soap/envelope/"

SOAP-ENV :encodingStyle="http ://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV :Body> <m :GetLastTradePriceResponse xmlns :m="Some-URI"> <Price>34.5</Price> </m :GetLastTradePriceResponse> </SOAP-ENV :Body> </SOAP-ENV :Envelope>

Il s’agit ici de répondre à une requête SOAP (un message contenu dans une requête HTTP, donc) demandant au serveur le montant d’un prix.

La définition d’une "enveloppe" SOAP est obligatoire : elle caractérise le message SOAP. Une "enveloppe" SOAP se subdivise en un en-tête facultatif et un corps obligatoire.

(14)

Les messages SOAP sont des transmissions en sens unique d’un émetteur vers un récepteur. C’est maintenant un standard stabilisé et déjà employé.

IV. Application Réalisée

IV.1. Introduction

Notre application consiste a nous donnez la météorologiques du pays en question, et ce par l’envoi des requêtes SOAP vers un web service.

Notre application permet de rendre la météo pour ce jour là où nous la sommes utilisés, ainsi que pour trois jours après.

Donc notre application comporte trois view : la premier nous permet de tapez la ou les noms des pays dont on veut savoir leurs météorologiques, la deuxième view nous présente la météo d’aujourd’hui avec quelque détails tel que l’heur, la température et l’humidité… Et finalement la troisième view présente la météo des trois jours suivantes.

IV.2. Implémentation

La première chose à faire lors de l’implémentation c’est de préparé les interfaces d’interaction avec l’utilisateur, pour cela nous avons préparé les fichiers XML suivant :

Days.xml :

Ce fichier contiendra la météo des trois jours : <?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:background="@drawable/background" android:layout_gravity="left"

android:paddingBottom="20px" android:paddingLeft="50px" android:paddingRight="50px" android:paddingTop="20px" android:layout_height="fill_parent"

android:layout_width="fill_parent">

<LinearLayout android:id="@+id/LinearLayout03" android:layout_width="wrap_content" android:layout_height="wrap_content"><TextView android:text="Location: "

android:layout_width="wrap_content" android:layout_height="wrap_content"

android:textStyle="bold" android:textColor="@color/Black" android:paddingRight="10px" android:id="@+id/Text"></TextView><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold"

android:textColor="@color/Black" android:paddingBottom="20px"

android:id="@+id/foreLocation" android:text="--"></TextView><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/status"></TextView></LinearLayout><LinearLayout

android:id="@+id/LinearLayout03" android:layout_width="wrap_content"

android:layout_height="wrap_content"><TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"

android:textStyle="bold" android:textColor="@color/Black" android:text="Update: " android:paddingRight="10px"></TextView><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold"

(15)

android:textColor="@color/Black" android:paddingBottom="20px" android:id="@+id/foreUpdate" android:text="HH:MM:SS"></TextView></LinearLayout>

<LinearLayout android:id="@+id/LinearLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"

android:gravity="clip_vertical" android:paddingBottom="20px">

<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/ic_launcher" android:id="@+id/slikce1"></ImageView> <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"

android:layout_gravity="center"><TextView android:layout_width="wrap_content"

android:layout_height="wrap_content" android:text="Tonight" android:textStyle="bold" android:textColor="@color/Black" android:paddingRight="20px" android:paddingLeft="20px" android:id="@+id/foreDay1"></TextView><TextView android:text="Min: "

android:id="@+id/TextView04" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold"

android:textColor="@color/Black" android:paddingLeft="20px"></TextView><TextView android:text="Max: " android:id="@+id/TextView03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold"

android:textColor="@color/Black" android:paddingLeft="20px"></TextView> </LinearLayout>

<LinearLayout android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"

android:layout_gravity="center"><TextView android:layout_width="wrap_content"

android:layout_height="wrap_content" android:id="@+id/TextView03"></TextView><TextView android:layout_width="wrap_content" android:layout_height="wrap_content"

android:id="@+id/for1Min" android:textStyle="bold" android:textColor="@color/Black" android:text="--"></TextView><TextView android:layout_width="wrap_content"

android:layout_height="wrap_content" android:id="@+id/fore1Max" android:textStyle="bold" android:textColor="@color/Black" android:text="--"></TextView>

</LinearLayout>

</LinearLayout><LinearLayout android:id="@+id/LinearLayout01"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="clip_vertical"

android:paddingBottom="20px">

<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/ic_launcher" android:id="@+id/slikce2"></ImageView> <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"

android:layout_gravity="center"><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold"

android:textColor="@color/Black" android:paddingLeft="20px" android:id="@+id/foreDay2" android:text="Tomorrow"></TextView><TextView android:text="Min: "

android:id="@+id/TextView04" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold"

android:textColor="@color/Black" android:paddingLeft="20px"></TextView><TextView android:text="Max: " android:id="@+id/TextView03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold"

android:textColor="@color/Black" android:paddingLeft="20px"></TextView> </LinearLayout>

<LinearLayout android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"

android:layout_gravity="center"><TextView android:text="" android:id="@+id/TextView06" android:layout_width="wrap_content"

android:layout_height="wrap_content"></TextView><TextView

android:layout_width="wrap_content" android:layout_height="wrap_content"

android:id="@+id/fore2Min" android:textStyle="bold" android:textColor="@color/Black" android:text="--"></TextView><TextView android:layout_width="wrap_content"

android:layout_height="wrap_content" android:id="@+id/fore2Max" android:textStyle="bold" android:textColor="@color/Black" android:text="--"></TextView>

(16)

</LinearLayout><LinearLayout android:id="@+id/LinearLayout01"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="clip_vertical">

<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/ic_launcher" android:id="@+id/slikce3"></ImageView> <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"

android:layout_gravity="center"><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold"

android:textColor="@color/Black" android:paddingLeft="20px" android:id="@+id/foreDay3" android:text="Tomorrow Night"></TextView><TextView android:text="Min: "

android:id="@+id/TextView04" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold"

android:textColor="@color/Black" android:paddingLeft="20px"></TextView><TextView android:text="Max: " android:id="@+id/TextView03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold"

android:textColor="@color/Black" android:paddingLeft="20px"></TextView> </LinearLayout>

<LinearLayout android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"

android:layout_gravity="center"><TextView android:text="" android:id="@+id/TextView06" android:layout_width="wrap_content"

android:layout_height="wrap_content"></TextView><TextView

android:layout_width="wrap_content" android:layout_height="wrap_content"

android:id="@+id/fore3Min" android:textStyle="bold" android:textColor="@color/Black" android:text="--"></TextView><TextView android:layout_width="wrap_content"

android:layout_height="wrap_content" android:id="@+id/fore3Max" android:textStyle="bold" android:textColor="@color/Black" android:text="--"></TextView>

</LinearLayout>

</LinearLayout> </LinearLayout>

(17)

Lview.xml :

Ce fichier xml contient une listeview où l’application va stocké les différent pays dont l’utilisateur veut savoir des informations concernant leurs météo :

<?xml version="1.0" encoding="utf-8"?> <LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/background">

<TextView android:id="@+id/selection" android:layout_width="fill_parent"

android:layout_height="wrap_content" /><Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btnAdd" android:text="Add New Location" android:layout_gravity="right"></Button>

<ListView

android:id="@android:id/list" android:layout_width="wrap_content" android:drawSelectorOnTop="false" android:choiceMode="singleChoice"

android:layout_height="fill_parent" android:footerDividersEnabled="true" android:headerDividersEnabled="true" android:paddingLeft="30px"></ListView> </LinearLayout>

(18)

Now.xml :

Ce fichier contiendra les informations en temps réel détaillé de la météorologiques : <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:paddingBottom="20px"

android:layout_gravity="left" android:paddingRight="50px"

android:background="@drawable/background" android:scrollbars="vertical" android:paddingTop="10px" android:paddingLeft="50px">

<LinearLayout android:id="@+id/LinearLayout04"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal">

<TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"

android:textColor="@color/Black" android:textStyle="bold" android:paddingBottom="10px" android:paddingRight="20px"

android:text="Location:"></TextView>

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25px" android:textColor="@color/Black" android:id="@+id/currLocation" android:text="--"></TextView></LinearLayout><LinearLayout android:id="@+id/LinearLayout04"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal">

<TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"

android:textColor="@color/Black" android:textStyle="bold"

android:paddingRight="20px" android:paddingBottom="50px" android:text="Update:"></TextView> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/Black" android:textSize="25px" android:text="HH:MM:SS"

android:id="@+id/currUpdate"></TextView></LinearLayout>

<TextView android:id="@+id/TextView10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold"

android:textColor="@color/Black" android:text="Temperature" android:paddingRight="20px"></TextView>

<LinearLayout android:id="@+id/LinearLayout01"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingBottom="20px">

<TextView android:layout_width="wrap_content"

android:layout_height="wrap_content" android:textColor="@color/Black" android:textStyle="bold" android:textSize="40px" android:paddingRight="55px"

android:id="@+id/currTemp" android:text="--"></TextView> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content"

android:src="@drawable/ic_launcher" android:maxHeight="48px" android:maxWidth="48px" android:id="@+id/currState"></ImageView>

</LinearLayout>

<LinearLayout android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal">

<TextView android:id="@+id/TextView05" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/Black"

(19)

<TextView android:layout_width="wrap_content"

android:layout_height="wrap_content" android:textColor="@color/Black"

android:textStyle="bold" android:id="@+id/currCondition" android:text="--"></TextView> </LinearLayout><LinearLayout android:id="@+id/LinearLayout02"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal">

<TextView android:id="@+id/TextView05" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/Black"

android:textStyle="bold" android:paddingBottom="10px" android:paddingRight="50px" android:text="Humidity: "></TextView>

<TextView android:layout_width="wrap_content"

android:layout_height="wrap_content" android:textColor="@color/Black"

android:textStyle="bold" android:id="@+id/currHumidity" android:text="--"></TextView> </LinearLayout><LinearLayout android:id="@+id/LinearLayout02"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal">

<TextView android:id="@+id/TextView05" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/Black" android:textStyle="bold" android:paddingBottom="10px" android:paddingRight="50px"

android:text="Wind: "></TextView>

<TextView android:layout_width="wrap_content"

android:layout_height="wrap_content" android:textColor="@color/Black" android:textStyle="bold" android:id="@+id/currWind" android:text="--"></TextView>

</LinearLayout> </LinearLayout>

Figure 10 : l’allure du view « Now »

Apres avoir préparer les view de l’application nous intéressant au développement des fichier.java :

(20)

Le fichier « AndroidWeatherTab.java » :

C’est dans ce fichier que nous stockant les informations que nous avons pris a partir du web

service. Donc c’est ici que nous avons fait la connexion au web service : http://tempuri.org/

en précisant les constantes suivante :

private static final String SOAP_ACTION = "http://tempuri.org/GetWeather";

private static final String METHOD_NAME = "GetWeather";

private static final String SOAP_ACTION2 = "http://tempuri.org/getStringWeather";

private static final String METHOD_NAME2 = "getStringWeather";

private static final String NAMESPACE = "http://tempuri.org/";

private static final String URL =

"http://student.labs.ii.edu.mk/ii11532/Service.asmx";

public static boolean chk_useSIformat=true;

Le fichier « Broadt3DaysActivity.java » :

Ce fichier est responsable au retour des informations météorologiques des tous les trois jours en spécifiant l’image correspondante.

Le fichier « MyLocationActivity.java » :

Ce fichier permet de lire les noms de pays écrite par l’utilisateur, les stocké dans sous forme des listes view tel que le fichier « MyLocations.xml » est désigné, et nous permet aussi de sélectionne la quel des pays déjà sauvegardé nous voulons consulter.

Les restes des fichiers java sont des activités de liaison entre les fichiers déjà décrit ci-dessus qui comportent des fonctions utilisé par ces derniers.

Le fichier « Android Maniferst.XML » :

C’est là que nous devons ajouter les différent permissions a l’application pour qu’elle réussi a se connecté a internet, s’interrogé avec le web service et nous rendre les information nécessaire.

Voilà le code de « Android Manifest.XML » : <?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="me.Whether_android"

android:versionCode="1"

android:versionName="1.1">

<uses-permission

android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

<uses-permission android:name="android.permission.CALL_PHONE" />

<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />

<application android:icon="@drawable/ic_launcher" android:label="@string/app_name">

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

<activity android:name=".NewActivity"

android:label="@string/app_name"

(21)

<activity android:name=".Broadt3DaysActivity"

android:label="@string/app_name"

>

</activity>

<activity android:name=".MyLocationActivity"

android:label="@string/app_name"

>

</activity>

<activity android:name=".AndroidWeatherTab"

android:label="@string/app_name"> <intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="15" /> </manifest>

Ne nous devons pas oublier de précisé que pour pouvoir utilisé les différents fonctions de

connexion au web services, tels que : « SoapObject » ; « request.addProperty »,

« SoapSerializationEnvelope », « SoapSerializationEnvelope », « HttpTransportSE » etc. il faut que nous téléchargeons ajoutons la bibliothèque « ksoap2 » a notre projet.

V. Test de l’application

Une fois, nous avons terminé l’implémentation de notre application. Nous allons recours à la tester en utilisant l’émulateur « Android 4.0.3 » avec la version d’API 15.

Mais lors du teste nous avons eux un problème avec la réception des informations depuis le web service que nous n’avons pas encore fixé 

(22)

VI. Conclusion Générale

Le présent travail, nous a été confié dans le cadre d’un mini projet. Nous avons abordé la technologie du développent Android qui offre multiples applications dont l’objectif est de

rependre a l’évolution des besoins des consommateurs.

Durant nos travaux de conception et de développement, nous avons appris le concept du développement Android ainsi que l’utilisation des web services et les diffèrent protocoles de dialogues avec eux. Ce qui était enrichissant pour notre binôme 

Figure

Figure 4: Outil de configuration de l’AVD
Figure 6 : Différentes couches du système Android
Figure 7 : Fonctionnement globale d’un échange de données grâce aux services Web
Figure 10 : l’allure du view « Now »

Références

Documents relatifs

The mass change of a Ti-6Al-4V powder sample during a typical high temperature treatment at 700°C for 5 hours under helium at atmospheric pressure is presented Figure 1.. It is

z Lors d’un symposium qui s’est tenu à Fukushima le 27 février 2016 sur la question de la possibilité ou non de revenir vivre dans le village d’Iitate (préf. Fukushima),

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

Cette étude a donc été construite dans le but de mesurer la pression d'interface exercée par les ceintures sur le tronc, et leurs déformations et la forme du tronc..

Ces équipes ont été réunies à Montbéliard en mai 2011 1 , grâce à un partenariat entre les conseillers pour l’ethnologie des DRAC de Franche-Comté et de Lorraine et la

J’ai pu observer ce phénomène entre les populations Tamang et les forgerons Kami indo-népalais de la haute vallée de l’Ankhu Khola, et Nancy Levine (1987) a décrit des

Elle nous présente les personnes avec qui elle a vécu, elle décrit leurs réactions à son égard, leurs joies et leurs peines, elle rapporte diverses anecdotes dont elle a été