Сначала я объясню, что делается. Я читаю значения датчиков TYPE_ACCELEROMETER
, TYPE_MAGNETIC_FIELD
, TYPE_GRAVITY
для обнаружения выбоин на дороге.
Я делаю оси x, y и z акселерометра в системе координат Земли, используя метод getRotationMatrix
( Ускорение из системы координат устройства в абсолютную систему координат ), и если смартфон это делает Если у вас нет датчика TYPE_GRAVITY
, значения силы тяжести получаются через фильтр нижних частот. Все идет нормально.
Когда я запускаю приложение на других телефонах (разные датчики), у меня разная реакция на выбоины. В документации для Android говорится следующее о getRotationMatrix
:
Матрицы, возвращаемые этой функцией, имеют смысл только тогда, когда
Устройство не свободно падает и не близко к магнитному северу.
Если устройство ускоряется или находится в сильном магнитном поле,
возвращенные матрицы могут быть неточными.
Интересно, будет ли это из-за небольшого момента, когда транспортное средство проходит через отверстие, где оно находится в свободном падении? Момент от 0,2 секунды до менее.
Или это был бы просто случай технических характеристик датчика, таких как поставщик, максимальный диапазон ...?