Je veux détecter les bonnes rotations autour de l'axe X avec les capteurs Android. Après googler, je trouve ce code:Question sur la rotation de l'axe X sur Android
public void onSensorChanged(SensorEvent event) {
Sensor sensor = event.sensor;
switch(sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
mAcc = event.values.clone();
break;
case Sensor.TYPE_MAGNETIC_FIELD:
mMag = event.values.clone();
break;
}
if (mAcc == null || mMag == null) return;
float R[] = new float[9];
if (SensorManager.getRotationMatrix(R, null, mAcc, mMag)) {
SensorManager.getOrientation(R, mOrientation);
}
}
mOrientation [1] représente les radians autour de l'axe X. Cependant, la valeur est très étrange.
- Lorsque le téléphone est supérieur plat sur la table, il est 0.
- Lorsque la tête du téléphone pointant vers le sol, il est PI/2.
- Lorsque le téléphone repose à plat sur la table, il est de nouveau 0.
- Lorsque la tête du téléphone pointant vers le ciel, il -PI/2.
Les états entre 1,2 ont les mêmes valeurs de rotation que celles entre 2,3. Comment puis-je savoir dans quel état se trouve mon téléphone?