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.