2013-11-21 53 views
2

我知道在GeoCoordinateWatcher對象的構造函數中可以指定精度(默認或高),但對於我的大學項目,我需要了解更多信息。GeoCoordinateWatcher如何選擇其來源?

我的教授讓我搜索並指定GeoCoordinateWatcher用來選擇他的來源的算法或啓發式。

我已經意識到了MSDN文章它說

雖然位置服務使用多個場所信息來源,並且在任何時候任何的來源可能不可用(例如,沒有GPS衛星或手機塔可能是可訪問的),本地代碼層處理評估可用數據和選擇最佳源的工作。您的應用程序需要做的是在高精度或默認的功耗優化設置中進行選擇。您可以在初始化主要位置服務類GeoCoordinateWatcher時設置此值。

但我需要更準確地知道本機代碼層如何處理源代碼的評估。

任何人都可以幫助我,或指點我一些更詳細的文章?

+1

這不是一個堆棧溢出問題。這是一個程序員問題http://programmers.stackexchange.com/ –

+0

@madhukumar真的,你的答案只是我正在尋找的......認真......你甚至讀過這個問題? – user2878912

回答

0

如果您查看System.Device程序集的源代碼(通過使用類似dotPeek的反編譯器),您可以看到它是如何工作的。

實際上,GeoCoordinateWatcher只是一個創建類型爲ILocation的COM對象的小包裝器。此接口是Location API的一部分,微軟在Windows 7中引入這本身就是Sensor API的一部分,也開始了與Windows 7

如果你挖通這documenation一點點,你會發現這introduction article,它描述了這個API的工作原理。這個介紹中一句話是:

傳感器製造商可以創建設備驅動程序傳感器, Windows 7中的傳感器設備驅動程序連接通過使用基於Windows的 便攜設備(WPD)驅動模式,實現Windows 用戶模式驅動程序框架(UMDF)。使用這些框架編寫了許多設備驅動程序 。

因此,GPS設備的製造商將提供將安裝在系統上的Windows驅動程序。該驅動程序會將其自身公佈爲系統的定位設備。

當您創建GeoCoordinateWatcher時,它通過位置api詢問所需數據。操作系統會檢查哪些驅動程序已宣佈自己有能力並啓動這些驅動程序。這些驅動程序將打開與設備的連接,讀取數據並將其轉發給所需的用戶。