使用Location Service能帮助开发者为windows Phone 开发具备位置感知(Location-Aware)功能的应用程序。比如很多导航的软件,查找附近吃饭、娱乐甚至厕所的应用程序,都是基于这个服务的。

  我们有3种方法来获取设备的位置。GPS,移动网络基站位置和WiFi位置。下面的图是这三种方式的优缺点:

  需要注意的是:windows phone会根据应用程序的需要选择一种或者多种方式来确定手机的位置。

  三种方式确定位置的优点是有效的平衡电池的消耗与位置信息的准确性。

  windows phone 为应用程序提供基于事件(event-driven)的统一接口。

  使用地理位置服务的建议:

  • 想办法减低电池的消耗;

    a. 如果可以的话 使用那个较低准确率的数据源;

      b.  当需要的时候打开地理位置服务,一旦使用完毕立刻关闭该服务。

  • 设置准确率的门限值,减低更新频率;
  • 使用状态更新事件(StatusChanged)监控服务状态,提醒用户状态的更新;
  • 提醒用户初次启动地理位置服务时需要等待一段时间(15秒到120秒)。

  使用位置服务

  1. 创建一个GeoCoordinateWatcher对象。
  2. 创建一个事件处理程序处理用户位置的改变。
  3. 在事件触发时抓取数据。
    using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using Microsoft.Phone.Controls;using System.Device.Location;using Microsoft.Phone.Tasks;
    
    namespace Day13_LocationServices{publicpartialclass MainPage : PhoneApplicationPage    {        GeoCoordinateWatcher gcw;
    
    // Constructorpublic MainPage()        {            InitializeComponent();            gcw.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(gcw_PositionChanged);            gcw.Start();        }
    
    void gcw_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)        {            Latitude.Text = e.Position.Location.Latitude.ToString();            Longitude.Text = e.Position.Location.Longitude.ToString();        }    }}

  反应性扩展框架(Reactive Extensions)

  • Reactive Extensions能够帮助应用程序把多种可监控的外部事件转换成异步消息;
  • 外部事件包括数据流(data streams),异步请求(asynchronous requests)和事件(event)等;
  • 使用Reactive Extensions,当外部时间触发的时候,应用程序得到异步的更新消息(asynchronous requests);
  • Reactive Extensions允许应用程序使用查询(query)操作来对时间进行过滤。
如何使用Reactive Extensions可以参考msdn的这篇文章:http://msdn.microsoft.com/en-us/library/ff637517(VS.92).aspx
参考资料:How to: Get Data from the Location Service for Windows Phone
http://msdn.microsoft.com/en-us/library/ff431782(v=vs.92).aspx
How to: Use Reactive Extensions to Emulate and Filter Location Data for Windows Phone
http://msdn.microsoft.com/en-us/library/ff637517(VS.92).aspx

       Windows Phone 7 开发 31 日谈——第13日:位置服务

       http://www.cnblogs.com/porscheyin/archive/2010/12/23/1914300.html

转载于:https://www.cnblogs.com/zhangkai2237/archive/2012/02/20/2360619.html

windows phone7 学习笔记14——地理位置服务与反应性扩展框架相关推荐

  1. windows phone7 学习笔记15——Bing Maps

    Bing Maps 是windows phone的地图控件,它和silverlight的Bing Maps控件的区别是支持触摸事件,并且有缓存地图的功能.能干什么我就不说了,下面介绍怎么使用. 1.获 ...

  2. windows phone7 学习笔记06——数据绑定

    这部分我还弄的不是很清楚,先放三篇参考文章放这里,回头弄清楚了再写上. http://www.cnblogs.com/TerryBlog/archive/2010/12/21/1913243.html ...

  3. Linux学习笔记14

    Linux学习笔记14 Linux学习笔记14 DNS服务搭建 基本介绍 使用bind搭建dns服务 增加一个域名zone 配置DNS转发 配置主从 测试主从同步 后续课程 DNS服务搭建 基本介绍 ...

  4. Windows异常学习笔记(四)—— 编译器扩展SEH

    Windows异常学习笔记(四)-- 编译器扩展SEH 要点回顾 编译器支持的SEH 过滤表达式 实验一:理解_try_except 实验二:_try_except 嵌套 拓展SEH结构体 scope ...

  5. Windows系统调用学习笔记(四)—— 系统服务表SSDT

    Windows系统调用学习笔记(四)-- 系统服务表&SSDT 要点回顾 系统服务表 实验:分析 KiSystemService 与 KiFastCallEntry 共同代码 SSDT 实验: ...

  6. 【转】 C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计

    [转] C#学习笔记14--Trace.Debug和TraceSource的使用以及日志设计 Trace.Debug和TraceSource的使用以及日志设计   .NET Framework 命名空 ...

  7. 华为HCIA-datacom 学习笔记14——WLAN概述

    华为HCIA-datacom 学习笔记14--WLAN概述 1.WLAN(无线局域网) 通过无线技术构造的无线局域网络.WLAN广义上是指以无线电波.激光.红外线等无线信号代替有线局域网中的部分或全部 ...

  8. Windows异常学习笔记(五)—— 未处理异常

    Windows异常学习笔记(五)-- 未处理异常 要点回顾 最后一道防线 实验一:理解最后一道防线 实验二:新线程的最后一道防线 总结 UnhandledExceptionFilter 实验三:理解U ...

  9. Windows异常学习笔记(二)—— 内核异常处理流程用户异常的分发

    Windows异常学习笔记(二)-- 内核异常处理流程&用户异常分发 用户层与内核层异常 内核异常 分析 KiDispatchException 分析 RtlDispatchException ...

最新文章

  1. springboot集成swagger2测试接口
  2. python怎么画简单图片-小白艰难的Python图像的绘制
  3. 自学python需要多长时间-零基础自学python要多久?
  4. 单页面 Web 应用(Single Page Application,SPA)的工作原理介绍
  5. why CRMFSH01 failed to return any value for my case
  6. 【半译】扩展shutdown超时设置以保证IHostedService正常关闭
  7. echart的进阶使用(option)
  8. linux+date+命令+作业,Linux date命令
  9. 开源的仓库管理软件——Sonatype Nexus
  10. java servlet大学生旅游网站的设计与开发源码
  11. java 毕向东 内部类_内部类--毕向东Java基础教程学习笔记
  12. 各类邮箱POP3和SMTP服务器地址和端口
  13. 内窥镜去反光的论文整理(转)
  14. PHP 7从零基础到项目实战,PHP 7从零基础到项目实战
  15. 计算机应用后期影音制作,影音制作工具(ImTOO Movie Maker)
  16. Hadoop集群性能优化一
  17. 索尼手机android怎么连,索尼SmartWatch 2 SW2 连接手机图文教程
  18. 三、使用Arduino控制WS2812B灯
  19. 量子计算机可以发明时光机,俄科学家发明全球第一台时光机,可让微小粒子向过去移动1秒钟...
  20. git - 提交空目录

热门文章

  1. 数据结构之单链表(头结点)的一些常用操作(增删改查逆)
  2. 一个从文本文件里“查找并替换”的功能
  3. AutoHomeRefreshListView仿汽车之家下拉刷新 《IT蓝豹》
  4. PXE装机+kickstart无人值守安装
  5. Windows 7操作系统使用移动硬盘快速安装
  6. REMarkerClusterer
  7. Linux 系统如何调整时区和时间
  8. ASP.NET AJAX入门系列(10):Timer控件简单使用
  9. java继承中的方法覆盖问题
  10. ubuntu java classpath 设置_在Ubuntu中正确设置java classpath和java_home