我已经对该方法进行了一些测试,GpsSatellite.hasAlmanac()
如果 GPS 引擎具有该卫星的年历数据,则该方法应返回 true。似乎hasAlmanac()
总是返回 false(至少在我的设备上:Samsung Galaxy Nexus)。事实上,即使usedInFix()
返回 true,也hasAlmanac()
返回 false。如果您对 GPS 接收器的工作原理有所了解,那么您就会明白这是一个不可能的组合……
有人有更好的结果吗?
我已经对该方法进行了一些测试,GpsSatellite.hasAlmanac()
如果 GPS 引擎具有该卫星的年历数据,则该方法应返回 true。似乎hasAlmanac()
总是返回 false(至少在我的设备上:Samsung Galaxy Nexus)。事实上,即使usedInFix()
返回 true,也hasAlmanac()
返回 false。如果您对 GPS 接收器的工作原理有所了解,那么您就会明白这是一个不可能的组合……
有人有更好的结果吗?
4.1.1 中修复了一个相关问题:在 onLocationChanged() 回调中由 getExtras() 在 GPS 提供程序的位置上获得的额外捆绑包在 4.0.4 中为空 --- 在 4.1.1 中,它现在包含GPS 解决方案所基于的卫星——使用 .getInt("satellites") 提取——应该如此。谢谢!
取自这里:https ://code.google.com/p/android/issues/detail?id=30569 所以它应该在 android 4.1.1 中修复,如果我没看错的话。
hasAlmanac()
如果芯片提供有效位置,则根据我的 GPS 知识,它必须是真实的。至少这对 GPS 卫星有效。想象一个支持 GPS 和 GLONASS 的芯片,那么理论上你可能只有一个 GPS 历书(历书对所有 GPS 卫星都有效)但没有 GLONASS 历书。
但实际上我希望 hasAlmanac() 对于 GPS 和 GLONASS 都是正确的
还有一种理论上的情况:
如果你可以显式设置年历,而芯片检测到年历过期,那么可能会有几秒钟没有年历。
或者,如果您的设备停用了一个月,并且在建筑物内启动时您查询了 hasAlmanac(),那么它也可能是错误的。(它从未收到年历)
历书的有效期更长,因为它只代表粗略的卫星星历。