Как правильно заменить Sensor.TYPE_ORIENTATION (который теперь устарел)?

Я пробовал несколько фрагментов кода, найденных в Интернете в SensorManager.getOrientation()-связанных обсуждениях. Никто не дает надежного магнитного азимута, как Sensor.TYPE_ORIENTATION. Может кто поделится рабочим кодом для Sensor.TYPE_ORIENTATION эмуляции?


person Violet Giraffe    schedule 27.02.2013    source источник
comment
Зарегистрируйтесь для Sensor.TYPE_ACCELEROMETER и Sensor.TYPE_MAGNETIC_FIELD. Значения акселерометра фильтра нижних частот перед вызовом getRotationMatrix. Сохраняйте историю матриц вращения и вычисляйте среднее значение перед вызовом getOrientation. У меня такие же стабильные результаты, как у sensor_TYPE_ORIENTATION. Конечно, значения азимута зависят от положения устройства (плоское или не плоское, плоское - это угол примерно 25 градусов между поверхностью экрана и мировой плоскостью xy). То есть, если вы используете remapCoordinateSystem, тогда, если устройство плоское, то значения азимута - ерунда.   -  person Hoan Nguyen    schedule 27.02.2013
comment
Поскольку значения акселерометра фильтра нижних частот предназначены для изоляции компонента силы тяжести, вы можете проверить, доступен ли TYPE_GRAVITY на устройстве, и использовать его вместо TYPE_ACCELEROMETER.   -  person Hoan Nguyen    schedule 28.02.2013
comment
возможный дубликат Как я могу заменить type_orientation (устарело) на android 4.0.3?   -  person Grzegorz Adam Hankiewicz    schedule 08.05.2014