ユーザーに有効な修正があるかどうかを示すために、アプリケーションに GPS ステータス アイコンを表示したいと考えています。これを行うには、API を直接使用する方法 (SO に関するいくつかの質問に基づくと結果が悪いようです) や、特定の時間が経過した後に GPS 修正が削除されたと推測する方法など、いくつかの方法があるようです (どうすればよいですか? GPS受信機の現在の状態を確認しますか? )
Android では、NMEA 文字列を直接取得することもできるようです: http://developer.android.com/reference/android/location/GpsStatus.NmeaListener.html
NMEA トークン ($GPGGA) の 1 つは、修正品質情報を提供します。
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 デバイスで使用されているかどうかはわかりません。