просто хотел добавить что-то к ответу Хартока, так как сначала я не мог этого понять ...
Я переписал метод так:
public static float[] adjustAccelOrientation(int displayRotation, float[] eventValues)
{
float[] adjustedValues = new float[3];
final int axisSwap[][] = {
{ 1, -1, 0, 1 }, // ROTATION_0
{-1, -1, 1, 0 }, // ROTATION_90
{-1, 1, 0, 1 }, // ROTATION_180
{ 1, 1, 1, 0 } }; // ROTATION_270
final int[] as = axisSwap[displayRotation];
adjustedValues[0] = (float)as[0] * eventValues[ as[2] ];
adjustedValues[1] = (float)as[1] * eventValues[ as[3] ];
adjustedValues[2] = eventValues[2];
return adjustedValues;
}
Точно такой жевещь, просто с более дружественными именами переменных, и я воссоздаю float внутри, потому что мне это нужно было вот так ... Просто вызовите эту функцию, вставьте getRotation и массив float event.values, проверьте значения его возвращаемого массива float ивыберите любой номер, который вы предпочитаете ...
Надеюсь, это кому-нибудь поможет!