Чтобы проверить наличие фальшивого местоположения, большинство приложений ищут GGA
и GSV
предложений в полученных NMEA (National Marine Electronics Association)
данных. Поддельные провайдеры местоположения не отправляют предложения NMEA вместе с местоположением, поэтому этот параметр можно использовать для
Если они не были получены, а GGA
и предложений в пороговом значении времени, скажем, 100 секунд, они краснеют флаг текущего провайдера местоположения.
Этот процесс повторяется до тех пор, пока не будет принят действительный набор предложений NMEA, а затем будет выбрано соответствующее местоположение.
Чтобы извлечь NMEA данные LocationManager#addNmeaListener(GpsStatus.NmeaListener listener)
называется, а затем в слушателе
void onNmeaReceived(long timestamp, String nmea) {
Log.d("Nmea Data",nmea);
}
для получения дополнительной информации см adding a NmeaListener
в формате NMEA предложения, 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 - Спутники в View показывает данные о спутниках, что устройство может быть в состоянии найти на основе его просмотра маски и альманаха данных. Он также показывает текущую способность отслеживать эти данные. Обратите внимание, что одно предложение 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
Интересно, зависит ли оно от api, которое приложение использует для получения местоположения. Предположительно, карты google будут использовать api google play, как и большинство приложений, использующих местоположение. Возможно, wechat использует диспетчер местоположения android в родном sdk и, возможно, на него не влияет приложение поддельного местоположения. Дайте ему тест. – Maslada
Мы можем понять, что полученное местоположение является поддельным или реальным, проблем нет. Вопрос в том, как wechat обнаруживает реальное местоположение, в то время как LocationManager и FusedLocationProvider дают закрепленное поддельное местоположение. – Blackkara
Downvoter, что случилось с этим вопросом? – Blackkara