2
Plan
Application Dessins
3
Prsentation
C'est:
Un systme d'exploitation pour tablettes et
smartphones reposant sur un systme Linux
Une machine virtuelle Java (dalvik) tablie sur
d'autres bases que la machine Java standard
Une API de programmation en Java:
norme quantit de fonctionnalits
Outils de dveloppement pour Eclipse
4
Programmation de logiciels
Cycle de travail:
Dveloppementavec Eclipse en Java
Cross-compilation
Installation sur la cible (liaison USB)
Dbogage et tests du logiciel
Outils:
Plugin transparent et trs bien fait dans Eclipse
SDK avec des outils de gestion (adb notamment)
5
SDK, AVD, ADB et ADT
6
Le SDK Android
1) Le prendre sur:
http://developer.android.com/sdk/index.html
Demander le SDK correspondant au systme
7
Installation du SDK
8
Android SDK Manager
4) Dans Tools, vrifier
que tout est Installed
Dans Android 4.1:
Dcocher tout (la doc
reste Installed)
Dans Android 2.1 ou 2.2:
Cocher uniqt SDK Pltform
5) Cliquer Install 1
package (pas de delete)
9
Quelques mots sur les versions
Obsolescence voulue
1.6 Donut 4 09/2009 0,4%
explicitement,
pourtant, en octobre 1.5 Cupcake 3 04/2009 0,1%
2012:
10
Android SDK Manager (suite)
Critiques:
La doc qu'on installe est uniquement la plus rcente,
elle ne correspond pas la plate-forme voulue =>
nombreux avertissements dobsolescence
11
mulateur de tablettes virtuelles
12
Crer une tablette virtuelle (AVD)
1)Relancer tools/android
2)Menu Tools, item Manage AVDs...
fentre de gestion des AVDs: AVD manager
3)Bouton new...
fentre de cration d'un AVD
Name = MonPremierAVD
Target = Android 2.1 ou 2.2 selon votre SDK
4)Retour dans gestion des AVDs: bouton start...
C'est long lancer...
13
Mode d'emploi d'un AVD
Souris = doigt
Touche Home = cran de
base
Touche F2 = menu
Touche esc = retour
Premire manip:
configurer la tablette
en franais!
F2, Settings, Language
14
1er bug : clavier en japonais ?
16
Commandes de ADB
http://developer.android.com/tools/device.html
18
Une vraie tablette sur Linux
19
ADB sur Linux (partie 1)
Commande lsusb
Reprer les identifiants hexa de la tablette, ex:
0e79:1411
21
ADB sur Windows
23
Installation du plugin pour Eclipse
a)Dans Eclipse, menu Help, item Install New
Software.
b)Bouton Add.. en haut droite
c) Fentre Add site: nom="Android Plugin" et
Location=
https://dl-ssl.google.com/android/eclipse/
d)Cliquer sur OK
e)Work with Android Plugin, cocher Developer
Tools et cliquer sur Next
f) Liste des outils => cliquer sur Next, accepter les
licences.
24
Configuration du plugin Eclipse
25
Programmation Android
26
Application Android
28
Types d'activits
Certaines activits sont marques, par exemple
pour tre dmarrables de l'extrieur:
<activity android:name=".TutoAndroidMainActivity" ... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
android.app.Activity
http://developer.android.com/reference/android/app/Activity.html
30
La classe Activity (suite)
On doit la sous-classer:
class MonActivite extends Activity {
31
Exemple d'activit
package fr.iutlan.tutoandroid;
import android.app.Activity;
...
public class TutoAndroidActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
32
Mthodes d'Activity
33
Concrtement...
34
Crer un projet dans Eclipse
Project Name =
TutoAndroid
Vrifier o il est cr
Bouton Next>
35
Crer un projet (suite)
Choisir le SDK
Bouton Next>
36
Crer un projet (fin)
Choisir le nom de
l'application et de
l'activit principale
Choisir le nom du
package
C'est le nom invers
de l'organisation qui
gre le projet, ex:
fr.iutlan.tutoandroid
Bouton Finish
37
Projet cr
Rsultat:
38
Structure des fichiers d'un projet
Pas besoin de
compiler, c'est fait en
permanence par
Eclipse
40
Lancer le projet
41
Lancement d'un projet
Eclipse lance un
mulateur ou utilise la
tablette branche
42
Suivi du lancement
43
Suivre l'excution : LogCat
D'abord, afficher ou
activer la fentre Devices
menu Window, item Show
View, sous-item Other...
Dans la liste, choisir la
tablette active
44
LogCat : la tablette vous parle
45
LogCat : mode d'emploi
Deux colonnesutiles:
TAG = nom court du logiciel mettant un message
Text = texte mis
46
Exemple : afficher un message
LogCat sert
localiser la source
des bugs.
49
Les ressources
50
D'o vient le message affich ?
Ouvrir src/package/TutoAndroid.java:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("TutoAndroid","bonjour tous");
setContentView(R.layout.main);
}
Cette ligne:
(TextView)this.findViewById(R.id.textview)
s'applique l'Activity: elle recherche une View
(contrle, widget, composant... de l'interface)
ayant cet identifiant
Elle retourne null ou le TextView en question
Il faut convertir le type du rsultat
Exemple :
<TextView android:id="@+id/textview"
android:textSize="15sp"
android:textColor="#F0F"
Inconvnient:
plus lourd mettre en uvre
61
Layouts
62
Ajout d'un bouton dans la fentre
63
Ajout d'un bouton (suite)
64
Ajout d'un listener au bouton
65
Dfinition du Listener
Rajouter la mthode:
@Override
public void onClick(View btn) {
TextView tv = (TextView)findViewById(R.id.textview);
tv.setText("Pouic");
}
66
Gestion des vues de l'interface
68
Solution 1 : switch sur l'identifiant
@Override
public void onClick(View btn) {
switch (btn.getId()) {
case R.id.bouton1:
tv.setText("Oui");
break;
case R.id.bouton2:
tv.setText("Non");
break;
}
}
69
Solution 2 : plusieurs listeners
71
On revient sur la disposition
72
Layouts
73
Taille d'une vue
74
Comptition entre enfants
textview
bouton1 bouton2
77
Principes
78
Base de donnes SQL sur Android
Rajouter un constructeur:
public BDDHelper(Context context) {
super(context, "infos.db", null, 1);
}
81
Mthode onCreate de BDDHelper
83
Classe BDD
88
Transformer l'activit
89
Changer la superclasse et le layout
90
Layout android.R.layout.activity_list_item
92
SimpleCursorAdapter
On indique:
quel curseur il faut lire
quel layout il faut utiliser pour chaque ligne
Par exemple android.R.layout.simple_list_item_1
Ce layout possde des TextView dont les
identifiants sont connus (text1 et text2)
quels champs de la requte on doit afficher dans
la liste
dans quel TextView on met tel champ
93
Ajout d'un adapter la liste
94
Mise jour de la liste
97
Affichage du menu
99
Raction au menu
101
Lancement d'une activit
102
Classe SaisieInfoActivity
On va:
Rajouter un layout contenant une zone de saisie
Un bouton Ok et son listener
Ce listener valide la saisie, cre l'information et
quitte
103
Layout pour l'activit de saisie
104
SaisieInfoActivity (le layout)
Voici le dbut
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.saisie);
105
SaisieInfoActivity (le bouton)
L'entte de la classe:
import android.view.View.OnClickListener;
public class SaisieInfoActivity extends Activity
implements OnClickListener {
Le listener:
@Override public void onClick(View v) {
// lire le texte et l'ajouter dans la base...
}
106
SaisieInfoActivity (la cration)
Quitter l'activit:
finish();
107
Insertion d'un n-uplet
108
Mise jour des donnes
109
Une application de dessin
110
Dessiner sur Android
En 2D:
Faire une sous-classe de View mise dans le layout
Les mthodes de cette vue perso:
dessinent l'image
grent les touchers de l'cran
111
Organisation globale du projet
112
C'est parti !
113
Edition du layout main.xml
<fr.iutlan.tutodessin.Dessin
android:id="@+id/dessin"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
114
Layout et custom View
116
Les Canvas
Mthodes de dessin:
drawPoint, drawLine, drawPath, drawRect...
Principes: drawMachin(coordonnes, paint)
http://developer.android.com/reference/android/graphics/Canvas.html
117
Mthode de dessin
118
Classe Cercle
Rajouter la mthode:
public void draw(Canvas canvas)
{
canvas.drawCircle(xc, yc, rayon, paint);
}
120
Liste de cercles
121
Mthode onDraw
122
Raction aux touchers cran
123
Raction aux touchers cran
124
On arrive presque au bout
125
Mettre jour le dessin
126
Ca y est, c'est fini !
Des questions ?
127