1/2 Démarrage - UV TL53 UTBM

Transcription

1/2 Démarrage - UV TL53 UTBM
Démarrage:
- Allumer le pc et mettre rapidement le DVD
- Taper F12 ( écran noir au début avant XP ) pour démarrer sur le DVD et pas le disque dur
- Choisir la première ligne = Live ( pas une autre !!! )
On va simuler un ordinateur en utilisant µP et RAM du PC ( mais pas son disque dur )
- Ubuntu 10 démarre: login: uv, mdp: utbm
S'il y a des messages d'erreurs, faites supprimer.
=> On a un PC sous Linux avec les outils pour développer des applications pour Android sans rien installer sur le PC réel.
I) Documentation Android de Google
En installant le SDK Android, on a aussi installé la documentation Google.
- Cliquer sur l'icône du Bureau renvoyant aux documents Google.
- Rechercher Activity.
- Noter les différentes étapes par lesquelles passera une application ( onCreate, onStart,... ).
II) Eclipse et projet Android
- lancer eclipse, clic sur icone android => erreur, aller dans window/preference.sdk location,
vérifier qu'il y a un chemin ( /usr/local/src/android-sdk... ), OK
- Créer un composant virtuel: voir cours
- Faire un projet: voir cours
- Modifier la chaine qui s'affiche dans strings.xml
III) Outils de Debug
Pour étudier en pratique l'évolution de l'application entre les différentes méthodes, on va utiliser des outils
de débuggage = Message de Log.
Programme JAVA
- Modifier votre projet en ajoutant au programme JAVA, ajouter
- import android.util.Log; dans les import
- Ajouter une chaine de caractères identifiant les messages en début de la classe ( ligne après class{ )
private static final String TAG= “Test Etats”;
- Ajouter les méthodes non présentes trouvée dans la doc pour le cycle de vie en y incluant un message de Log:
@Override
protected void onStart(){
super.onStart();
Log.e(TAG, "passage onStart");
Utilisation
- Ouvrir la fenêtre LogCat de l'onglet DDMS.
- Faire Run et observer par quelles étapes on passe.
- "Jouer" avec l'application en appuyant sur la touche HOME, en revenant à l'application,...
( CTRL+F11 et CTRL+F12 change l'orientation de l'émulateur, http://developer.android.com/guide/developing/tools/emulator.html )
- Fermer l'application.
IV) Gestion de l'interface graphique
Le programme appelle un fichier xml et affiche son contenu. ( par défaut main.xml dans res/layout )
On utilise l'outil DroidDraw.
- Ajouter une icône à votre application (voir cours ).
- Créer une interface RelativeLayout avec 2 boutons et un EditText.
- Modifier le main.xml. Vérifier en démarrant l'application que l'on obtient l'interface voulue.
- Modifier la taille d'écran de l'appareil émulé ( icone pour créer le composant, edit sur le composant,...),
vérifier que l'interface est encore correcte.
V) Ecouteur d'événements
- Utiliser les 2 boutons pour que le clic sur le premier affiche un message dans l'EditText, le clic sur le second affiche
un autre message => Créer les écouteurs, dans onClick, selon l'identité du bouton cliqué, afficher un message.
VI) Utilisation de modules internes: GPS
- Faites un programme utilisant le GPS: Voir cours
- Simuler le GPS: Voir cours ( essayer les 2 méthodes: Telnet et DDMS)
Si vous utiliser un téléphone, il faut sortir du bâtiment pour faire le test !:
VII) Gestion de plusieurs Threads
Android interdit de quitter l'UI thread plus de quelques secondes ( boucle de réception en scrutation, téléchargement,... ).
1/2
Mise en évidence du problème
On va utiliser un chrono dans l'UI principale et faire en même un traitement long.
- Enlever les définitions d'écouteur et la méthode onClick, on va utiliser une association plus simple par le main.xml.
- Ajouter dans la définition du bouton 1 dans main.xml
android:text="Chrono"
android:onClick="DemarreChrono"
- Ajouter dans la définition du bouton 2 dans main.xml
android:text="Traitement"
android:onClick="Traitement"
- Ajouter le chronomètre au main.xml
<Chronometer
android:id="@+id/chrono"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="30dip"
/>
- Ajouter la méthode Traitement qui simule un téléchargement de 20s
public void Traitement(View target) { // il faut un view qui sert pas ! sinon erreur avec onclic du main.xml
try {
Thread.sleep(20000);
} catch(Exception e)
{
Log.e(TAG, "problème");
}
}
- Ajouter la gestion du chronomètre
- dans onCreate: ((Chronometer)findViewById(R.id.chrono)).setOnChronometerTickListener(this);
- à la fin de la ligne définissant la classe
implements OnChronometerTickListener {
- ajouter la méthode de gestion du chrono
@Override
public void onChronometerTick(Chronometer chr) {
long TpsEcoule = SystemClock.elapsedRealtime() - chr.getBase();
int min = (int)(TpsEcoule/60000);
int sec = (int) ((TpsEcoule/1000) % 60);
String time = min<10? "0" + min : String.valueOf(min);
time += ":";
time += sec<10? "0" + sec : String.valueOf(sec);
((Chronometer)findViewById(R.id.chrono)).setText(time);
}
- ajouter le démarrage du chrono
public void DemarreChrono(View target) {
((Chronometer) findViewById(R.id.chrono)).setBase(SystemClock.elapsedRealtime());
((Chronometer) findViewById(R.id.chrono)).start();
}
- Démarrer le chrono en cliquant sur bouton dédié à cela. Après 5s, démarrer le traitement en cliquant sur son bouton
Que se passe-t-il avec le temps affiché ?
Que se passe-t-il si on appuie à nouveau sur le bouton du chrono ?
Solution: Nouveau Thread
- Créer un nouveau Thread pour faire ce traitement => Le système gère les accès aux 2 traitements. voir cours.
Placer un message log avant et après traitement ( pas de toast hors ui thread, sinon handler ou runOnUIThread )
Exemple avec runOnUIThread ( penser au "import android.widget.Toast;" ).
try{
Log.e(TAG, "début traitement ");
Thread.sleep(20000); // appel de la méthode des traitements
Log.e(TAG, "fin Traitement");
runOnUiThread(new Runnable() {
public void run() {
Toast toast = Toast.makeText(getApplicationContext(), "fin traitement", Toast.LENGTH_SHORT);
toast.show();
}
});
} catch(Exception e)
{
Log.e(TAG, "problème");
}
- Recommencer les tests précédents.
- Observer les threads avec DDMS ( se placer sur votre processus dans Devices, cliquer sur
).
2/2

Documents pareils