2024-12-02 16:56:26 +01:00
2024-12-02 17:04:03 +01:00
2024-12-02 14:20:38 +01:00
2024-12-02 14:20:38 +01:00
2024-12-02 14:20:38 +01:00
2024-12-02 14:20:38 +01:00
2024-12-02 14:20:38 +01:00
2024-12-02 14:20:38 +01:00
2024-12-02 17:18:38 +01:00
2024-12-02 14:20:38 +01:00

Android(2)-Première application

Travail réalisé :
Nous avons développé une application Android simple permettant d'interagir avec des composants graphiques (ex. : champs de texte, boutons) et d'explorer le cycle de vie d'une activité. Les fonctionnalités incluent la récupération de données saisies et leur affichage dans l'interface utilisateur.

Difficultés rencontrées :

  • La compréhension du cycle de vie des activités Android.

Notion d'activité et ses fichiers essentiels

Notion d'activité

Une activité représente un écran avec lequel l'utilisateur peut interagir. Elle est au cœur de toute application Android et gère l'affichage, la logique métier et les interactions utilisateur.

Fichiers essentiels

  1. Fichier Java de l'activité :
    C'est la classe qui hérite de AppCompatActivity. Elle contient la logique métier et gère les interactions utilisateur.

  2. Fichier XML de mise en page :
    Définit l'interface graphique de l'activité (ex. : boutons, champs de texte). Il se trouve dans le dossier res/layout et est lié à l'activité Java via setContentView(R.layout.nom_du_fichier).


Intérêt des fichiers de ressources (strings.xml, colors.xml)

strings.xml

  • Centralise les chaînes de caractères utilisées dans l'application.

  • Facilite la gestion des textes pour la traduction et la maintenance.

  • Exemple :

    <string name="welcome_message">Bienvenue</string>
    
    

colors.xml

  • Définit les couleurs utilisées dans l'application, assurant une cohérence visuelle.

  • Exemple :

    <color name="primaryColor">#FF5722</color>
    
    

Ces fichiers permettent de séparer le contenu statique du code métier, rendant l'application plus lisible et modulaire.


Création des composants de l'interface graphique

  1. Ajout dans le fichier XML :
    Exemple dun bouton :

    <Button
        android:id="@+id/buttonValider"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/valider" />
    
    
  2. Liaison dans lactivité Java :

    Button buttonValider = findViewById(R.id.buttonValider);
    
    

Méthode exécutée au lancement de l'activité

La méthode exécutée systématiquement est onCreate(Bundle savedInstanceState).
Elle initialise lactivité et charge linterface graphique définie dans le fichier XML via setContentView.


Rendre les objets graphiques accessibles dans le programme Java

Les objets graphiques définis dans le fichier XML sont accessibles en Java grâce à la méthode findViewById.
Exemple :

EditText etPrenom = findViewById(R.id.etPrenom);


Récupération du contenu dun champ saisi

Pour récupérer le texte saisi dans un champ EditText :

String prenom = etPrenom.getText().toString();


Affichage dun texte dans un contrôle graphique

Pour afficher du texte dans un TextView :

TextView tvMessage = findViewById(R.id.tvMessage);
tvMessage.setText("Bonjour !");


Signification de R dans linstruction

etPrenom = (EditText) findViewById(R.id.etPrenom);

R est une classe générée automatiquement par Android qui référence toutes les ressources de lapplication (fichiers XML, images, chaînes de caractères, etc.).

  • R.id.etPrenom identifie lélément graphique ayant lattribut android:id="@+id/etPrenom" dans le fichier XML.

Pourquoi préciser le type de contrôle devant findViewById ?

findViewById retourne un objet générique de type View. Pour accéder aux méthodes spécifiques dun contrôle graphique (EditText, Button, etc.), une conversion explicite (cast) est nécessaire.


Quest-ce quun Toast ?

Un Toast est un message temporaire affiché à lécran pour notifier lutilisateur.
Exemple daffichage dun Toast :

Toast.makeText(getApplicationContext(), "Action réussie", Toast.LENGTH_SHORT).show();


Ce document présente les concepts de manière claire et concise, avec des exemples pour appuyer les explications.

