Расчет угла акселерометра Android - PullRequest
3 голосов
/ 01 апреля 2012

Кто-нибудь может дать какую-либо идею вычислить угол, на который стрелка компаса должна вращаться, чтобы указывать в направлении силы тяжести от значений акселерометра x, y, z?

1 Ответ

1 голос
/ 07 апреля 2012

Я думаю, что X должно быть 0, а y должно быть положительным, в то время как z близко к 0, чтобы компас указывал вниз на землю. (Что означает, что телефон удерживается в вертикальном положении).

В общем, от угла 0 угол компаса должен быть примерно таким:

float accelerometerMaxRange = 10; // This is NOT right, but it's a good value to work with
float newAngle = 0;
if (z > 9) {
    // Phone is horizontally flat, can't point towards gravity, really. Do whatever you think is right
} else {
    newAngle  = (float)(x * 90 / accelerometerMaxRange);
    if (y < 0) {
        newAngle = 180 - newAngle;
    }
}
...