Данные Air Gyroscope, похоже, сильно отличаются на iOS и Android
Я создал приложение, которое действительно хорошо использовало расширение Gyrosope Native Extension в Android и работает отлично.
Однако теперь я протестировал iPhone 4 (iOS7) с использованием AIR 4.0, и производительность гироскопа, похоже, совершенно иная, где наклон не делает ничего, кроме вращения телефона.
Кто-нибудь знает, есть ли существенная разница в том, как эти данные работают на iOS и Android?
Мне кажется это http://www.ketzler.de/2011/11/adobe-air-gyroscope-native-extension-with-euler-angles-roll-pitch-yaw-for-ios/ который я собираюсь попробовать использовать.
Будет ли это замена или дополнение к существующему расширению?
1 ответ
Вы получите намного лучшие результаты от использования нескольких датчиков для расчета положения устройства. Упомянутое вами расширение делает это с помощью встроенных функций в iOS SDK. Используя сочетание доступных датчиков, вы получаете быстрый отклик от гироскопа, но учитываете дрейф, используя акселерометр и магнитометр.
На iOS это использует класс CMAttitude (который использует предоставленная вами ссылка):
Использование этого метода на обеих платформах определенно сближает показания, однако есть несколько разных способов сделать это на Android, поскольку у вас есть доступ к гораздо большему количеству информации. Самой большой проблемой на Android, конечно же, является использование всего различного оборудования, поэтому все датчики показывают немного разные диапазоны и значения. Лучший метод, который я нашел, - это использовать датчик TYPE_ROTATION_VECTOR, а затем функцию SensorManager.getOrientation, если вы ищете углы Эйлера. Я также попробовал собственный алгоритм объединения со смешанными результатами.
http://developer.android.com/reference/android/hardware/Sensor.html
Я также рекомендую вам заглянуть в кватернионы. Это обеспечивает гораздо лучший результат для позиционирования устройства и позволяет избежать связанной блокировки карданного подвеса.
Я потратил много времени на изучение всего этого для пакета расширений distriqt и собираюсь выпустить новое расширение DeviceMotion, которое сделает все это, если вы заинтересованы в этом.