# Android(3) : Application avec appel de sous-activités

Contexte

Une entreprise souhaite disposer d'une application mobile Android pour gérer son inventaire. Cette application, nommée Inventaire, permet aux salariés :

  • Dajouter un article au stock
  • De visualiser les articles déjà ajoutés
  • De quitter lapplication temporairement

Lobjectif est de créer une interface intuitive en utilisant plusieurs activités et dassurer une navigation fluide entre celles-ci grâce aux intents.


Travail réalisé

Fenêtre principale (MainActivity)

  • Une interface avec trois boutons :
    • Ajouter un nouvel article : ouvre la fenêtre AjoutArticleActivity.
    • Liste des articles : ouvre la fenêtre ListeArticleActivity.
    • Quitter : ferme linterface en gardant lapplication en arrière-plan.

Fonctionnalités mises en place :

  1. Création du projet avec une activité principale (Empty View Activity).
  2. Interface graphique de la fenêtre principale (LinearLayout vertical, TextView pour le titre, trois boutons avec libellés déclarés dans strings.xml).
  3. Bouton Quitter fonctionnel : Utilisation de finish() pour quitter la fenêtre actuelle tout en conservant l'application active dans la liste des tâches.
  4. Lien entre les activités grâce aux intents.

Fenêtre AjoutArticle (AjoutArticleActivity)

  • Interface comprenant :
    • Quatre champs de texte pour saisir :
      • Référence
      • Désignation
      • Prix (réel)
      • Quantité (entier)
    • Un bouton "Ajouter".
    • Un bouton "Quitter" qui retourne à la fenêtre principale.
  • Utilisation dun intent pour la navigation depuis la fenêtre principale.

Fenêtre Liste des articles (ListeArticleActivity)

  • Interface simple avec :
    • Un titre ("Liste des articles").
    • Un bouton "Quitter" pour revenir à la fenêtre principale.
  • Gestion du retour avec l'utilisation dun intent.

Explications techniques

Passage d'une activité à une autre
La navigation entre les activités dans Android seffectue via les intents.
Voici les étapes pour passer de la MainActivity à une autre activité :

  1. Déclaration de lactivité cible dans le fichier AndroidManifest.xml.

    <activity android:name=".AjoutArticleActivity" />
    <activity android:name=".ListeArticleActivity" />
    
    
  2. Création dun intent dans le code de lactivité source.
    Exemple pour ouvrir AjoutArticleActivity :

    Intent intent = new Intent(MainActivity.this, AjoutArticleActivity.class);
    startActivity(intent);
    
    
  3. Ajout dun gestionnaire dévénements sur le bouton pour déclencher lintent :

btQuitter.setOnClickListener(new View.OnClickListener() {  
});

Quitter une activité et revenir en arrière
Pour quitter une activité, on utilise finish() :

  • Cela termine lactivité actuelle et revient à celle qui la appelée.
  • Exemple dans AjoutArticleActivity :
btQuitter.setOnClickListener(new View.OnClickListener() {  
    public void onClick(View arg0) {  
        finish();  
    }  
});

Passage de données entre activités
Pour transmettre des informations dune activité à une autre, on utilise les extras des intents.

  1. Ajouter des données à lintent dans lactivité source :

    Intent intent = new Intent(MainActivity.this, AjoutArticleActivity.class);
    intent.putExtra("EXTRA_REFERENCE", "Ref12345");
    startActivity(intent);
    
    
  2. Récupérer les données dans lactivité cible :

    Intent intent = getIntent();
    String reference = intent.getStringExtra("EXTRA_REFERENCE");
    
    
  3. Retourner des résultats à lactivité appelante :
    On utilise setResult() et onActivityResult().
    Exemple pour envoyer une confirmation depuis AjoutArticleActivity :

    Intent resultIntent = new Intent();
    resultIntent.putExtra("ARTICLE_ADDED", true);
    setResult(RESULT_OK, resultIntent);
    finish();
    
    

    Dans MainActivity, gérer la réponse :

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_CODE_AJOUT && resultCode == RESULT_OK) {
            boolean isAdded = data.getBooleanExtra("ARTICLE_ADDED", false);
            if (isAdded) {
                Toast.makeText(this, "Article ajouté avec succès", Toast.LENGTH_SHORT).show();
            }
        }
    }
    
    

