Windows phone 8 基于定位的后台应用

时间:2026-04-21 03:52

  后台应用算是 windows phone 8 所特有的一个新功能,说起后台我经常要和地图一起聊起 【关于地图的用法请参考:Windows Phone 8 Nokia地图控件 】今天我着重跟大家聊一下手机定位及基于定位的后台应用,说到定位相信大家已经不再陌生,下载各个平台的只能手机定位 GPS & AGPS 都是一个基本功能很多应用都会用到,但是后台定位应用可能有些同学不他理解,我举一个“栗子”说,好比我现在开车正在借助一款手机导航软件寻找某个餐馆,此时家里的那位老大已经到了目的地要检查一下我到哪了,于是电话响了。。。这时导航软件必然被切换到后台,相信用过手机导航的同学都有过这样的经历,如此场景其他平台也就罢了,在如今windows phone8 是应用支持后台的,那么这个后台能做什么呢?简单的说也就是在此场景下应用可以通过其他形式的提醒方式继续为用户提供导航,例如 ShellToast

  后台应用算是 windows phone 8 所特有的一个新功能,说起后台我经常要和地图一起聊起 【关于地图的用法请参考:Windows Phone 8 Nokia地图控件】今天我着重跟大家聊一下手机定位及基于定位的后台应用,说到定位相信大家已经不再陌生,下载各个平台的只能手机定位 GPS & AGPS 都是一个基本功能很多应用都会用到,但是后台定位应用可能有些同学不他理解,我举一个“栗子”说,好比我现在开车正在借助一款手机导航软件寻找某个餐馆,此时家里的那位老大已经到了目的地要检查一下我到哪了,于是电话响了。。。这时导航软件必然被切换到后台,相信用过手机导航的同学都有过这样的经历,如此场景其他平台也就罢了,在如今windows phone8 是应用支持后台的,那么这个后台能做什么呢?简单的说也就是在此场景下应用可以通过其他形式的提醒方式继续为用户提供导航,例如 ShellToast 当然后台能够使用的API是受限制 但是也足够用了 API的限制请相信参考MSDN:

  此文是升级到WP8必需知道的13个特性系列的一个更新 希望这个系列可以给 Windows Phone 8开发者带来一些开发上的便利。

  使用定位功能当然还是要在Manifest文件中声明 location 这里我用的是上一节的Demo 所以也选中了MAP如果你的应用没有使用地图控件可以不选MAP,

  这里介绍一下Geolocator这个对象使用它来对地理位置进行获取、初始精度、追踪状态等。

  注释中可以明确的看到返回的枚举值都代表着目前是什么样的一个状态,注意这里包括获取到用户在 系统设置中禁用了定位服务(之前有朋友问过我这个问题)

  PositionChange中的代码是上次讲地图的时候写的code添加了一个图层来标记当前位置,当然args.Position.Coordinate 中的属性就是我们想得到的经纬度信息了

  上面我只是实现了一个定位应用和WP7样的在后台不会继续工作,接下来我对这个项目稍作修改 让大家看看怎么做一个基于定位的后台应用。

  分别在声明周期的RunningInBackground和Activated事件中标记应用程序的后台运行情况,细心的同学可能已经发现我在前面声明 Geolocator 的时候已经是赋值给App.Geolocator 以确保在后台也可以持续访问该对象

  另外还要额外处理一下页面的OnRemovedFromJournal事件以确保再次访问此页面的时候讲从新创建新的实例:

  打开模拟器的 Additional tools中的location来模拟地理位置的变化,当然实现要把我们的程序切如后台。

  好了相信大家看过之后在 windows phone 8 中实现一个基于定位的后台应用已经有了一个了解,欢迎大家在这里和我沟通交流或者在新浪微博上@王博_Nick