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