В настоящее время я использую спидометр, получая данные ориентации с моего телефона. Я используюпостоянное вращающееся устройство - как получить действительные данные ориентации?
SensorManager.getRotationMatrix(R, I, gravity, geomagnetic);
float orientation[] = new float[3];
SensorManager.getOrientation(R, orientation);
float azimuth = orientation[0];
double azimuthD = Math.toDegrees(azimuth);
if(azimuthD < 0) azimuthD = 360 + azimuthD;
С этим я могу получить данные вращения с телефона, например, азимут и т.д .. Во всяком случае, это работает отлично, пока устройство находится на столе или что-то. Но при повороте вокруг определенной точки (в моем случае устройство закреплено на колесе и вращается с определенной скоростью) значения далеки от точной. Я считаю, что, поскольку я использую гравитацию и геомагнитный датчик, может возникнуть конфликт с силами, которые влияют на эти датчики, вращаясь. As the wheel turns, the rotation changes relative to a point, but the local device rotation stays the same.
Как я могу получить доступ к ориентации устройства во время его поворота, не запуская много шумных данных? Я прочитал кое-что о свойстве Sensor.TYPE_ROTATION_VECTOR'а, но не мог понять, как это работает. Также я читал о возможности переназначения системы координации, но как это должно помочь, так как мой телефон никогда не бывает вертикальным по отношению к полу больше, чем под углом 5 ° -10 °. Буду признателен за любую помощь.
Приветствия, viehlieb