Académique Documents
Professionnel Documents
Culture Documents
Exercice 1
Pour installer android SDK et le pluging ADT sous Eclipse, RDV sur
http://developer.android.com/sdk/index.htm .
Télécharger tout en cliquant sur "Download the SDK ADT Bundle for Windows".
Avec un seul téléchargement, l'ensemble ADT comprend tout ce dont vous avez besoin
pour commencer à développer des applications.
Je vous conseil d'installer android 2.2 (API 8) (SDK platform 2.2) et l'utiliser comme version
minimale. Cette version est un peu légère lors de l'execution de lʼémulation.
Pour l'installer lancer SDK Manager (que vous trouvrez sur le répertoire d'installation) est
choisissez android 2.2 (API 8) puis cliquez sur install (Accepter la licence).
2. Changer l'apparence de l'émulateur
Une boîte de dialogue qui nous est déjà familière apparaît: Android SDK and AVD
Manager.
Là vous trouverez la rubrique virtual devices, dans laquelle nous allons ajouter notre
fameux émulateur android.
Cliquez donc sur New...
Translate
Dans la nouvelle boîte de dialogue qui apparaît par la suite tappez le nom de
l'émulateur et choisir la configuration suivante par exemple:
L'objectif de cette exercice est de se familiariser avec les déférentes façons de création
dʼactivité dans une application Android, et comment faire interagir (ou communiquer) les
activités d'une application entre aux.
Définition :
Une activité est un composant d'application (classe qui étende la classe Activity) qui
fournit une IHM avec lequel l'utilisateur peut interagir afin de faire quelque chose.
Nous allons donc créer :
une activité principale
une sous activité en utilisant la même classe que celle de l'activité principale
une sous activité en utilisant une nouvelle classe (héritant de la classe Activity)
des activités planifiées en utilisant les Alarmes du système d'android (AlarmManager)
et récepteur de diffusion (BroadcastReciever).
des activités systèmes en répondant à des intentions implicites (implicit intents).
Notre activité principale est définie par la classe MainActivity. Ouvrir le fichier
MainActivity.java (package com.example.activitiesdemo).
Ajouter les méthodes du cycle de vie de l'activité présentées dans la figure suivante :
Dans chaque méthode ( onStart(), onPause(), ...) ajouter la ligne: log.i("", "on xxx
method!"); xxx est le nom de la méthode.
Penser à utiliser le raccourcie Elcipse "onStart + ctrl" pour la méthode onStart() par
exemple:
@Override
protected void onStart() {
Log.i("", "On Start method!");
super.onStart();
}
re-lancer votre application et voir les sorties dans LogCat (Pour visualiser LogCat : eclipse
--> window --> show view --> other --> android --> LogCat).
L'ajout des vues dans une activité
re-lancer votre application (le clique sur un bouton n'a pas d'effet, il faut maintenant
configurer les écouteurs d'événements).
Les événements ( http://developer.android.com/guide/topics/ui/ui-events.html )
Pour afficher un message contienant le texte saisi dans le champs de lors du clique sur le
bouton bntWhatEdited, ajouter un écuteur d'événement clique (OnClickListener) au bouton
btnWhatEdited, vous devez tous d'abord récupérer une référence à cet composant par
l'appel de la méthode findById(), puis déclarer l'écouteur. Dans cette exemple nous allons
choisir l'activité elle même comme écouteur. Donc la classe MainActivity doit implementer
l'interface OnClickListener
Toast : Un toast fournit des informations simples sur une opération dans une petite fenêtre
( http://developer.android.com/guide/topics/ui/notifiers/toasts.html )
L'intention (Intent) est une description abstraite d'une opération à effectuer. Il peut être utilisé pour:
lancer une activité avec startActivity(Intent),
inclure des données et l'envoyer aux recepteur de diffusion intéressés (BroadcastReceiver) avec
broadcastIntent(Intent),
communiquer avec un service de fond en appellant startService(Intent ) ou bindService(Intent, ServiceCon
int) . Voir la doc sur ce lien: http://developer.android.com/reference/android/content/Intent.html
Les intention peuvent être explicites ou implicites :
Explicites : Pour démarrer une activité à lʼaide d'une intention explicite « explicit intent » :
Intent uneActivite = new Intent (explicitContext, expliciteClasse);
startActivity (uneActivite)
Exemple : lancer l'activité PlanifiedActivities
startActivity(Intent intent) permet seulement de lancer une activité. Cependant, nous aurons aussi besoin de lan
activités et récupérer le résultat de ces activités.
Pour ce faire, au lieu d'utiliser la startActivity() on utilise la méthode
Il reste maintenant à mettre fin à notre activité appelée pour retourner à notre activité appelante. Il suffit d'utilis
méthode finish(); d'une activité.
Exemple :
@Override
public void finish() {
setResult(RESULT_OK, new Intent().putExtra("Edited", editText.getText()));
super.finish();
}
Cette phase est importante, car c'est elle qui permettra de déclencher la méthode protected
void onActivityResult(int requestCode, int resultCode, Intent intent) de l'activité appelante
qui pourra alors lire les informations retournées par l'activité appelée.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==99 && resultCode== RESULT_OK){
editText.setText(data.getExtras().getCharSequence("Edited"));
}
super.onActivityResult(requestCode, resultCode, data);
}
Travail à faire:
Configurer l'écouteur de l'événement de clique du bouton btnSelfSubActivity comme ceci :
ajouter la ligne suivante dans le corps de la méthode onCreate()
((Button)findViewById(R.id.btnSelfSubActivite)).setOnClickListener(this);
case R.id.btnSelfSubActivite :
intent = new Intent(this, getClass());
intent.putExtra("self-sub-activity", "yet");
startActivityForResult(intent, 99);
break;
Créer une nouvelle Activité PlanifiedActivities (Eclipse, new --> android --> activity)
Le clique sur le bouton btnPlanifActivity permet de créer et lancer une instance de cette
sous activité. Donc vous devez configurer l'écouteur de l'événement de clique de ce bouton
en ajoutant la ligne de code suivante dans le corps de la méthode onCreate():
((Button)findViewById(R.id.btnPlanifActivity)).setOnClickListener(this);
Dans la méthode onClick(View v) ajouter le cas suivant:
case R.id.btnPlanifActivity:
intent = new Intent(this, PlanifiedActivities.class);
startActivity(intent);break;
Pour bien différencier cette sous activité de l'activité principale ajouter une valeur string
dans le fichietr res/values/strings.xml
<string name="hello_sub_activity">Bonjour activités planifiées!</string>
Puis modifier le texte pour la vue TextView du fichier res/layout/activity_sub.xml pour
prendre la valeur hello_sub_activity à la place de hello_world.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_sub_activity" />
Re-lancer votre application et cliquer sur le bouton "Activité Planifiées"
------
-->
Nous allons y revnir à cette activité pour manipuler les activités planifiées.
Vous allez maintenant utiliser des intention implicite. Iimplanter tous d'abord le code
nécessaire pour enregistrer l'activité principale comme écouteur de l'événement Click sur
les ces boutons btnGotoGoogle, btnCallUrgence, btnWifiSetting, et btnAppSetting. Dans la
méthode onCreate() ajouter :
((Button)findViewById(R.id.btnGotoGoogle)).setOnClickListener(this);
((Button)findViewById(R.id.btnCallUrgence)).setOnClickListener(this);
((Button)findViewById(R.id.btnAppSetting)).setOnClickListener(this);
((Button)findViewById(R.id.btnWifiSetting)).setOnClickListener(this);
Dans la méthode onClick(), les intentions implicites seront utilisées avec different actions.
les cas à ajouter au bloque switch sont :
case R.id.btnGotoGoogle:
intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.google.com"));
startActivity(intent); break;
case R.id.btnAppSetting:
intent = new Intent(Settings.ACTION_APPLICATION_SETTINGS );
startActivity(intent); break;
case R.id.btnWifiSetting:
intent = new Intent(Settings.ACTION_WIFI_SETTINGS );
startActivity(intent); break;
case R.id.btnCallUrgence:
intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:112"));
startActivity(intent); break;
Tous le traitement va être fait dans la méthode onClick qu'on va écrire sous la forme
(n'oublier pas d'utiliser le raccourci eclipse "switch+ctrl")
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnBroadcastViaIntent:
// code 1
break;
case R.id.btnDynamicBroadcastRecViaAlarm:
// code 2
break;
case R.id.btnXMLStaticBroadcastRecViaAlarm:
// code 3
break;
}
}
L'Intent diffusé par sendBroadcast va être intercepté par une instance de la classe abstraite
BroadcastReceiver qui sera enregistrée chez l'activité avec un intent-filter sur l'action
"ACTION_ALARM". Donc le code suivant doit être ajouter à la méthode onCreate de classe
PlanifiedActivities
où alarms est un attribut de type AlarmManager initialisé dans la méthode onCreate ,par la
ligne :
<receiver android:name="com.example.activitiesdemo.Receiver">
<intent-filter>
<action android:name="ACTION_ALARM_FILTRED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>