Ориентация или положение устройства используется в качестве входного сигнала во многих случаях: виртуальная или дополненная реальность, распознавание жестов, компас и навигация — в любом случае, когда приложению нужна ориентация устройства относительно окружающей среды. Получение данных о настоящей ориентации — сложная задача, и пользователи часто жалуются на неправильную интерпретацию. Например, приложение с картами должно показывать правильное направление, в котором нужно идти, когда пользователь ищет ресторан в чужом городе.
Fused Orientation Provider (FOP) — это новый API в сервисах Google Play, который обеспечивает качественную и стабильную ориентацию устройства путем объединения сигналов от акселерометра, гироскопа и магнитометра.
Хотя в настоящее время Rotation Vector в Android уже обеспечивает получение данных об ориентации устройства (и будет продолжать это делать), новый FOP обеспечивает более последовательное поведение и высокую производительность на всех устройствах. Google разработал FOP API аналогично Rotation Vector, чтобы максимально упростить переход для разработчиков.
В частности, Fused Orientation Provider:
- Обеспечивает единую реализацию на всех устройствах: API в сервисах Google Play означает отсутствие различий в реализации на устройствах разных производителей. Обновления алгоритма могут быть выпущены быстро и независимо от обновлений платформы Android;
- Непосредственно учитывает местное магнитное склонение, если оно доступно;
- Компенсирует более низкое качество датчиков и OEM-реализаций (например, смещение гироскопа, синхронизацию датчиков).
В некоторых случаях FOP возвращает значения из AOSP Rotation Vector, адаптированного для учета магнитного склонения.
Fused Orientation Provider доступен на всех устройствах с сервисами Google Play на Android 5 (Lollipop) и выше. Разработчикам необходимо добавить зависимость play-services-location:21.2.0 (или выше), чтобы получить доступ к новому API. Подробнее вы можете прочитать на сайте Google.