Dans ce tuto je vais utiliser l’accéléromètre, pour afficher la position de mon portable dans l’espace. les coordonnées X,Y,Z.
D’abord mon fichier xml pour afficher le resultat
Pour utiliser les capteurs d’android j’utilise la class SensorManager.
Dans ma methode onCreate je crée mon objet SensorManager
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// mon objet mSensorManager de type SensorManager qui prend la main
mSensorManager = (SensorManager)getSystemService(this.SENSOR_SERVICE);
//Sensor. TYPE_ACCELEROMETER défini le type de capteur
//SensorManager.SENSOR_DELAY_NORMAL le delai de rafraichissement des informations
mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL);
//les objet de la fenetre xml
mTxtViewX = (TextView) findViewById(R.id.textX);
mTxtViewY = (TextView) findViewById(R.id.textY);
mTxtViewZ = (TextView) findViewById(R.id.textZ);
}
je crée une méthode positon qui met à jour les champs TextView de mon Xml.
public void Position(float iX, float iY, float iZ)
{
mTxtViewZ.setText(" "+iZ);
mTxtViewX.setText(" "+iX);
mTxtViewY.setText(" "+iY);
}
Je crée maintenant mon objet SensorEventListener , qui sera l’écouteur des évènements de mon capteur.
private final SensorEventListener mSensorListener = new SensorEventListener() {
// action quand le capteur bouge
public void onSensorChanged(SensorEvent se)
{
float x = se.values[0];
float y = se.values[1];
float z = se.values[2];
// met à jour la position dans mes TextView
Position(x, y , z);
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};
Le code complet.
package org.accelometre;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;
public class Accelerometre extends Activity {
private SensorManager mSensorManager;
private TextView mTxtViewX;
private TextView mTxtViewY;
private TextView mTxtViewZ;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSensorManager = (SensorManager)getSystemService(this.SENSOR_SERVICE);
mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL);
//mTxtView = new TextView(this);
mTxtViewX = (TextView) findViewById(R.id.textX);
mTxtViewY = (TextView) findViewById(R.id.textY);
mTxtViewZ = (TextView) findViewById(R.id.textZ);
}
public void Position(float iX, float iY, float iZ)
{
mTxtViewZ.setText(" "+iZ);
mTxtViewX.setText(" "+iX);
mTxtViewY.setText(" "+iY);
}
private final SensorEventListener mSensorListener = new SensorEventListener() {
public void onSensorChanged(SensorEvent se)
{
float x = se.values[0];
float y = se.values[1];
float z = se.values[2];
Position(x, y , z);
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};
@Override
protected void onResume()
{
super.onResume();
mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onStop()
{
mSensorManager.unregisterListener(mSensorListener);
super.onStop();
}
//**********fin de la class*************************
}
Pour tester cette class vous devez disposer d’un téléphone, je ne crois que ça fonctionnera sur l’émulateur.
Il est temps de mettre à profit les tutoriels d’Android France:
Passez à la vitesse supérieure et investissez quelques dizaines d’euros pour acquérir les connaissances qui vous feront gagner de l’argent avec vos applications rendez-vous sur notre boutique Android-france pour ces formations en vidéo