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
Vous devez vous connecter pour publier un commentaire.