【问题标题】:Source of NMEA sentences in Android LocationManagerAndroid LocationManager 中 NMEA 语句的来源
【发布时间】:2019-10-17 15:46:25
【问题描述】:

由于WNRO,我的 Note2 停止提供正确的 GPS 位置信息。

我可以从记录 NMEA 语句中看到传递了错误的日期,而且每隔几秒/分钟就会丢失 satfix。 Note2 使用 Broadcom 的二进制专有驱动程序 (gpsd) 与芯片交互。要查看这是否可以修复(就像我在其他一些设备上所做的那样),我需要知道 Android 中输出 NMEA 语句的原因。

NMEA 语句总是由 GPS 芯片和各自的驱动程序直接输出到命名管道中,还是由 LocationManager-framework/API 生成的 NMEA 语句?

【问题讨论】:

    标签: java android gps android-gps android-developer-api


    【解决方案1】:

    NMEA 语句由 GPS 芯片生成,例如,

    通过android.location.GpsStatus.NmeaListener

    用于从 GPS 接收 NMEA 语句。

    通过实现这个接口并调用

    LocationManager#addNmeaListener 从 GPS 接收 NMEA 数据 引擎。

    https://developer.android.com/reference/android/location/GpsStatus.NmeaListener

    两个引号都表示 NMEA 语句不是由 Android Location API 生成的。

    注意:我引用了一个已弃用的接口 (GpsStatus.NmeaListener),因为 Note2 是一个旧设备并且很可能正在使用它。

    【讨论】:

    • 那么 GPS 芯片的固件/驱动程序负责生成正确的 NMEA 语句?
    • 我可以说的是,您将收到一些原始 NMEA 数据包,例如,onNmeaReceived() 回调。收到的 NMEA 语句大概是正确的。
    猜你喜欢
    • 1970-01-01
    • 2011-06-08
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多