2016-03-04 26 views
3

我在Windows 8.1應用程序中工作,我正在使用下面提到的代碼找到用戶的當前位置。現在,當我使用Cellular網絡在平板電腦上運行我的應用程序時,該應用程序崩潰,但它在Wifi上正常工作。有人可以爲此提出解決方案嗎?在Windows應用商店應用(Windows 8.1)中使用GeoLocator時出現「管道正在關閉」錯誤?

  geolocator = new Geolocator(); 
      geolocator.DesiredAccuracy = PositionAccuracy.Default; 
      geolocator.DesiredAccuracyInMeters = 1000; 
      geolocator.MovementThreshold = 5; 
      geolocator.ReportInterval = 500; 
      try 
      { 
       Geoposition mygeoPosition = await geolocator.GetGeopositionAsync(); 
      } 
      catch(UnauthorizedAccessException ex) 
      { 
       UserMessageUtil.ShowMessage("Location is disabled in Settings"); 
       await Launcher.LaunchUriAsync(new Uri("ms-settings-location:")); 
      } 
      geolocator.PositionChanged += geolocator_PositionChanged; 

我總是檢查在筆記本整機所以我沒有在過去面對這個問題,但現在我有一個平板電腦3G和WiFi連接,當我運行在平板電腦上的應用程序,並嘗試獲取當前位置,錯誤來了。

更新

我有時也得到組或資源不在正確的狀態來執行請求的操作。 (從HRESULT異常:0x8007139F)誤差線

Geoposition mygeoPosition = await geolocator.GetGeopositionAsync(); 

我得到這兩個錯誤,當我連接的蜂窩網絡

回答

1

通過使用更大的閾值的運動剛開始時。大多數GPS設備只有15米的精度。將移動閾值設置爲5可能太小並導致問題。

也期待在使用位置精度統計員之一:

geolocator.DesiredAccuracy = Windows.Devices.Geolocation.PositionAccuracy.high;

+0

@rbrunditt我試着添加兩個參數,但仍然給我錯誤。是否有可能因爲我使用免費Bing Map鍵而導致問題? –

+0

這與Bing地圖無關。 Geolocation API是與Bing地圖無關的核心Windows Phone庫。 – rbrundritt

1

這些都是非常低級別的Windows錯誤代碼。無論哪種失敗都遠遠超出您的代碼,大致是設備驅動程序級別。或者它是由中間軟件層重複使用的錯誤代碼,這是WinRT中非常常見的犯罪。你必須記住,在聯網中很多很多事情都會出錯,而且你並不總是得到一個奇妙的診斷。好吧,幾乎從不。

「管道正在關閉」是ERROR_NO_DATA。該錯誤標識符很可能比消息更具代表性。

「組或資源不在正確的狀態」爲ERROR_INVALID_STATE。這個標識再一次比信息更明智。

我的電話:您的蜂窩網絡連接只是片狀。要麼是因爲收音機不穩定,要麼是因爲它們之間存在糟糕的反惡意軟件。你可以很容易地消除後者。但前者總是會發生在某人的機器上。因此,請編寫代碼以適應那些網絡故障,而不是只是捕獲UnauthorizedAccessException。爲Exception編寫另一個catch並顯示「我們很抱歉,服務暫時不可用」樣式消息。也許你可以通過記住以前的位置來創建它,只要用戶知道。

+0

感謝漢斯。如果設備沒有GPS傳感器或GPS傳感器被禁用,是否有可能發生這種錯誤? –

+0

是的,很可能。如果它有一個可用的GPS傳感器,那麼它不需要任何幫助。 –

相關問題