Apprendre à créer une application Android professionnel cours PDF


Télécharger Apprendre à créer une application Android professionnel cours PDF

★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


 

Développement des applications mobiles sous Android

Refs :

•Introduction au Développement d’ApplicationAndroid - AmosseEDOUARD,

INRIA/I3S - UNSA

•Programmation Mobile – Android – Master CCI - Bertrand Estellon

Aix-Marseille Universit

•Développement sous Android Jean-Francois Lalande

- Frédéric Espiau

1

Plan

2

1.Généralités

2.Les Activités

3.Les Resources

4.Les IHMs

5.Les Intents

6.Les SQLite

Positionnement d’Android

 

 

Généralités

Android est un système d’exploitation  OPEN

SOURCE pour terminaux mobiles (smartphones,

PDA, tablet, …)

Conçu à la base par une startup (Android)

rachetée par Google en 2005

Pour la promotion de ce système Google a fédéré

autour de lui une trentaine de partenaires réunis au sein de l’Open Handset Alliance (OHA)

C’est aujourd’hui le système d’exploitation mobile le plus utilisé à travers le monde

 

Android/Java

Le SDK Android est développé en Java permet

de développer des applications avec un haut niveau d’abstraction 

?Android a sa propre machine virtuelle (DVM)

?Ne supporte pas toutes les fonctionnalités de la JRE

?Une application Android ne peut pas s’exécuter sur une machine virtuelle Java 

?Une application Java (native) ne peut pas s’exécuter sous Android 

?Android dispose de sa propre machine virtuelle 

 

Android C/C++

Il est possible d’écrire des applications

Android en utilisant le langage C/C++ qui seront exécutées directement par le système d’exploitation Linux embarqué 

?Android fournit le kit de développement NDK pour les développements d’application en C/ C++

?Utilisé dans le développement de jeux 2D/3D se basant fortement sur la librairie OpenGL 

 

Outils SDK

ADB : Outil en ligne de commande permettant

d’administrer un terminal (virtuel, réel)  :

?Transférer des fichiers (push / pull)

?Installer une application (install)

?Connexion par sockets (forward) dx :  Compilateur Android qui transforme le

bytecode java en code Dalvik apkbuilder : Compiler les sources d’une application

Android pour constituer une archieve (.apk) directement installable sous un terminal Android

}    DDMS / Monitor : Monitoring sur les activités du terminale 


 
 
 
     

   

Type de projets Android

Il existe trois catégoriesde projets sous Android: •Application Android : Type primaire des applications Android destinées à être executées directement sur un terminal

•Test Projects : Projetde test d’une application

Android

•Library project : Projet de types librairies, equivalents à une API exposant certaines fonctionnalités réutilisables.

 

Type d’applications Android

•Application de premier plan: c’est une application qui est utilisable uniquement lorsqu’elle est visible et mise en suspens lorsqu’elle ne l’est pas.

•.Application d’arrière plan (Services):

N’interagit pas avec l’utilisateur, elle s’exécute en tâche de fond.

 

Type d’applications Android

•Intermittente: c’est une application qui présente une certaine interactivité mais effectue l’essentiel de sa tâche en arrière plan. Ces applications notifient l’utilisateur lorsque cela est nécessaire.

•Widget:  ces applications représentées sous forme d’un widget de l’écran d’accueil.

 

Répertoires d’un projet Android

•bin/: Répertoire qui contient l’Application compilée.

•gen/: Répertoire regroupe le code source produit par les outils de compilation Android.

•libs/: Répertoire des fichiers JAR extérieurs de l’application .

•res/: Répertoire qui contient les ressources utilisées par l’application (images, layouts,…).

 

Répertoires d’un projet Android

•src/: Répertoire qui regroupes la ou les activités de l’application.

•: c’est un fichier qui décrit l’application.

•assets/: Répertoire qui contient les autres fichiers statiques fournis avec l’Application pour  son déploiement sur le terminal

     

Ressources et valeurs

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

<resources>

<string name="app_name">Mon application</string>

<string name="server_url"></ string>

<integer-array name=“codes_postaux“>

<item>64100</item>

<item>33000</item>

</integer-array>

<string-array name= “planetes“>

<item>Mercure</item>

<item>Venus</item>

</string-array>

<dimen name “taille“>55px</dimen>

</resources>


     

Référencer les ressources

Accéder aux vues :

getResources().getLayout(R.layout.nom_layout);

} ?Accéder aux valeurs : 

String chaine = getResources().getString (R.string.nom_string); String[] tableau= getResources(). getStringArray(R.string.nom_array);

} ?Accéder aux images : 

Drawable monImage =

getResources().getDrawable(R.drawable.nom_image)

 

Référencer les ressources

Référencement d’une ressource dans une autre ressource. La forme générale est :

"@type/identificateur" Exemple : 

@string/string_name 

@drawable/icon

@color/ma_couleur

 

Structure d’une app. Android

(Composants Java)

•     Activité (.Activity) : Programme qui gère une interface graphique

