回答
您可以使用下面的代碼來確定位置服務的狀態:
var watcher = new GeoCoordinateWatcher();
if (GeoPositionStatus.Disabled == watcher.Status)
{
// Watcher is disabled.
}
更爲現實的,你要多注意改變的狀態(只是因爲服務不禁用並不意味着你有位置數據),所以你應該看看MSDN Documentation與位置服務工作。
還有一個很好的帖子filtering and emulating location data using the Reactive extensions,這是完美的預裝置測試,但爲了節省你的時間在Widnows Phone團隊發佈了Windows Phone GPS Emulator。
即使已啓動GeoCoordinateWatcher
,如果傳感器被禁用,您將獲得NoData
。你應該嘗試使用的卻是TryStart:
GeoCoordinateWatcher g = new GeoCoordinateWatcher();
MessageBox.Show(g.TryStart(false,TimeSpan.FromSeconds(30)).ToString());
如果返回False
,這意味着該傳感器被禁用。如果它返回True
,則它被啓用。設置一個合適的超時時間(在上面的代碼片段中,我使用了30秒)並將此進程委派給輔助線程,以便它不會掛起UI。
有趣的事實:在我的應用程序使用TryStart與位置禁用導致應用程序崩潰,所以是... – Esa 2012-10-15 11:33:42
您可以將StatusChanged事件添加到GeoCoordinateWatcher,並在觸發時在權限中測試GeoPositionPermission.Denied。
watcher = new GeoCoordinateWatcher();
watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(watcher_StatusChanged);
watcher.Start();
void watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
{
if (watcher.Permission == GeoPositionPermission.Denied)
{
// Location services were disabled
}
}
希望有所幫助。
GeoCoordinateWatcher g = new GeoCoordinateWatcher();
g.Start();
if (g.Permission.Equals(GeoPositionPermission.Granted))
{
//Your location services is enabled. Go ahead.
//Your codes goes here.
}
else if (g.Permission.Equals(GeoPositionPermission.Denied) || g.Permission.Equals(GeoPositionPermission.Unknown))
{
MessageBox.Show("Location services are disabled. To enable them, Goto Settings - Location - Enable Location Services.", "Location services", MessageBoxButton.OK);
}
public override void OnNavigatedTo()
{
using (var watcher = new GeoCoordinateWatcher())
{
try
{
watcher.Start();
}
finally
{
IsAllowedInSystem = watcher.Permission.Equals(GeoPositionPermission.Granted);
watcher.Stop();
}
}
}
而且我的應用ToggleSwitch.IsEnabled
被綁定到IsAllowedInSystem
。 當我切換到位置服務,禁用它並返回到應用程序,我的ToggleSwitch
被禁用(也是一個字符串「請啓用位置服務在系統設置」在可見)。當我切換到位置服務,啓用它並返回到我的應用程序,我的ToggleSwitch
已啓用,用戶可以進行設置。
- 1. 如何檢查服務器是否處於活動狀態?(c#)
- 2. iPhone:是否可以查詢相機是否處於活動狀態?
- 3. 檢查位置服務處於活動狀態
- 4. 檢查窗口是否從服務工作者處於活動狀態
- 5. 檢查它是否處於活動狀態
- 6. 如何檢查變送器是否處於活動狀態?
- 7. 如何通過PHP檢查JavaScript是否處於活動狀態?
- 8. 如何檢查CMS塊是否處於活動狀態?
- 9. 檢查表單在vb.net中是否處於活動狀態
- 10. 如何檢查AmazonS3Client連接是否處於活動狀態
- 11. PDO:如何檢查連接是否處於活動狀態?
- 12. Salesforce:檢查ApexTrigger是否在測試中處於活動狀態
- 13. 檢查代理是否處於活動狀態
- 14. 是否有Google DFP API檢查廣告單元是否處於活動狀態?
- 15. 檢查Excel是否處於髒狀態
- 16. C++ 11可以判斷std :: thread是否處於活動狀態?
- 17. Android位置服務 - 檢查位置是否已激活
- 18. 在窗體中輸入時是否可以檢查大寫鎖定按鈕是否處於活動狀態?
- 19. 如何檢查手機是否處於閒置狀態或手機是否處於閒置狀態?
- 20. 如何檢測QDialog.exec()是否處於活動狀態
- 21. android檢測對話框是否處於活動狀態?
- 22. 如何檢測Dispatcher.DisableProcessing是否處於活動狀態?
- 23. 服務是否可以包含活動?
- 24. Facebook API - 檢測會話是否處於活動狀態或未處於活動狀態
- 25. 如何根據HttpStatus代碼找出服務器是否處於活動狀態?
- 26. 如何檢查瀏覽器窗口是否處於活動狀態?
- 27. 檢查Windows 7中的遠程桌面連接是否處於活動狀態
- 28. 如何檢查重複警報是否在android中處於活動狀態?
- 29. 如何反覆檢查音樂播放器是否處於活動狀態?
此代碼不起作用。始終顯示「無數據」! – user598328 2011-02-03 14:01:58
您可能首先需要在觀察者上實際調用`Start()`並觀察狀態變化(這就是爲什麼我給了您鏈接以供進一步閱讀的原因)。如果您正在模擬器上運行,您幾乎肯定會一直獲得`NoData`狀態,這是使用包裝位置服務的Windows Phone GPS模擬器的另一個重要原因。 – 2011-02-03 14:23:52