Ressources informatiques

Ressources informatiques

Ressources informatiques

Effectuer un tâche répétitive sous Android

Objectif : Créer une application qui puisse transmettre toutes les secondes une requête au serveur TCP minimal sous Linux. Un bouton (Button) appelé DEMARRER permettra de démarrer l'émission périodique des requêtes et la mise à jour de l'interface avec la réponse obtenue. Le texte du bouton devient alors ARRETER. Il permet alors d'arrêter la communication avec le serveur. Une zone de texte (TextView) permettra d'afficher la réponse du serveur. Cette application utilise la classe ClientTcpMinimal.

Créez une application Android

Suivez la docucmentation pour créer votre application Android

Ecrire le code de la classe MainActivity

Un handler permet d'envoyer des objets Runnable à la la file de messages de l'activité (MessageQueue). L'objet Runnable sera exécuté par appel de sa méthode run(). Quelques méthodes de la classe Handler :

public class MainActivity extends AppCompatActivity {
    private TextView textViewCaractereRecu;
    private Button boutonDemarrer;
    private boolean demarre = false;
    private char requeteChar = 'a';
    private Handler mHandler = new Handler();
    private Runnable thread = new Runnable() {
       public void run() {
            if (demarre) {
               byte requete;
               requete = (byte)requeteChar;
               ClientTcpMinimal clientTcpMinimal = new ClientTcpMinimal(new String("192.168.1.101"), 50000, requete, textViewCaractereRecu);
               clientTcpMinimal.execute();
               requeteChar++;
               if (requeteChar == 'z')
                   requeteChar = 'a';
               mHandler.postDelayed(this, 1000);
           }
        }
    };

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Associer les attributs avec les composants de l'IHM
        textViewCaractereRecu = (TextView) findViewById(R.id.caractereRecu);
        boutonDemarrer = (Button) findViewById(R.id.boutonDemarrer);
    }

    /** Fonction appelée lorsqu'on clique sur le bouton Emettre */
    public void onClickBoutonDemarrer(View view) {
         if (!demarre) {
             boutonDemarrer.setText("Arrêter");
             demarre = true;
             mHandler.post(thread);
         } else {
             boutonDemarrer.setText("Démarrer");
             mHandler.removeCallbacks(thread);
             demarre = false;
         }

    }
}

Exécuter l'application

Résultat obtenu :

Mise à jour périodique client TCP Android Mise à jour périodique client TCP Android Mise à jour périodique client TCP Android