•     Service (.Service) : Programme qui fonctionne en tâche de fond sans interface

•     Fournisseur de contenu

(android.content.ContentProvider) :

Partage d’informations entre applications • Ecouteur d’intention diffusées

(android.content.BroadcastReceiver) :

 

Structure d’une app. Android

(Composants Java)

Permet à une application de récupérer des informations générales (réception d’un SMS, batterie faible, …

• Eléments d’interaction

–     Intention (android.content.Intent) : permet à une application d’indiquer ce qu’elle sait faire ou de chercher un savoir-faire



–     Filtre d’intentions (<intent-filter> : permet de choisir la meilleure application pour assurer un savoir-faire

 

•Chaque application doit avoir un fichier

dans son répertoire racine. •Le fichier manifeste présente des informations essentielles à propos votre application pour le système Android

•Le manifeste effectue les opérations suivantes :

 

•Il nomme le paquet Java pour l'application(son identifiant unique)

•Il décrit les composants de l'application - les activités, les services, récepteurs de radiodiffusion, et les fournisseurs de contenu qui constituent l'application.

• Il nomme les classes qui implémentent chacune des composantes et publie leurs capacités (intentions).

 

•Il déclare les autorisations dont l'application doit avoir pour accéder à des parties protégées de l'API et d'interagir avec d'autres applications. •Il déclare aussi les autorisations qui sont nécessaires pour d'autres avoir pour interagir avec les composants de l'application. •Il déclare que le niveau minimum de l'API Android, la liste des bibliothèques que l'application nécessite…

 

<manifest>

<uses-permission />

<permission />

<permission-tree />

<permission-group />

<instrumentation />

<uses-sdk />

<uses-configuration /> 

<uses-feature /> 

<supports-screens /> 

<compatible-screens /> 

<supports-gl-texture /> 

<application>

<uses-library />

<activity>

<intent-filter>

<action />

<category />

<data />

</intent-filter>

<meta-data /> </activity>

 

Activité

Une activité est un composant d'application qui fournit un écran avec laquelle les utilisateurs peuvent interagir afin de faire quelque chose, comme composer le téléphone, prendre une photo, envoyer un email, ou afficher une carte. Chaque activité est donnée à une fenêtre dans laquelle dessiner son interface utilisateur.

 

Activité

•Une application est généralement constitué de plusieurs activités qui sont faiblement liés entre eux.

• Chaque activité peut alors démarrer une autre activité afin d'effectuer différentes actions. Chaque fois que commence une nouvelle activité, l'activité précédente est arrêté, mais le système conserve l'activité dans une pile.

 

Activité

•Classe héritant de la classe Activity d’Android •Doit être déclarée dans le Manifest pour être  visible par le système

•Ne peut être instanciée directement, cette tache se fait par le système

Activity a = new Activity(); •L’instanciation d’une activité se fait par les intentions


   

Création d’une activité

public class ExampleActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

// The activity is being createdddd

}

@Override protected void onStart() { super.onStart();

// The activity is about to become visible. }

@Override

protected void onResume() { super.onResume();

// The activity has become visible (it is now "resumed"). }

@Override

protected void onPause() { super.onPause();

// Another activity is taking focus (this activity is about to be "paused").

}

}

           

Les IHM

Les interfaces sont définies généralement dans des fichiers XML (cela nous évite d’avoir à créer des instances explicitement) 

ADT génère automatiquement une ressource correspondant à l’interface dans le fichier R.java  ( ! R.layout.accueil

Une interface peut être associée comme vue graphique à une activité. 

)


   

Les IHM

La d’une interface avec l’utilisateur :

•Les interfaces sont composées d’objets étendant View et ViewGroup ;

•Une vue se dessine et permet les interactions avec l’utilisateur ;

•Un groupe de vues contient d’autres vues ;

•Un groupe de vues organise l’affichage des vues qu’il contient ;

   

View

View :Cette classe représente le bloc de construction de base pour les composants de l'interface utilisateur. A View occupe une zone rectangulaire sur l'écran et est responsable de l'élaboration et de la gestion des événements. Voir est la classe de base pour les widgets, qui sont utilisés pour créer des composants d'interface interactifs (boutons, champs de texte, etc.). La sous-classe ViewGroup est la classe de base pour les mises en page, qui sont des conteneurs invisibles qui détiennent d'autres vues (ou une autre vue Groupes) et définir leurs propriétés de mise en page.

 

ViewGroup

Un ViewGroup est une vue spécial qui peut contenir d'autres vues (appelés enfants.) Le groupe de vue est la classe de base pour les modèles et vues conteneurs. Cette classe définit également la classe ViewGroup.LayoutParams qui sert de classe de base pour les paramètres de mises en page.

               

Propriétés communes aux vues

android:id="@+id/mon_iden t"

android:layout_height, android:layout_width :

fill_parent / wrap_content 

fill_parent : Remplit toute la place du parent

wrap_content : remplit la place que nécessitele contenu

android:background: "@color/blue/#000FFFF"

android:visibility  : visible / invisible/gone

android:padding="10.5dp"

… 

                   

ListView (ViewGroup)

Au sein d'un gabarit, on peut implanter une liste que l'on pourra dérouler si le nombre d'éléments est important. Si l'on souhaite faire une liste plein écran, il suffit juste de poser un layout linéaire et d'y implanter une ListView. Le XML du gabarit est donc:

 
     

Menu

Un menu est un endroit privilégié pour placer certaines fonctions tout en économisant l'espace dans la Fenêtre.

Il existe deux sortes de menu dans Android :

-Le menu d'options : celui qu'on peut ouvrir avec le bouton Menu sur le téléphone. Si le téléphone est dépourvu de cette touche, Android fournit un bouton dans son interface graphique pour y accéder.



-Les menus contextuels : Similaires aux menus qui s'ouvrent à l'aide d'un clic droit sous Windows et Linux, dans Android ils se déroulent qu'on effectue un long clic sur un élément de l'interface graphique. 

       

Conteneurs (ViewGroup)

Ce sont des vues permettant de définir une prédisposition pour d’autres vues qu’ils contiennent: 

-    FrameLayout

-    AbsoluteLayout

-    LinearLayout

-    TableLayout

-    RelativeLayout

 

Conteneurs (ViewGroup)

-    LinearLayout: dispose les éléments de façon linéaire (vertical ou horizontal)

-    RelativeLayout: Dispose les vues enfants les uns par rapport aux autres

-    TableLayout: disposition matricielle (ref:table HTML)

 

Réutilisation du Layout

Réutilisation d’interfaces : Une interface peut inclure une autre interface 

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

       <LinearLayout   xmlns:android=";

android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >

<include android:id="@+id/include01" android:layout_width="wrap_content" android:layout_height="wrap_content"

       layout="@layout/acceuil"           >

</include>

</LinearLayout>


   

RelativeLayout

Positionner les éléments de l’interface  les uns par rapport aux autres

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

<RelativeLayout          xmlns:android=";

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

<TextView

android:id="@+id/textView1"

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

android:text="@string/label_nom"

android:textAppearance="?android:attr/textAppearanceLarge"          />

<EditText

android:id="@+id/editText1"

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

android:ems="10«

android:layout_toRightOf="@+id/textView1"

android:inputType="textPersonName"            >

                                                                         <requestFocus         />

</EditText> </RelativeLayout>

 

TableLayout

è Tableau de positionnement des vues en ligne de TableRow (similaire au <table> <tr> <td> de HTML) è TableRow hérite de LinearLayout avec alignement automatique des colonnes sur chaque ligne

è Propriétés de TableRow.LayoutParams

?layout_column: indice de départ de la colonne (à partir de 0)

?layout_span: nombre de colonnes occupées

 

Communications entre composants

Android offre un mécanisme puissant  qui permet  de faire exécuter certaines  actions  et de faire circuler des  messages  entre applications ou à l 'intérieur d'une même application

Exemple : Dans votre application de gestion de personnels, vous avez un bouton a coté les coordonnées qui permet d’appeler l’employé, vous aurez pas à développer une interface pour passer l’appel ! Vous allez demandez au système de le faire à l’aide des Intent

 

Intent

Les intents facilitent la communication entre différents composants. Trois cas de figure :

Pour démarrer une activité (avec/sans attente de résultat

Pour démarrer un service

Pour envoyer un BroadCast

 

Types d'Intents

Intent Explicite : On spécifie le compsant destinataire qui va traiter l'intent (fullyqualified class name)

Intent Implicite : On ne spécifie pas le composant, mais on offre suffisement d'informations permettant au systeme de trouver le bon composant capable de traiter l'intent.

                 

Intent explicite sans retour

Si l'activité source n'attend pas de resultats de l'activité destinataire, l'appel se fait naturellement ainsi :

Intent destActivite = new Intent(, IntentExample.class);

// On rajoute un extra

secondeActivite.putExtra(AGE, 31);

// Puis on lance l'intent !

startActivity(secondeActivite);

 

Intent explicite avec retour

Si l'activité source attend des données qui proviennet de l'activité destinataire, l'appel se fait ainsi à l'aide de la méthode void startActivityForResult(Intent intent, int requestCode)

RequestCode : identifiant unique de l'intent différent de 0

Quand l'activité appelée s'arrêtera, la première méthode de callback appelée dans l'activité précédente sera void

onActivityResult(int     requestCode,     int  resultCode, Intent data)

RequestCode : l'identifiant, repérer l'intent appelant 2eme activité

ResultCode : information sur l'état d'achevement du 2eme activité ,

Activity.RESULT_OK si tout s'est bien déroulé data: données attendues

 

Intent explicite avec retour

Dans la seconde activité, vous pouvez définir un résultat avec la méthode void setResult(int resultCode,Intent data)

Intent result = new Intent(); result.putExtra( "akey", "1");

setResult(RESULT_OK,result); finish();

Dans l'activité 1 :

data.getStringExtra("akey");

                                     



15