为Windows Mobile设备创建位置感知的应用程序
2011-01-06 10:59:01 来源:WEB开发网这个路径和Windows Mobile 5.0 SDK是不同的。
使用GPSID托管包
打开Windows Mobile 5.0 或Windows Mobile 6 SDK 中的GPS示例,你会看到一个包含完整源代码的项目。为了使用GPSID托管包,你必须首先编译这个示例项目。因为Windows Mobile SDKs实在Visual Studio 2008之前发布的,所以在用Visual Studio 2008编译示例项目之前必须先进行转化。Visual Studio 2008会处理项目的转换。在示例项目编译之后,你会看到一个可执行文件和一个类库。类库的名字为Microsoft.WindowsMobile.Samples.Location.dll 。它包含了这个GPSID托管包。为了使用这些托管包,你必须在你的项目中添加对这个类库的引用。
下面的示意图展示了GPSID托管包中的类。
如果你想在你的托管应用程序中使用GPSID,在添加了对GPSID托管包的引用之后,首先必须创建一个Gps类的示例。然后你需要在项目中调用Open以获取位置信息。你可以用同步或异步的方式来获取位置信息。在稍后的案例中,你将会在GPS接收器数据变化时获得持续更新的数据。你必须意识到GPS通信,作为一个附加通信,是很消耗电池的。因此,如果你不再需要在应用程序中获取位置信息时,请确保调用Gps对象的Close方法。忽略调用Close方法会使Gps通讯保持工作状态,即使你不在需要获取位置信息。
下面的屏幕展示了一个同步和异步获取GPS位置信息的示例应用程序。在调用同步方法GetPosition后,位置信息被取回,并且通过注册LocationChanged 事件而持续更新。
为了同步获取位置,如以下的示例代码展示的一样,你必须在调用Gps对象的Open方法之后调用另外一个一个方法。在这个代码示例中,一个Gps类的实例在MainForm的的构造方法中被创建,并立即调用了它的Open方法以启用GPS硬件。当用户选择了My Location菜单后menuLocation_Click事件处理程序中的代码就会执行。在这个事件处理程序中,你会看到程序通过GetPosition方法获取到了当前位置。直到GPSID返回从底层硬件获得的位置后,这个方法才会中断。在位置信息可用后,纬度、经度和头信息的读取就会生效并在一个Label空间中显示出来。简而言之,在读取生效前任何操作都是不可用的。GetPosition方法有两种可用的风格。以下第一个示例代码中用的方法是一直等待,直到GPS硬件返回新的读取信息;换句话说,就是在收到来自一个或多个卫星的位置信息之前,程序会一直等待。同时还有一个以时间戳对象为参数的重载方法可用。用这个方法,可以返回一个缓存的只要不比指定时间戳老的位置信息,从而更高效得获取位置。当你知道设备的位置从上次读取之后没有变化时,这个版本的GetPosition方法对初始化位置读取是很有用的。
更多精彩
赞助商链接