i have an appli which display x, y, z orientation values calculated with accelerometer and magnetometer. But when i swap from portrait to landscape, i don't get the same X value. I tryed to implement with Rotation Vector, but my device doesn't have rotation vector sensor :s
Here's my code to calculate X, Y, Z value :
@Override
public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
    float x, y, z;
    String s1 = "stringX", s2 = "stringY", s3 = "stringZ";
    // Mettre à jour la valeur de l'accéléromètre et du champ magnétique
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        acceleromterVector=event.values;
    } else if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
        magneticVector=event.values;
    }
    // Demander au sensorManager la matrice de Rotation (resultMatrix)
    SensorManager.getRotationMatrix(resultMatrix, null, acceleromterVector, magneticVector);
    // Demander au SensorManager le vecteur d'orientation associé (values)
    SensorManager.getOrientation(resultMatrix, values);
    // l'azimuth
    x = (float) Math.toDegrees(values[0]);
    // le pitch
    y = (float) Math.toDegrees(values[1]);
    // le roll
    z = (float) Math.toDegrees(values[2]);
    s1 = "X :" + x;
    s2 = "Y :" + y;           
    s3 = "Z :" + z;
    tvx.setText(s1);
    tvy.setText(s2);
    tvz.setText(s3);
    updateOrientation(x);
}
Thank you guys.