我正在使用外部 GPS,因为它们要准确得多。我已经解决了蓝牙连接问题,但现在我陷入了 NMEA 格式消息的洪流中。
看起来,由于您可以从内置 GPS 堆栈中获取 NMEA,因此必须有一种方法可以在给定 NMEA 消息的情况下获取位置。
如何将我的 NMEA 消息转换为有用的 Location 对象?
NMEA 很容易解析。对于不同的事物,有不同类型的句子。对于位置数据,你需要关心的一句话是“推荐最小值”,$GPRMC
.
此处的示例:http: //aprs.gids.nl/nmea/#rmc
$GPRMC,225446,A,4916.45,N,12311.12,W,000.5,054.7,191194,020.3,E*68
225446
(修正时间 22:54:46 UTC)A
(导航接收器警告 A = OK,V = 警告)4916.45,N
(北纬 49 度 16.45 分)12311.12,W
(东经 123 度 11.12 分西)000.5
(对地速度,节)054.7
(课程做得很好,真实)191194
(修正日期 1994 年 11 月 19 日)020.3,E
(磁差 20.3 度东)*68
(强制校验和)您可能还对 有兴趣$GPGSA
,它的卫星数据很长,位置稀释(修复质量)。
如果没有可用于解析 NMEA 的内部类,您可以使用这些示例轻松地自己制作一个。不幸的是,我不是 Android 开发人员,所以我不知道您可以使用哪些内部类。