为了检查虚假位置,大多数应用程序会在它们收到的数据中查找GGA
和GSV
句子。NMEA (National Marine Electronics Association)
假的位置提供者不会随位置发送 NMEA 语句,因此此参数可用于
如果他们没有在阈值时间内收到和GGA
和GSV
语句,例如 100 秒,他们会标记当前位置提供者。
重复这个过程,直到收到一组有效的 NMEA 语句,然后选择相应的位置。
调用检索 NMEA 数据LocationManager#addNmeaListener(GpsStatus.NmeaListener listener)
,然后在侦听器中调用
void onNmeaReceived(long timestamp, String nmea) {
Log.d("Nmea Data",nmea);
}
有关更多信息,请参阅
在 NMEA 语句中添加 NmeaListener,如下所示
GGA
GSV
GGA - 提供 3D 位置和精度数据的基本修复数据。
样本 :"$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47"
Where:
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<br/>
6 = estimated (dead reckoning) (2.3 feature)
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 *
GSV - 视图中的卫星显示该装置根据其查看掩码和历书数据可能能够找到的卫星数据。它还显示了当前跟踪此数据的能力。请注意,一个 GSV 句子最多只能提供 4 颗卫星的数据,因此可能需要 3 个句子才能获得完整信息。GSV 语句包含比 GGA 可能指示的更多的卫星是合理的,因为 GSV 可能包括未用作解决方案的一部分的卫星。不要求 GSV 语句全部按顺序出现。为了避免数据带宽过载,一些接收器可能会将各种句子放在完全不同的样本中,因为每个句子都标识它是哪一个。
样本:"$GPGSV,2,1,08,01,40,083,46,02,17,308,41,12,07,344,39,14,22,228,45*75"
Where:
GSV Satellites in view
2 Number of sentences for full data
1 sentence 1 of 2
08 Number of satellites in view
01 Satellite PRN number
40 Elevation, degrees
083 Azimuth, degrees
46 SNR - higher is better
for up to 4 satellites per sentence
*75 the checksum data, always begins with *
资料来源:NMEAData