如何向GPS接收器发送命令?
我使用LocationManager获取位置详细信息,但无法找到如何将NMEA命令(如GPXTE,GPRMB ...)发送到GPS接收器。
请告诉我如何实现这一目标。
答案 0 :(得分:1)
您可以浏览Android文档部分Send Emulator Console Commands以详细了解这一点。
地理位置
通过向模拟器发送GPS修正,设置报告给模拟器内运行的应用程序的地理位置。
您可以在虚拟设备运行后立即发出geo命令。模拟器通过创建模拟位置提供程序来设置您输入的位置。此提供程序响应应用程序设置的位置侦听器,并将位置提供给LocationManager。任何应用都可以通过调用LocationManager.getLastKnownLocation("gps")
geo Command
格式为 geo<修复| nmea>
地理位置修复经度纬度卫星[海拔]
向模拟器发送简单的GPS修复程序。以十进制度指定经度和纬度。使用1到12之间的数字来指定用于确定位置的卫星数量,并以米为单位指定高度。
geo nmea句子
向模拟设备发送NMEA 0183句子,就好像它是从模拟GPS调制解调器发送的一样。用'$ GP'开始句子。目前仅支持'$ GPGGA'和'$ GPRCM'句子。以下示例是GPGGA(全球定位系统修复数据)句子,用于获取GPS接收器的时间,位置和修复数据:
geo nmea $GPGGA ,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx
例如:
geo fix 121.5 25.4 10
geo nmea $GPRMC,071236,A,3751.65,S,14527.36,E,000.0,073.0,130309,011.3,E*62
geo命令可以将GPS位置发送到模拟器。 geo fix发送一组由经度,纬度和高度表示的固定GPS位置,可以从某些网站上的地图获得,例如经度121.5,纬度25.4和高度10米。当Android设备通过USB连接到外部GPS设备时,您可以使用geo nmea命令将位置发送到外部GPS设备。
美国国家电气制造商协会(NEMA)为GPS设备开发了NMEA 0183协议。 gps nema命令的格式很复杂,由12个字段组成,但由于这种复杂性,该命令提供的定位比geo fix命令更准确。 gps nema命令的格式如下:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh
$GPRMC,hhmmss.ss,A,IIII.II,a,yyyyy.yy,a,x.x,x.x,ddmmyy,x.x,a*hh
$GPRMC (Recommended minimum specific GPS/Transit data)
参考