【问题标题】:Does GpsSatellite.hasAlmanac() ever return true?GpsSatellite.hasAlmanac() 是否会返回 true?
【发布时间】:2013-07-26 12:46:03
【问题描述】:

我已经对 GpsSatellite.hasAlmanac() 方法进行了一些测试,如果 GPS 引擎有该卫星的历书数据,该方法应该返回 true。 hasAlmanac() 似乎总是返回 false(至少在我的设备上:Samsung Galaxy Nexus)。事实上,即使usedInFix() 返回 true,hasAlmanac() 返回 false。如果您对 GPS 接收器的工作原理有所了解,那么您就会明白这是一个不可能的组合……

有人有更好的结果吗?

【问题讨论】:

    标签: android gps android-location


    【解决方案1】:

    4.1.1 中修复了一个相关问题: 通过 getExtras() 在某个位置获得的额外捆绑包 对于 4.0.4 中 onLocationChanged() 回调中的 GPS 提供程序为空 --- 在 4.1.1 中,它现在包含 GPS 解决方案所基于的卫星数量 --- 使用 .getInt("satellites") --- 提取。谢谢!

    取自这里:https://code.google.com/p/android/issues/detail?id=30569 所以它应该在 android 4.1.1 中修复,如果我没看错的话。

    【讨论】:

    • 谢谢,但我使用的是 4.2,所以我认为问题并没有真正解决。另外,我认为对该问题的评论只是说 related 问题已得到修复。目前还不清楚这是否也解决了原来的问题。您能否在实际设备上确认问题是否已解决?
    【解决方案2】:

    根据我的 GPS 知识,如果芯片提供有效位置,hasAlmanac() 必须为真。 至少这对 GPS 卫星有效。 想象一个支持 GPS 和 GLONASS 的芯片,那么理论上你可能只有一个 GPS 历书(历书对所有 GPS 卫星都有效)但没有 GLONASS 历书。
    但实际上我希望 hasAlmanac() 对于 GPS 和 GLONASS 都是正确的

    还有一种理论上的情况:
    如果你可以显式设置年历,并且芯片检测到年历过期,那么可能会有几秒钟没有年历。

    或者,如果您的设备停用了一个月,并且在建筑物内启动时您查询了 hasAlmanac(),那么它也可能是错误的。 (它从未收到年历)

    历书的有效期更长,因为它只代表粗略的卫星星历。

    【讨论】:

    • 对不起,但这并不能真正回答我的问题。我同意 hasAlmanac() 应该 在我拥有有效职位的任何情况下都返回 true。我很肯定我的设备有更新的年历,因为我使用应用 GPS 状态和工具箱来强制重新下载年历。
    • 抱歉没有看到你的最后一句话。
    猜你喜欢
    • 2015-04-30
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 2011-09-12
    • 2012-02-10
    • 2017-06-29
    • 2018-09-29
    • 1970-01-01
    相关资源
    最近更新 更多