【问题标题】:How does GeoCoordinateWatcher choose its source?GeoCoordinateWatcher 如何选择其来源?
【发布时间】:2016-02-16 18:12:43
【问题描述】:

我知道在 GeoCoordinateWatcher 对象的构造函数中可以指定精度(默认或高),但对于我的大学项目,我需要了解更多。

我的教授要求我搜索并指定 GeoCoordinateWatcher 使用的算法或启发式方法来选择他的来源。

我已经知道 MSDN 文章说

虽然定位服务使用多个位置信息来源,并且任何来源可能在任何给定时间都不可用(例如,可能无法访问 GPS 卫星或手机信号塔),但本机代码层会处理这项工作评估可用数据并选择最佳来源。您的应用程序需要做的就是在高精度或默认的功率优化设置之间进行选择。您可以在初始化主要位置服务类 GeoCoordinateWatcher 时设置此值。

但我需要更准确地了解本机代码层如何处理源代码的评估。

任何人都可以帮助我或指出一些更详细的文章?

【问题讨论】:

  • 这不是堆栈溢出问题。这是程序员的问题programmers.stackexchange.com
  • @madhukumar 真的,你的答案正是我要找的那个……说真的……你读过这个问题了吗??

标签: windows-phone-7 windows-phone-8 gps windows-phone


【解决方案1】:

如果您查看 System.Device 程序集的源代码(通过使用像 dotPeek 这样的反编译器),您可以了解它是如何工作的。

事实上,GeoCoordinateWatcher 只是一个小包装器,用于创建ILocation 类型的 COM 对象。此接口是 Microsoft 在 Windows 7 中引入的 Location API 的一部分。它本身也是从 Windows 7 开始的 Sensor API 的一部分。

如果您仔细阅读此文档,您会发现introduction article,它描述了此 API 的工作原理。简介中的一句话是:

传感器制造商可以创建设备驱动程序来连接传感器 Windows 7. 传感器设备驱动程序使用 Windows 实现 便携式设备 (WPD) 驱动程序模型,基于 Windows 用户模式驱动程序框架 (UMDF)。许多设备驱动程序已经 使用这些框架编写的。

因此,GPS 设备制造商将提供将安装在系统上的 Windows 驱动程序。此驱动程序将向系统宣布自己为定位设备。

当您创建 GeoCoordinateWatcher 时,它会通过位置 api 询问所需的数据。操作系统检查哪些驱动程序已宣布自己有能力并启动这些驱动程序。然后,这些驱动程序将打开与设备的连接,读取数据并将其转发给所需的消费者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    相关资源
    最近更新 更多