Fused Orientation Provider (FOP)は、スマートフォンに埋め込まれたモーションセンサーからの信号を使用して、一貫した信頼性の高いデバイスの向きを提供する新しいAndroid APIである。FOPはGoogle Playサービスを通じて配布され、Android 5を搭載するすべてのデバイスで、メーカーに依存せずに利用できる。
FOPを使用する主な利点は磁力計からの信号と、Android回転ベクトルにすでに使用されていた加速度計およびジャイロスコープからの信号を混合できることだ。FOPと同様に、回転ベクトルは四元数を使用して方向を報告する。その主な利点は、回転ベクトルが90 度または-90 度に近づいた場合でも正しく機能することだ。
FOPは次に、デバイスの方位推定値のストリームを四元数として出力する。方位は地理的な北を基準にしている。現地の偏角が不明な場合(例えば、位置情報がない)、方位は磁北を基準とする。さらにFOPは、方位推定値から得られるデバイスの方位と精度を提供する。
Googleによれば、FOPは回転ベクトルを置き換えるものではないが、開発者がFOPを採用しやすいように新しいAPIを設計したという。
新しいFused Orientation Providerを使用するには、必要な更新頻度の範囲をDeviceOrientationRequestに指定し、requestOrientationUpdatesサービスにサブスクライブする。
更新は、アプリの状態を更新するDeviceOrientationListenerに送られる。更新頻度の選択は、電力消費にとって特に重要である。なぜなら更新頻度が高すぎるとバッテリーの使用量が大幅に増加する可能性があるからだ。どの更新頻度を使えばいいかわからない場合、GoogleはDeviceOrientationRequest::OUTPUT_PERIOD_DEFAULT
、から始めることを推奨している。
さらに、FOPは低品質のセンサーやその他のOEM関連のばらつきを補正できる。Androidのエコシステムでよくあるように、利用可能なハードウェアセンサーは多種多様で、精度、速度、干渉に対する感度などが異なる。センサーの性能を向上させるために、FOPはセンサーの同期、磁力計のバイアスやジャイロスコープのドリフトの補正など、多くのタスクを実行する。
FOPは、加速度計、ジャイロスコープ、磁力計を含むデバイスでのみ利用できる。さらに、バックグラウンドで動作しているアプリへの方位のアップデートの送信はサポートしていない。