Android(4) : Gestion des données avec SQLite

1. Présenter brièvement le travail à effectuer

Le travail consiste à développer une base de données SQLite pour gérer les articles dans une application Android. Cela inclut la création des tables, la définition des relations entre les données, et limplémentation des fonctionnalités pour ajouter, consulter, modifier et supprimer des articles. Une attention particulière doit être portée à la gestion de la version de la base et aux bonnes pratiques de programmation.


2. Les 3 classes permettant la gestion de la base de données et leur rôle

2.1. CreateBdInventaire

  • Rôle : Crée et gère la structure de la base de données (tables, colonnes).
  • Détails :
    • Méthode onCreate : Crée les tables nécessaires si la base nexiste pas.
    • Méthode onUpgrade : Gère les modifications de structure en cas de changement de version.

2.2. DAO

  • Rôle : Fournit les méthodes de base pour ouvrir et fermer la connexion à la base de données.
  • Détails :
    • Méthode open : Ouvre la base en mode lecture/écriture.
    • Méthode close : Ferme la connexion pour libérer les ressources.

2.3. ArticleDAO

  • Rôle : Implémente les opérations CRUD (Create, Read, Update, Delete) pour la table article.
  • Détails :
    • Méthode create : Insère un nouvel article dans la base.
    • Méthode read : Récupère un ou plusieurs articles.
    • Méthode update : Modifie un article existant.
    • Méthode delete : Supprime un article.

3. Quand la base de données est-elle créée ?

La base de données est créée dans les situations suivantes :

  • Lors du premier lancement de l'application, si aucune base portant le même nom n'existe sur le système.
  • Lors dun changement de version de la base, si la méthode onUpgrade est correctement implémentée.

4. Tester le changement de version et copier l'affichage de la console Logcat

Étapes de test :

  1. Augmenter la variable VERSION_BDD dans la classe DAO.
  2. Ajouter une instruction Log.d("bdd", "Base mise à jour") dans la méthode onUpgrade.
  3. Relancer lapplication.

Affichage Logcat :

2024-12-02 16:34:35.818 11716-11716 bdd                     com.example.manageinventory          D  Appel au constructeur de la DAO ok
2024-12-02 16:34:35.819 11716-11716 bdd                     com.example.manageinventory          D  Base de donnée ouverte
2024-12-02 16:34:44.857 11716-11716 bdd                     com.example.manageinventory          D  insert com.example.manageinventory.Article@46309a7
2024-12-02 16:34:46.611 11716-11716 bdd                     com.example.manageinventory          D  Base de donnée fermer


5. Caractéristiques dune base SQLite implémentée sur un smartphone

SQLite est parfaitement adapté aux smartphones grâce à ses caractéristiques suivantes :

  • Léger : Les bases sont stockées dans un simple fichier avec un minimum despace requis.
  • Portable : Compatible avec toutes les versions dAndroid et indépendant de larchitecture matérielle.
  • Performant : Optimisé pour les lectures/écritures fréquentes et les transactions ACID.
  • Sans configuration : Ne nécessite pas de serveur ou de processus séparé.
  • Support de SQL standard : Permet dutiliser des requêtes complexes pour manipuler les données.

6. Ajouter une table categorie et la relier à la table article

Étapes pour ajouter la table categorie :

  1. Modifier la méthode onCreate dans CreateBdInventaire pour inclure la création de la table categorie :

    CREATE TABLE categorie (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        libelle TEXT NOT NULL
    );
    
    
  2. Ajouter une colonne idCatego dans la table article pour représenter la clé étrangère :

    ALTER TABLE article ADD COLUMN idCatego INTEGER;
    
    
  3. Définir une relation entre article et categorie :

    CREATE TABLE article (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        ref TEXT NOT NULL,
        des TEXT NOT NULL,
        pu REAL,
        qte INTEGER,
        idCatego INTEGER,
        FOREIGN KEY (idCatego) REFERENCES categorie(id)
    );
    
    
Description
No description provided
Readme 137 KiB
Languages
Java 100%