2013-03-05 18 views
1

我正試圖在BackgroundWorker中獲取GPS位置。我讀到,數據是從緩存中獲取的,這些緩存每15分鐘更新一次。是否有可能重新計劃緩存的更新間隔? 現在我正在使用模擬器,並且我始終在事件StatusChanged中獲取NoData。更改緩存中的更新間隔以更新GPS - Windows Phone 7.5

好的,你能解釋一下我的模擬器嗎? 這裏是我的代碼:

private GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High); 

    private void StartGeoWatcher() 
    { 
     watcher.StatusChanged += GeoWatcherStatusChanged; 
     watcher.PositionChanged += GeoWatcherPositionChanged; 
     watcher.Start(); 
    } 

    void GeoWatcherPositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) 
    { 

    } 

    void GeoWatcherStatusChanged(object sender, GeoPositionStatusChangedEventArgs e) 
    { 
     switch (e.Status) 
     { 
       case GeoPositionStatus.Initializing: 
        break; 
       case GeoPositionStatus.Ready: 
        break; 
       case GeoPositionStatus.NoData: 
        break; 
       case GeoPositionStatus.Disabled: 
        break; 
     } 

    } 

我在我的應用程序啓動模擬器。之後,我選擇其他工具中的某個位置。當選擇位置時,點擊應用程序中的按鈕,週期性任務將運行。 首先:StatusChanged被稱爲狀態「初始化」。第二:StatusChanged被稱爲狀態「NoData」。我不知道爲什麼,因爲我在其他工具中選擇了位置。

+0

答案是 - 不,它不是。 – MarcinJuraszek 2013-03-05 19:43:15

+0

所以我認爲,我找到了解決方案。首先,我必須在mainapplication中創建GeoCoordinateWatcher並調用Start()。它獲得了位置。之後,我可以在BackgroundAgent中使用GeoCoordinateWatcher,而無需獲取NoData。 – JuP 2013-03-05 21:55:34

+0

等等,你忘了給你的守望者打電話Start()了? – 2013-03-06 06:53:24

回答

0

這不是事實,您可以通過指定GeoPositionAccuracy.High獲取實時GPS位置,以獲取GeoCoordinateWatcher.DesiredAccuracy屬性。但是這會耗盡你的電池。

即使在正常設置下,您也應該能夠獲得幾乎實時的位置。

+0

問題是關於來自BackgroundWorker的GPS ... – MarcinJuraszek 2013-03-05 19:40:53

+0

BW和UI線程訪問GPS數據有什麼區別? – 2013-03-05 19:41:42

+0

是的,但從BackgroundWorker我不能 – JuP 2013-03-05 19:42:26