Introduction au Développement
d’Application Android
Amosse EDOUARD,
Doctorant
2
Séance 1
Introduction à Android
3 OBJECTIF DU COURS
´ Comprendre l’architecture du système Android
´ Comprendre l’organisation d’une application
Android
´ Développer et déployer des applications natives
Android
Introduction à Android
4 Référence
´ L’art du développement Android par Mark L. Murphy
´ Professional NFC application développement for android
by Vedat Coskun
´ Android developer :
[Link]
Introduction à Android
5 Pré requis
´ Programmation Orienté Objet
´ JAVA
´ XML
Introduction à Android
6 Enjeux du développement
mobile
´ CPU entre 500 et 600 MHz
´ Mémoire allouée à une application est de l’ordre de
quelques mégabytes
´ Gestion du cycle de vie à une seule application peut
être visible à la fois
´ Densité multiples des écrans
´ Très faible résolution
´ Très haute définition
´ Plusieurs orientations (Portrait, Paysage, Portrait inverse,
…)
Introduction à Android
7 Introduction / Définition
´ Android est un système d’exploitation OPEN SOURCE pour
terminaux mobiles (Smartphones, 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
Introduction à Android
8 Versions de l’OS
Introduction à Android
9 Plateforme Android
Le système d’exploitation Android est basé sur Linux. Au plus bas
niveau de ce système se trouve un noyau Linux destiné à la gestion
du matériel comme :
´ Drivers de ces terminaux,
´ La gestion de la mémoire,
´ La gestion des processus
´ L’accès au réseau
´ …
Introduction à Android
10
Plateforme / Architecture
Introduction à Android
11 Android pour tous
´ Développeurs
´ Pas besoin de licence
´ Simple et intuitifs
´ Modulables
´ Constructeurs
´ Tous les constructeurs peuvent utiliser Android
´ Un ensemble de services sont déjà disponibles dans le
core
´ API disponible pour les accès de bas niveau
Introduction à Android
12 Android et les langages de
programmation
´ Android n’est pas un langage de programmation
´ Pour développer sous Android, il existe deux
possibilités :
´ Développement native (Java, C, C#)
´ Développement hybride (Titanium, PhoneGap)
Introduction à Android
13 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 Dalvik Virtual
Machine
´ 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
Introduction à Android
14 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
Introduction à Android
15 Android vs Développement
Hybride
´ Android supporte le développement hybride
´ Titanium
´ Phonegap
´ Neomad
Introduction à Android
16 Pour ce cours….
´ Framework et langage
´ Android SDK
´ Java
´ XML
´ Outils
´ Android Studio
Introduction à Android
17 Production de logiciel
Introduction à Android
[Link]
18 Production de logiciel
Introduction à Android
[Link]
19 Outils du SDK
´ adbè Accessibles à partir d’une ligne de commande (fenêtre
DOS) adb permet la connexion au terminal (smartphone ou
simulateur) pour :
´ Transférer des fichiers (push / pull)
´ Installer une application (install)
´ Paramétrer le réseau (forward)
´ dx è 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
Introduction à Android
20 Type d’applications Android
´ Application de premier plan : Application utilisable
que lorsqu’elle est visible et n’effectuant aucune tache
de fond
´ Services : Application s’exécutant en tache de fonds et
ne présentant pas d’interfaces utilisateurs
´ Intermittente : Application exécutant à la fois des
taches des fonds et permet l’interaction avec
l’utilisateur; la communication entre les taches de
fonds et l’utilisateurs se fait par des notifications
´ Widgets: Application(utilitaires) pouvant être placé
directement sur un écran du téléphone
Introduction à Android
21 Structure d’une application
Référence : [Link]
22 Structure d’une application
´ App: Racine de l’arborescence d’une projet Android; nom du
module principal
´ Manifests : Contient le manifest (fichier de configuration d’une
application)
´ Java: Dossier contenant les sources de l’application (code java)
´ Res: Contient les ressources statiques de l’application
´ Drawable: contient les images
´ Layout: les interfaces graphiques
´ Menu : les menus de l’application
´ Mipmap: Icones de l’application
´ Values : riables statiques
´ Colors: code de couleurs
´ Dimens: Dimensiosn (marges, …)
´ Strings: textes statistiques
Introduction à Android
23 Gradle
´ Outil de gestion, d’intégration et de génération d’application Android
´ Déclare et execute les taches necessaires à l’execution d’application
Android
´ Permet de developper des applications multiplatforme et multiprojet
Introduction à Android
24 Gradle (Exemple)
Introduction à Android
25 Composantes d’une application
´ Activité ([Link] ) è Programme qui gère
une interface graphique
´ Service ([Link]) è Programme qui
fonctionne en tâche de fond sans interface
´ Fournisseur de contenu
([Link]) è Partage
d’informations entre applications
´ Intentions : Communication inter et intra-application
´ Ecouteur d’intention
([Link]) è Permet à une
application de récupérer des informations générales
(réception d’un SMS, batterie faible, …)
´ Widgets : Bibliothèque de composants visuels
´ Manifest: Fichier de configuration de l’application
Introduction à Android
26 Manifest
´ Configuration de l’application
´ Définit le nom de package de l’application;
´ Décrit les composantes de l’application: activités, services,
fournisseurs de contenus…., il nomme les classes
implémentant chacun de ces composants et propage leur
capacité sur le système;
´ Détermine quel processus répond à une action donnée;
´ Déclare les permissions de l’application;
Introduction à Android
27 Manifest : Exemple
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="[Link]
res/android" package="[Link]"
android:versionCode="1" android:versionName="1.0">
<uses-permission
android:name="[Link].ACCESS_FINE_LOCATION"/>
<uses-permission
android:name="[Link]"/>
<application android:label="@string/app_name"
android:icon="@drawable/ic_launcher">
<activity android:name="Home" android:label="@string/
app_name"> <intent-filter> <action
android:name="[Link]" />
<category android:name="[Link]" /
> </intent-filter> </activity>
</application>
</manifest>
Introduction à Android
28
Séance 2
Introduction à Android
29 Contexte (Context)
è Interface fournissant des informations sur l’environnement
de l’application:
è C’est une classe abstraite implémentée par le système
Android
è Il permet d’accéder aux principales ressources de
l’application
è Obtenir le contexte courant d’une application
è Contexte global de l’application
è Context c = getApplicationContext():
è Contexte d’une activité ou un service
è Context c = [Link],;
è Context c= getContext():
Introduction à Android
30 Les Intentions (Intent)
Attributs principaux
Action : Action à exécuter
Data : Données sur lesquelles l’action va opérer
Autres attributs
Category : Précise la catégorie de l’activité demandée
Type: Préciser le type de contenus des données de l’intention
Extras : Informations additionnelles envoyées à l’action
(envoie d’un email, par exemple)
Introduction à Android
31 Intent/Action
L’action d’un intent indique au système l’action à exécuter.
En fonction de l’action le système déterminera l’activité à
lancer.
Certaines actions sont prédéfinies:
à ACTION_VIEW: Afficher une information; généralement
indiquée par une URI.
à ACTION_VIEW:contacts/people/1 : Afficher le profile d’une
personne
à ACTION_VIEW:contacts/people : Affiche la liste des contacts
à ACTION_DIAL: Composer un numéro de téléphone.
à ACTION_DIAL:[Link]
à ACTION_DIAL:contacts:contacts/people/1
Introduction à Android
32 Intent/Data
Contient les données sur lesquelles l’activité appelée peut
opérer.
Par exemple, l’id d’un contact à afficher ou à supprimer.
Les « data » sont généralement exprimer via des URIs
Exemple : contents://contacts/people/1
Introduction à Android
33 Intent/Data
Contient les données sur lesquelles l’activité appelée peut
opérer.
Par exemple, l’id d’un contact à afficher ou à supprimer.
Les « data » sont généralement exprimer via des URIs
Exemple : contents://contacts/people/1
Introduction à Android
34 Intent/Data
Data
Contient les données sur lesquelles l’activité appelée peut
opérer.
Par exemple, l’id d’un contact à afficher ou à supprimer.
Les « data » sont généralement exprimer via des URIs
Exemple : contents://contacts/people/1
Category
Information supplémentaire sur l’action à exécuter
à ACTION_MAIN & CATEGORY_HOME
à ACTION_GET_CONTENT & CATEGORY_OPENABLE
Introduction à Android
35 Résolution d’intention
Il existe deux principaux types d’intentions :
è Explicite : Spécifie les composants qui précisent la classe
exacte qui doit être exécutée (setComponant (nom) ou
setClass(context, class))
è Implicite : Ne spécifie pas le composant mais fournit
suffisamment d’informations permettant au système de
déterminer les composants nécessaires correspondant à
cette action.
Introduction à Android
36 Filtre d’intention
è Les filtres d’intentions permettent de définir les actions
supportées par une activité
è Les filtres d’intentions sont déclarés dans le manifest au
moment de définir l’activité
Introduction à Android
37 Activité (Activity)
´ Modélise et gère les interfaces de l’application. Dans un
modèle MVC il joue le rôle de contrôleur
´ Hérite de la classe Activity d’Android ou une de ses
dérivés
´ Doit être déclarée dans le Manifest pour être visible par le
système
´ Ne peut être instanciée directement, cette tache est
effectuée par le système
Activity a = new Activity();
´ Une activité est instanciée en utilisant les intentions
Introduction à Android
38 Activité /cycle de vie
Introduction à Android
39 Activité / Création
public class ExampleActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
// The activity is being created.
}
@Override
protected void onStart() {
[Link]();
// The activity is about to become visible.
}
@Override
protected void onResume() {
[Link]();
// The activity has become visible (it is now "resumed").
}
@Override
protected void onPause() {
[Link]();
// Another activity is taking focus (this activity is about to be
"paused").
}
Introduction à Android
40 Activité/Configuration
´ Une activité doit etre obligatoirement déclarée dans le
Manifest
<manifest ... >
<application ... >
<activity android:name=".ExampleActivity" />
...
</application ... >
...
</manifest >
Introduction à Android
41 Activité/Configuration
´ Quelques propriétés de la balise activity
´ android:configChanges : Abonnement à des événements particuliers
´ touchscreen : L’utilisateur touche l’écran
´ orientation : L’utilisateur réoriente le téléphone
´ Icon : Image qui apparait en haut à gauche dans la barre de
navigation
´ screenOrientation : Spécifier les types d’orientation supportés par
l’interface
´ Landscape
´ Portrait
´ uiOptions : Définit le comportement de la barre d’action
´ Non : Comportement par défaut
´ splitActionBarWhenNarrow : Ajouter une action bar au bas de l’écran
quand le nombre d’item des supérieur à l’espace restant.
Introduction à Android
42 Activité/Configuration
<activity class=".NotesList" android:label="@string/title_notes_list">
<intent-filter>
<action android:name="[Link]" />
<category android:name="[Link]" />
</intent-filter>
<intent-filter>
<action android:name="[Link]" />
<action android:name="[Link]" />
<action android:name="[Link]" />
<category android:name="[Link]" />
<data android:mimeType="[Link]/[Link]" />
</intent-filter>
<intent-filter>
<action android:name="[Link].GET_CONTENT" />
<category android:name="[Link]" />
<data android:mimeType="[Link]/[Link]" />
</intent-filter>
</activity>
Introduction à Android
43 La méthode StartActivy
Permet de lancer une nouvelle activité.
Intent i = new Intent(this, [Link]);
startActivity(i);
Uri chemin = [Link]("[Link]
Intent naviguer = new Intent(Intent.ACTION_VIEW, chemin);
startActivity(naviguer);
Uri numero = [Link]("[Link]
Intent appeler = new Intent(Intent.ACTION_CALL, numero);
startActivity(appeler);
Introduction à Android
44 startActivityForResult
´ La méthode startActivityForResult (intent), permet de démarrer une
activité et attendre un résultat
´ Elle permet à l’activité appelée de renvoyer des résultats à l’activité
appelante
´ Par exemple une activité de Login doit pouvoir renvoyer le statut de la
connexion à l’activité appelante : FacebookLogin fonctionne ainsi
´ La méthode onActivityResult permet de récupérer les données
renvoyées par l’activité appelante
´ La méthode setResult permet à l’activité appelée de renvoyer des
résultats à l’activité appelante
Introduction à Android
45 startActivityForResult- Exemple
Activité A
Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
startActivityForResult(intent, 0);
Activité B
Intent intent = getIntent();
[Link]("contact", theContact);
setResult(RESULT_OK, intent);
Activité A
onActivityResult (int requestCode, int resultCode, Intent data)
Ø requestCode : Identifie l’action qui lancé l’activité
Ø resultCode: Indique le statut du résultat (RESULT_OK, …)
Ø Data : renforme des données renvoyées par l’activité appelée
Introduction à Android
46 Intent - Paramètres
à La classe Intent permet de passer des paramètres à l’activité
appelée et d’en récupérer les valeurs en retour
à Ajouter des paramètres (types simples ou tableaux)
Exemple:
[Link](String, val)
à Le 1er paramètre est un nom (clé)
à Le second paramètre est la valeur
à De type simple (boolean, int, short, long, float, double, char)
à Tableau de types simples
L’activité appelée pourra récupérer ces paramètres par
leur nom
Introduction à Android
47 Activités / Paramètres (Bundle)
L’activité lancée récupère l’objet de classe Bundle contenant
les paramètres par :
Bundle params = getIntent().getExtras()
• Les paramètres sont récupérés dans ce Bundle par ses
méthodes :
– getBoolean(String)
– getInt(String)
– getBooleanArray(String)
–…
Exemple :
String myId = getIntent().getStringExtra(« id»);
Introduction à Android
48 Ressources (Resource)
è Une application Android n’est pas seulement fait de codes
mais aussi de ressources statiques (images, sons, textes
statiques,….)
è Tout projet Android a un dossier de ressources (res/) contenant
les ressources du projet (bitmap, xml,…)
´ /res/drawable è images ([Link].nom_de_la_ressources)
´ /res/layout è Design des vues ([Link].nom_de_la_vue)
´ /res/values/strings è Chaînes de caractères, tableaux, valeurs
numériques … ([Link].nom_chaine, [Link])
´ /res/anim èdescription d’animations ([Link].nom_animation_)
´ /res/menus è Menus pour l’application ([Link].nom_menu)
´ /res/values/color è Code de couleurs ([Link].nom_couleur)
´ …
Introduction à Android
49 Ressources & valeurs
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Mon application</string>
<string name="server_url">[Link]
<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>
Introduction à Android
50 Référencer les ressources
´ L’ensemble ressources sont modélisés par la classe « [Link] »
et les sous dossiers par des classes internes à R
´ Chaque ressource est un attribut de la classe représentant le
sous dossier dans lequel il est déclaré
[Link]
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Mon application</string>
……
</resources>
[Link].app_name
Introduction à Android
51 Référencer les ressources
Référencement d’une ressource dans une autre ressource. La
forme générale est : "@type/identificateur"
<TextView
android:id="@+id/lblUsername"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.00"
android:text="@string/lblUsername"
android:textColor="@android:color/holo_blue_dark"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
Introduction à Android
52 Référencer les ressources
´ Dans le code (java), on obtient une instance de cette classe par
getResources()
´ Principales méthodes de la classe Resources (le paramètre est un identifiant
défini dans R de la forme [Link]) :
´ boolean getBoolean(int)
´ int getInteger(int)
´ int[] getArray(int)
´ String getString(int)
´ String[] getStringArray(int)
´ int getColor(int)
´ float getDimension(int)
´ Drawable getDrawable(int)
Exemple : String titre = [Link]().getString([Link].ma_chaine);
Mais dans une activité on peut faire plus simplement :
String titre = getString([Link].ma_chaine);
Introduction à Android
53 Référencer les ressources
´ Accéder aux vues :
getResources().getLayout([Link].nom_layout);
´ Accéder aux valeurs :
String chaine = getResources().getString ([Link].nom_string);
String[] tableau= getResources(). getStringArray([Link].nom_array);
´ Accéder aux images :
Drawable monImage =
getResources().getDrawable([Link].nom_image)
Introduction à Android
54 Interfaces (Layout)
Les interfaces (Layout) permettent de dessiner la vue tel
qu’elle doit s’afficher à l’utilisateur.
Il existe deux possibilités de développer des interfaces :
è Code java
è Fichier XML
Android recommande l’utilisation des fichiers XML pour
définir les interfaces.
è La méthode setContentView permet d’associer un
layout à une activité
Exemple :
setContentView([Link]);
Introduction à Android
55 Interfaces (Layout) / Vues
Les interfaces sont composées de vues :
Les vues ne peuvent être modifiées que par le thread
principal « UIThread » .
Tous les autres threads créés par un utilisateur ne
peuvent pas modifier les vues.
Introduction à Android
56 Vues - Propriétés communes
Identifiant :
android:id="@+id/mon_ident"
Dimension:
layout_height, android:layout_width : fill_parent /
match_parent / wrap_content
fill_parent : Remplit toute la place
wrap_content : remplit la place que necessite le contenu
match_parent : remplit la place qui reste dans le parent
Fond
android: background
Visibilité
android:visibility : visible / invisisble/gone
Introduction à Android
57 Vues Propriétés communes
Marges internes
´ android:layout_paddingBottom ,
android:layout_paddingLeft ,
´ android:layout_paddingRight ,
android:layout_paddingTop
Marges externes
´ android:layout_marginBottom ,
android:layout_marginLeft ,
´ android:layout_marginRight ,
android:layout_marginTop
Introduction à Android
58 Vues
Les vues déclarées dans les fichiers xml sont automatiquement
instanciées par Android.
Pour récupérer l’instance d’une vue associée à une interface,
Android propose la méthode findViewById() prenant en paramètre
l’identifiant de la vue dans le fichier xml.
La méthode findViewById utilise le conteneur principal de
l’interface de l’activité courante.
Exemple :
View
v
=
findViewById([Link]);
Connaissant le type de la vue
Button
b
=
(Button)findViewById([Link]);
Les vues peuvent être créés dynamiquement :
Button
b
=
new
Button(this);
[Link](1245);
Introduction à Android
59 Vues / Evènements
Les évènements permettent de gérer les actions utilisateurs sur les vues:
Pour gérer les évènements sur les vues, il suffit d’ajouter un écouteur
[Link](new
[Link]()
@Override
public
void
onClick(DialogInterface
dialog,
int
which)
{
//
Du
code
ici
}
});
[Link](new
OnClickListener()
{
@Override
public
void
onClick(View
v)
{
//
TODO
Auto-‐generated
method
stub
}
});
Introduction à Android
60 Les conteneurs (ViewGroups)
Permettent de positionner des widgets dans une
interface :
- FrameLayout
- AbsoluteLayout
- LinearLayout
- TableLayout
- RelativeLayout
- ScrollView
- HorizontalScrollView
Introduction à Android
61 LinearLayout
Définit le positionnement linéaire (horizontall ou vertical)
des vues filles
<?xml
version="1.0"
encoding="utf-‐8"?>
<LinearLayout
xmlns:android="[Link]
android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<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:inputType="textPersonName"
>
<requestFocus
/>
</EditText>
</LinearLayout>
Introduction à Android
62 LinearLayout
<?xml
version="1.0"
encoding="utf-‐8"?>
<LinearLayout
xmlns:android="[Link]
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:inputType="textPersonName"
>
<requestFocus
/>
</EditText>
</LinearLayout>
Introduction à Android
63 RelativeLayout
Positionner les éléments de l’interface les uns par rapport aux
autres
<?xml
version="1.0"
encoding="utf-‐8"?>
<RelativeLayout
xmlns:android="[Link]
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>
Introduction à Android
64 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 [Link]
´ layout_column: indice de départ de la
colonne (à partir de 0)
´ layout_span: nombre de colonnes occupées
Introduction à Android
65 Widgets
è Les widgets représentent les blocs élémentaires visibles
dans l’interface utilisateurs. Une vie occupe une
portion rectangulaire et répond aux évènements
d’interaction entre l’utilisateur final et l’application
è Leur disposition dans l’interface est défini par son
contenant (Viewgroup)
è On distingue :
è TextView
è Button
è EditText
è CheckBox
è RadioButton
è ImageView
è …
Introduction à Android
66 Widgets
<TextView android:id="@+id/my_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.00" android:text="@string/
lblUsername" android:textColor="@android:color/
holo_blue_dark" android:textAppearance="?android:attr/
textAppearanceMedium" />
<Button android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/my_button_text"/>
<ImageView android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/image_description"
android:src="@drawable/login" />
Introduction à Android
67
Travaux Pratiques
68
Séance 3
69 Permission
´ Moyen de sécurité proposé par Android pour gérer
l’accès aux ressources du terminal
´ Elles apparaissent dans le fichier Android Manifest et
sont visibles par l’utilisateur au moment de
l’installation de l’application
´ Elles concernent :
– La géolocalisation (GPS)
– Les accès aux contacts et à l'agenda du téléphone
– Les modifications de paramètres (orientation, fond d’écran …)
– Les appels téléphoniques
– L’envoi et réception de SMS/MMS
– L’audio
– Le réseau (dont l’accès à Internet)
– Le matériel (bluetooth, appareil photo, …)
Introduction à Android
70 Permission
La déclaration des permissions doit se faire explicitement dans
le fichier manifest.
Si une permission a été omise et vous essayez d’utiliser la
ressource correspondante, vous aurez une erreur à l’exécution!
<uses-permission
android:name="[Link].CALL_PHONE" />
<uses-permission android:name="[Link]
" />
Introduction à Android
Connectivité
´ Android fournit des mécanismes permettant aux
applications d’utiliser la connectivité pour accomplir
certaines taches :
´ Internet (WIFI, 3G,…)
´ Bluetooth
´ NFC
´ Pour accéder à ces ressources, il est obligatoire de
demander explicitement la permission associée
´ <uses-‐permission
android:name="[Link]"/>
Introduction à Android
Internet
´ Une application Android peut utiliser la connexion
réseau du téléphone pour échanger par HTTP des
informations avec une application distante (web
service, web application,..)
´ Permission pour utiliser internet :
<uses-‐permission
android:name="[Link]"/>
´ Android utilise la bibliothèque Apache Components
pour les communications par http
HttpClient
client
=new
DefaultHttpClient();
HttpGet
request
=new
HttpGet(url);
HttpResponse
response
=
[Link](request);
…
Introduction à Android
Taches Asynchrones
´ La UIThread est le thread principal de gestion de
l’interface utilisateur. L’exécution des processus longs
dans ce thread comme l’accès au réseau doit se faire
dans un thread à part.
´ A partir de la version 4, Android génère une exception
pour tout opération longue s’exécutant dans le thread
principal.
´ L’exécution des taches asynchrones peut se faire de
deux manières:
´ L’utilisateur crée explicitement un thread auquel il délègue
l’exécution des processus longs
´ Utiliser la classe AsyncTask du SDK qui se chargera de la
création du thread secondaire
Introduction à Android
Taches Asynchrones
protected
class
LongTask
extends
AsyncTask<String,
Void,
Void>
{
@Override
protected
void
onPreExecute()
{
[Link]();
//Avant
l'execution
du
processus
long
(Thread
principal)
}
@Override
protected
void
onPostExecute(Void
resp)
{
[Link](resp);
//Apres
l'execution
du
processus
long
(Thread
principal)
}
@Override
protected
Void
doInBackground(String...
arg0)
{
//Execution
du
processus
long
(Thread
secondaire)
return
null;
}
}
Introduction à Android
75
Travaux Pratiques