Université Mouloud Mammeri de Tizi-Ouzou 2017/2018
Faculté de Génie Electrique et d’Informatique
Département d’Informatique
3ème Année LMD : Programmation d'Applications Mobiles (Android).
Rattrapage
Documentation interdite.
Questions de cours (7 points) :
1. Expliquer, brièvement, la différence entre la JVM et la Dalvik VM.
2. Expliquer le rôle de l'ActivityManager.
3. Citer les différentes couches du système Android, puis expliquer les interactions entre ces
couches pour l'exécution d'une application.
4. Expliquer le rôle des méthodes onResume() et onPause(), quelle est la relation existante entre
ces deux méthodes?
5. Expliquer le fonctionnement d'un LinearLayout, préciser le rôle de l'attribut :
android:layout_weight.
6. Expliquer le rôle de l'attribut catégorie (category) dans un intent, préciser la différence entre les
deux valeurs suivantes : CATEGORY_HOME et CATEGORY_LAUNCHER.
7. Citer et expliquer les étapes de manipulation d'un fichier Raw.
Questions à choix unique(4 points) :
1. Combien de paramètres a la méthode 2. Dans quel dossier sont placées les ressources de type String
onActivityResult() ? ?
A) 1; B) 2; C) 3; D) 4. A)drawable; B)ressouces; C)values; D)strings.
3. Que renvoie la méthode getExtras()? 4. Que font les instructions suivantes :
A)Extras; B) Parcable; C)Extra ; D) Uri uri=[Link]("[Link] Intent i= new
Bundle. Intent(Intent.ACTION_DIAL, uri); startActivity(i);
A)Appeler le numéro; B)Afficher le numéro sur le
composeur téléphonique; C)A et B; D)Aucune.
5. Que renvoie la méthode rawQuery ()? 6. La méthode commit() permet de :
A)ResultSet; B)ContentValues; A)Ouvrir une préférence partagée ;B)supprimer; C)
C)Bundle ; D)Cursor. Valider les modifications; D) Aucune.
7. Que renvoie la méthode 8. Quelle est la classe mère de tous les Layouts (Conteneur)
openFileInput() ? Android ?
A)Stream; B)Reader; A) Container; B) View; C)ViewGroup; D)Aucune.
C) OutputStream; D) Aucune.
Exercice 1 (9 points) : On souhaite créer une petite application de simulation d'une commande de
produits (Café, Lait et Sucre). Cette application contient trois activités "ConnexionActivity",
"CommandeActivity" et "InfosCommandeActivity".
Ecrire le code java de ces trois activités.
[Link]
1. L'activité "ConnexionActivity" a l'interface de la figure (Fig-1-), où :
▪ Le bouton "Connexion" permet de lancer l'activité "CommandeActivity", si les informations
saisies (nom et prénom) sont identiques à celles enregistrées dans une préférence partagée
nommée "CONNEXION".
▪ Le bouton "Fermer" permet de fermer l'application.
2. L'activité "CommandeActivity" a l'interface de la figure (Fig-2-), où :
▪ Le bouton "Ajouter produit" permet d'ajouter un produit dans une commande. Le nom du
produit est sélectionné dans le "spinner" et sa quantité est spécifiée dans la zone de texte. La
commande est modélisée (représentée) par une structure de type MAP<String, Integer>, où la
clé représente le nom du produit et la valeur : la quantité du produit. Vous pouvez utiliser une
autre solution pour représenter la commande.
▪ Le bouton "Commander" permet de lancer l'activité "InfosCommandeActivity", en lui
passant les informations sur la commande (noms des produits et leurs quantités).
3. L'activité "InfosCommandeActivity " a l'interface de la figure (Fig-3-) : Cette Activité récupère
les informations sur la commande et calcule le total à payer puis affiche toutes ces informations.
Le calcul du total à payer est basé sur les prix unitaires suivants : café:50;Lait :20 et Sucre : 40.
▪ Le bouton "Enregistrer" permet d'enregistrer les informations sur la commande dans un
fichier sur carte SD, nommé "[Link]".
▪ Le bouton "Annuler" permet de fermer l'activité.
Fig-1- Fig-2- Fig-3-
~ Bon Courage ~
[Link]
MainActivity
package [Link].rattrapage2018;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class MainActivity extends Activity {
Button b1,b2;
EditText n,p;
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_main);
b1=(Button)findViewById([Link]);
n=(EditText) findViewById([Link]);
p=(EditText) findViewById([Link].editText2);
[Link](new [Link]() {
@Override
public void onClick(View v) {
SharedPreferences
connection=getSharedPreferences("conn",0);
String nom=[Link]("nom","moi");
String prenom=[Link]("prenom","moi");
if(([Link]([Link]().toString()))&&([Link]([Link]().toStr
ing())))
{
Intent i=new
Intent([Link],[Link]);
startActivity(i);
}
}
});
b2=(Button)findViewById([Link]);
[Link](new [Link]() {
@Override
public void onClick(View v) {
//finish();
SharedPreferences prefs=getSharedPreferences("conn",0);
[Link] mEditor =
[Link]();
[Link]("nom", "moi");
[Link]("prenom", "moi");
[Link]();
}
});
}
}
CommandeActivity
package [Link].rattrapage2018;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class CommandeActivity extends Activity {
Button b1,b2;
Map<String,Integer> commande;
Spinner pro;
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_commande);
commande=new HashMap<String, Integer>() ;
pro= (Spinner)findViewById([Link]);
b1=(Button)findViewById([Link].button2);
[Link](new [Link]() {
@Override
public void onClick(View v) {
Log.i("message
",((EditText)findViewById([Link].editText3)).getText().toString());
[Link]([Link]().toString(),[Link](((EditText
)findViewById([Link].editText3)).getText().toString()));
}
});
b2=(Button)findViewById([Link]);
[Link](new [Link]() {
@Override
public void onClick(View v) {
Intent i=new
Intent([Link],[Link]);
for(String cle:[Link]())
{
[Link](cle,[Link]([Link](cle)));
}
startActivity(i);
}
});
}
}
ResumeCommandeActivity
package [Link].rattrapage2018;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class ResumeCommandeActivity extends Activity {
Button b1,b2;
int prixcafe=50,prixlait=20,prixsucre=40;
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_resume_commande);
Intent i=getIntent();
TextView c=(TextView)findViewById([Link]);
[Link]([Link]("Café"));
TextView l=(TextView)findViewById([Link]);
[Link]([Link]("Lait"));
TextView s=(TextView)findViewById([Link]);
[Link]([Link]("Sucre"));
int total;
total=[Link]([Link]("Café"))*prixcafe+
[Link]([Link]("Lait"))*prixlait+
[Link]([Link]("Sucre"))*prixsucre;
TextView tot=(TextView)findViewById([Link]);
[Link]([Link](total));
b1=(Button)findViewById([Link].button3);
b2=(Button)findViewById([Link].button4);
/* [Link](new [Link]() {
@Override
public void onClick(View v) {
try {
OutputStream
file=openFileOutput("Commandes",MODE_APPEND);
Writer out=new
}
catch (Throwable e)
{
}
});
[Link](new [Link]() {
@Override
public void onClick(View v) {
finish();
}
});*/
}
}