为Windows Mobile设备创建位置感知的应用程序
2011-01-06 10:59:01 来源:WEB开发网尽管大部分移动运营商都允许你的应用程序访问蜂窝基站信息,但还是有个别运营商不允许你的应用程序访问任何蜂窝基站信息。最终,所有的移动运营商可能都会使这些基站信息可用,因为开发者和用户可以从位置感知获得很大的益处,并且可以使用运营商的网络来获取位置感知的信息,如好友位置,搜索附近感兴趣的地方,等等。
使用类工厂取回当前位置
为了使位置获取功能对应用程序透明,你可以创建一个接口,在这个接口中定义几个取回位置的方法,和一个可被应用程序注册以获得位置更改通知的事件。
下面的代码示范了在不依赖于所使用的位置提供者是GPS检索还是蜂窝基站检索的情况下获取位置信息的方法。
public class LocationEventArgs : EventArgs
{
public LocationEventArgs(LatLong l)
{
Location = l;
}
public LatLong Location { get; set; }
}
public delegate void LocationChangedEvent(ILocationProvider sender,
LocationEventArgs e);
public interface ILocationProvider : IDisposable
{
LatLong CurrentLocation { get; }
void EnableLocationProvider(bool enable);
void LiveUpdates(int interval);
void StopUpdates();
event EventHandler LocationChanged;
}
如果每个位置提供者都实现了这个接口的话,应用程序就可以通过ILocationProvider获取位置信息,而不需要关心在设备上取得位置信息的物理途径。在本文的可下载代码中,两个位置提供者都已经实现了,一个通过蜂窝基站检索获取位置信息,一个通过 GPS检索获取。在应用程序中,可以有两种方法获取位置信息。在本文提供的示例应用程序中,用户既可以选择蜂窝基站检索也可以选择GPS检索。当然这也是可以自动化的,让应用程序在启动后先读取蜂窝基站信息,直到GPS可用。
下面的截屏展示了示例应用程序通过不同的方法获取位置信息。
更多精彩
赞助商链接