2

我想在我的应用程序中显示一个 GPS 状态图标,以指示用户是否有有效的修复。似乎有几种方法可以做到这一点,包括直接使用 API(根据 SO 上的一些问题,结果似乎很差)和猜测在经过一定时间后 GPS 修复已被丢弃(如何我检查 GPS 接收器的当前状态?

Android 显然也可以让您直接获取 NMEA 字符串:http: //developer.android.com/reference/android/location/GpsStatus.NmeaListener.html

NMEA 令牌 ($GPGGA) 之一为您提供修复质量信息:

 GGA          Global Positioning System Fix Data
 123519       Fix taken at 12:35:19 UTC
 4807.038,N   Latitude 48 deg 07.038' N
 01131.000,E  Longitude 11 deg 31.000' E
 1            Fix quality: 0 = invalid
                           1 = GPS fix (SPS)
                           2 = DGPS fix
                           3 = PPS fix
                           4 = Real Time Kinematic
                           5 = Float RTK
                           6 = estimated (dead reckoning)
                           7 = Manual input mode
                           8 = Simulation mode
 08           Number of satellites being tracked
 0.9          Horizontal dilution of position
 545.4,M      Altitude, Meters, above mean sea level
 46.9,M       Height of geoid (mean sea level) above WGS84
                  ellipsoid
 (empty field) time in seconds since last DGPS update
 (empty field) DGPS station ID number
 *47          the checksum data, always begins with *

似乎我可以检查我的修复状态是否不是 0、6、7 或 8 来查看我是否有修复。但我有几个问题:

  1. 期望所有 Android GPS 接收器都提供 NMEA 字符串是否合理?

  2. 如果是 1,所有 Android GPS 接收器都会定期提供 NMEA 字符串吗?

我玩过的单独/USB GPS 接收器只是定期广播 NMEA 字符串(即,即使没有修复),因此很容易检查是否有修复。我不知道这种行为是否由任何标准定义并且是我可以依赖的。

我知道并非所有 GPS 接收器都广播 NMEA 字符串,并且有些接收器传输封闭协议……但我不知道这些类型的接收器是否用于典型的零售 Android 设备。

4

0 回答 0