好库网 好库网首页 | 我的好库
安卓专栏

Android模拟GPS数据生成kml和nmea文件

发布者:android
发布日期:2011/3/31 16:52:48   更新日期:2011/3/31 16:53:16
阅读次数:7125
评分:4.80
介绍:在Android平台上开发可能没有真机的时候,我们通过DDMS中载入KML或NMEA文件来模拟生产数据。
正文:

作者:Android开发网

在Android平台上开发作者:可能没有真机的时候,我们通过DDMS中载入KML或NMEA文件来模拟生产数据,
就在公开版SDK 0.9r1公开时,使用Eclipse环境开发的网友需要升级下ADT插件,可以看到全新ADT 0.7.1比上一版本0.4增加了不少功能,比如说在Emulator Control中加入了Location Controls,为了让Android模拟器支持GPS调试,我们可以看到三个标签,第一个为Manual手动设置,里面有经度Longitude和维度Latitude,第二个是GPX文件,通过加载GPX文件,Android的DDMS可以自动读取GPX预先的坐标,而最后一个KML和GPX差不多,仅仅是协议不同,后面两种方法为变动数据GPS数据模拟提供了支持,要知道目前都是NMEA-0183,我们直接解析就可以了。
最终这两个文件加载到/data/misc/location/gps/nmea或/data/misc/location/gps/kml/
一、KML文件其实是一个XML文件,我们看下KML文件结构

 

在Android平台上开发可能没有真机的时候,我们通过DDMS中载入KML或NMEA文件来模拟生产数据,

就在公开版SDK 0.9r1公开时,使用Eclipse环境开发的网友需要升级下ADT插件,可以看到全新ADT 0.7.1比上一版本0.4增加了不少功能,比如说在Emulator Control中加入了Location Controls,为了让Android模拟器支持GPS调试,我们可以看到三个标签,第一个为Manual手动设置,里面有经度Longitude和维度Latitude,第二个是GPX文件,通过加载GPX文件,Android的DDMS可以自动读取GPX预先的坐标,而最后一个KML和GPX差不多,仅仅是协议不同,后面两种方法为变动数据GPS数据模拟提供了支持,要知道目前都是NMEA-0183,我们直接解析就可以了。

最终这两个文件加载到/data/misc/location/gps/nmea或/data/misc/location/gps/kml/

 

一、KML文件其实是一个XML文件,我们看下KML文件结构

 

<?xml version="1.0" encoding="UTF-8"?> 
<kml xmlns="http://earth.google.com/kml/2.2"> 
<Document> 
<name>1065 Brea Mall, Brea, CA 92821.kml</name> 
<StyleMap id="default_copy0+nicon=http://maps.google.com/mapfiles/kml/pal3/icon60.png+hicon=http://maps.google.com/mapfiles/kml/pal3/icon52.png">
<Pair> 
<key>normal</key> 
<styleUrl>#default_copy0+icon=http://maps.google.com/mapfiles/kml/pal3/icon60.png</styleUrl> 
</Pair> 
<Pair> 
<key>highlight</key> 
<styleUrl>#default_copy0+icon=http://maps.google.com/mapfiles/kml/pal3/icon52.png</styleUrl> 
</Pair> 
</StyleMap> 
<Style id="default_copy0+icon=http://maps.google.com/mapfiles/kml/pal3/icon52.png"> 
<IconStyle> 
<scale>1.1</scale> 
<Icon> 
<href>http://maps.google.com/mapfiles/kml/pal3/icon52.png</href> 
</Icon> 
</IconStyle> 
<LabelStyle> 
<scale>1.1</scale> 
</LabelStyle> 
</Style> 
<Style id="default_copy0+icon=http://maps.google.com/mapfiles/kml/pal3/icon60.png"> 
<IconStyle> 
<Icon> 
<href>http://maps.google.com/mapfiles/kml/pal3/icon60.png</href> 
</Icon> 
</IconStyle> 
</Style> 
<Placemark> 
<name>1065 Brea Mall, Brea, CA 92821</name> 
<address>1065 Brea Mall, Brea, CA 92821</address> 
<LookAt> 
<longitude>-117.883593</longitude> 
<latitude>33.916991</latitude> 
<altitude>0</altitude> 
<range>1000</range> 
<tilt>0</tilt> 
<heading>0</heading> 
</LookAt> 
<styleUrl>#default_copy0+nicon=http://maps.google.com/mapfiles/kml/pal3/icon60.png+hicon=http://maps.google.com/mapfiles/kml/pal3/icon52.png</styleUrl>
<Point> 
<coordinates>-117.883593,33.916991,0</coordinates> 
</Point> 
</Placemark> 
</Document> 
</kml>
二、NMEA协议就是常规的GPS数据,通过串口直接获取到的,如下
$GPRMC,003347.000,A,3725.3433,N,12205.7920,W,0.08,149.46,061007,,,D*70 
$GPRMC,003348.000,A,3725.3433,N,12205.7921,W,0.05,142.51,061007,,,D*7E 
$GPRMC,003349.000,A,3725.3432,N,12205.7921,W,0.08,159.56,061007,,,D*7E 
$GPRMC,003350.000,A,3725.3432,N,12205.7921,W,0.06,151.59,061007,,,D*7F 
$GPRMC,003351.000,A,3725.3432,N,12205.7921,W,0.20,120.57,061007,,,D*72
实例:
解析方法:
RMC = Recommended Minimum Specific GPS/TRANSIT Data 
$GPRMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,ddmmyy,x.x,a*hh 
1 = UTC(universal time, coordinated) of position fix 
2 = Data status (A=good, V=navigation receiver warning) 
3 = Current Latitude 
4 = North/South in Latitude Hemisphere 
5 = Current Longitude 
6 = East/West in Longitude Hemisphere 
7 = Speed over ground in knots 
8 = (Direction of travel N:0°, E:90°, S:180°, W:270°) 
9 = UT DateStamp 
10 = Magnetic variation degrees (Easterly var. subtracts from true course) 
11 = East/West 
12 = Checksum
$GPRMC,003347.000,A,3725.3433,N,12205.7920,W,0.08,149.46,061007,,,D*70 
Parts: 
1:   003347.000  -->   0:33 am 47 seconds 0 milliseconds (UTC(universal time, coordinated) of position fix) 
2:   A           -->   Status is ok   (Data status (A=good, V=navigation receiver warning)) 
3:   3725.3433         (North/South in Latitude Hemisphere) 
4:   N           -->   North   (North/South) 
5:   12205.7920        (Current Longitude) 
6:   W           -->   West   (East/West in Longitude Hemisphere) 
7:   0.08        -->   0.08 knots/second (Direction: North/West)   (Speed over ground in knots) 
8:   149.46      -->   sth. like SouthEast (Direction of travel  N:0°, E:90°, S:180°, W:270°) 
9:   061007      -->   6th October, 2007  (UT(universal time) DateStamp) 
10:  <empty>           (Magnetic variation degrees (Easterly var. subtracts from true course)) 
11:  <empty>           (East/West) 
12:  D*70              (Checksum)

 

 

 


评论 [发表评论]
账号 密码 还没帐号呢,现在注册一个?

免责声明:好库网所展示的信息由买卖双方自行提供,其真实性、准确性和合法性由信息发布人负责。好库网不提供任何保证,并不承担任何法律责任。