Google在Google Play服务中添加一个新的Fused Orientation Provider(FOP)API,该API透过融合加速计、陀螺仪和测量磁场的磁强计(Magnetometer),提供准确且一致的装置朝向(Orientation),适用于Android 5(Lollipop)以上执行Google Play服务的所有装置。
Google提到,FOP API的设计将与原本的Android Rotation Vector类似,方便开发人员转换。相比Android Rotation Vector,FOP更能提供统一的跨装置实作,弥补因较低品质感测器和不同OEM的实作差异。
Android生态系中存在各式各样的感测系统实作,虽然装置都需要符合Android相容性定义文件中的标准,但Google指出,由于文件中建议的感测器规格不够严谨,无法完全避免装置朝向资讯不准确。像是装置朝向可能受到装置内部的磁力干扰、延迟或是不平均的感测器采样,装置周围也可能存在扭曲地磁的物质,同时,也需要考量不同使用者的行为。
为此Google推出新的FOP API,以提供更强健且精确的装置朝向资讯。FOP API的重要更新包括同步各感测器的时间基准,确保所汇整的加速计、陀螺仪和磁强计资料来自同一个时窗,避免因为时间差产生计算误差。
FOP还补偿了硬磁(Hard Iron)偏移,硬磁偏移是因为周围环境中恒定磁场所产生的干扰,FOP透过演算法校正这种偏差,提高磁强计的精准度。FOP也会随时监测陀螺仪产生的偏差,确保装置朝向估计正确。
FOP最重要的核心功能,则是融合加速计、陀螺仪和磁强计资讯,计算装置在世界中的朝向,透过结合三种感测器的优点来克服各自的缺点,提供更准确且稳定的装置朝向资讯。FOP能够参照现实指南针方向产生准确估算,让开发者可以评估当前FOP所生成装置朝向资料的信心程度。
Google指出,FOP演算法经过全面的测试资料验证,已经确定可在各种装置上提供高品质结果。FOP会以四元数(Quaternion)串流输出装置朝向估算,朝向会参照地理北极,但是当位置资讯不可用,磁偏角未知的时候,方向则参照地磁北极。
另外,FOP还会提供装置相对于地理北极的方向(Heading),该方向是从水平面量测,与Google地图中显示的方向相同。由于Google地图也使用FOP,因此开发者可以借此了解装置方向资料的可靠性。