Utiliser les fonctions de base du terminal Android sous Processing

Dans ce billet dédié à Processing pour Android, nous allons utiliser les fonctions de base d’un terminal sous android.

  • L’ecran tactile
  • L’accelerometre
  • Le compas

I Structure du programme “Hello World”

Avant toute chose, nous allons créer un programme type qui affichera les valeurs des capteurs ainsi qu’un petit rectangle pour le fun ;).
C’est parti, on lance Processing !

a – préparation de la police de caractere

Pour pouvoir écrire , il nous faut créer une police de caractere !

  • rendez vous dans le menu Tools > Create Font, choisissez votre police, et nommez la “police”.
  • copiez collez le code ci-dessous :
    PFont font;
    void setup() {
    size(screenWidth, screenHeight, A3D); //
    font = loadFont("police.vlw");
    textFont(font);
    }
    

b – le programme appliqué à l’écran tactile

  • copiez collez a la suite le programme ci-dessous a la suite
void draw() {
int positionX = mouseX; /* on récupère dans la variable positionX la position en X du doigt*/
int positionY = mouseY; /* idem mais en Y*/
fill(0,255,0); /* couleur verte pour le rectangle*/
rect(positionX positionY,20,20); /* dessin pour le rectangle*/
text("positionX", 15, 30);
text("positionY", 15, 60);
}

c – le programme appliqué à l’acceleromètre

  • ajoutez le code ci dessous au début du programme :

//-----------------------------------------------------------------------------------------
// Imports des bibliothèques pour utiliser les capteurs
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorManager;
import android.hardware.SensorEventListener;

//-----------------------------------------------------------------------------------------
// variables des capteurs
SensorManager mSensorManager;
MySensorEventListener accSensorEventListener;
MySensorEventListener magSensorEventListener;
Sensor acc_sensor;
float[] acc_values;
Sensor mag_sensor;
float[] mag_values;

//-----------------------------------------------------------------------------------------
  • Puis ce code à la fin de votre programme, (ce sont les fonctions qui permettent d’obtenir les valeurs des capteurs)
//-----------------------------------------------------------------------------------------
void onResume() {
 super.onResume();
 println("RESUMED! (Sketch Entered...)");
 // Build our SensorManager:
 mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
 // Build a SensorEventListener for each type of sensor:
 magSensorEventListener = new MySensorEventListener();
 accSensorEventListener = new MySensorEventListener();
 // Get each of our Sensors:
 acc_sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
 mag_sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
 // Register the SensorEventListeners with their Sensor, and their SensorManager:
 mSensorManager.registerListener(accSensorEventListener, acc_sensor, SensorManager.SENSOR_DELAY_GAME);
 mSensorManager.registerListener(magSensorEventListener, mag_sensor, SensorManager.SENSOR_DELAY_GAME);
}

void onPause() {
 // Unregister all of our SensorEventListeners upon exit:
 mSensorManager.unregisterListener(accSensorEventListener);
 mSensorManager.unregisterListener(magSensorEventListener);
 println("PAUSED! (Sketch Exited...)");
 super.onPause();
}

// Setup our SensorEventListener
class MySensorEventListener implements SensorEventListener {
 void onSensorChanged(SensorEvent event) {
 int eventType = event.sensor.getType();
 if(eventType == Sensor.TYPE_ACCELEROMETER) {
 acc_values = event.values;
 }
 else if(eventType == Sensor.TYPE_MAGNETIC_FIELD) {
 mag_values = event.values;
 }
 }
 void onAccuracyChanged(Sensor sensor, int accuracy) {
 // do nuthin'...
 }
}
//-----------------------------------------------------------------------------------------
  • Enfin modifiez votre fonction Draw pour afficher les valeurs des capteurs modifiez à votre convenance :
  • mouseX par acc_values[0] et mouseY par acc_values[1]
  • ou bien si vou souhaitez avoir les valeurs du compas
  • mouseX par mag_values[0] et mouseY par mag_values[1]
void draw() {

float positionX =acc_values[1] ; /* on récupère dans la variable positionX la position en X de l'accelerometre*/
float positionY = acc_values[1] ; /* idem mais en Y*/
text("positionX", 15, 30);
text("positionY", 15, 60);
}

fill(0,255,0); /* couleur verte pour le rectangle*/

rect(positionX*100, positionY*100 ,20,20); /* dessin pour le rectangle, on multiplie par 100 pour voir le rectangle bouger*/


Laisser un commentaire