我想在我的应用程序中显示GPS状态图标,以指示是否有对用户的有效修复。似乎有几种方法可以做到这一点,包括直接使用API(基于SO上的一些问题似乎效果不佳)并猜测GPS修复在经过一段时间后已被删除({{ 3}})
Android显然也可以让你直接获取NMEA字符串: How can I check the current status of the GPS receiver?
其中一个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,看看我是否有修复。但我有几个问题:
期望所有Android GPS接收器都提供NMEA字符串是否合理?
如果为1,那么所有Android GPS接收器是否会定期提供NMEA字符串?
我玩过的单独/ USB GPS接收器只是定期播放NMEA字符串(即使没有修复),因此很容易检查是否有修复。我不知道这种行为是否由任何标准定义,是我可以依赖的。
我知道并非所有GPS接收器都播放NMEA字符串,而有些则传输封闭协议......但我不知道这些接收器是否用于典型的零售Android设备。