欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Windows 8 地理位置定位以及定位器狀態(tài)監(jiān)測(cè)

  發(fā)布時(shí)間:2013-01-08 16:59:18   作者:佚名   我要評(píng)論
在Windows8中,定位器不一定隨時(shí)可用,所以我們?cè)谑褂枚ㄎ黄鲿r(shí)最好先檢查一下定位器的狀態(tài),接下來(lái)介紹狀態(tài)如何從Geolocator中的屬性LocationStatus獲得
在Windows8中,定位器不一定隨時(shí)可用,所以我們?cè)谑褂枚ㄎ黄鲿r(shí)最好先檢查一下定位器的狀態(tài)。
狀態(tài)可以從Geolocator中的屬性LocationStatus獲得。

定位器狀態(tài)是枚舉類型PositionStatus,共有6種狀態(tài):Ready、Initializing、NoData、Disabled、NotInitialized、NotAvailable。
另外,有時(shí)還需要不斷檢測(cè)定位器的狀態(tài),當(dāng)定位器不可用時(shí)給用戶友好的提示,或做出其它的動(dòng)作。Geolocator中有一個(gè)事件StatusChanged專門用來(lái)監(jiān)測(cè)定位器狀態(tài)的改變。
下面來(lái)看代碼,總共只有一張頁(yè)面。
前臺(tái)XAML代碼如下

復(fù)制代碼
代碼如下:

<Page
x:Class="Win8Location.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Win8Location"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<StackPanel Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Button x:Name="btnCheckStatusChanged" Content="監(jiān)測(cè)定位器狀態(tài)" Click="btnCheckStatusChanged_Click"/>
<ScrollViewer>
<TextBlock x:Name="txtMsg" TextWrapping="Wrap" FontSize="20"/>
</ScrollViewer>
</StackPanel>
</Page>

后臺(tái)cs代碼如下

復(fù)制代碼
代碼如下:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.Devices.Geolocation;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Core;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
namespace Win8Location
{
public sealed partial class MainPage : Page
{
Geolocator geo = null;
public MainPage()
{
this.InitializeComponent();
}
private void btnCheckStatusChanged_Click(object sender, RoutedEventArgs e)
{
btnCheckStatusChanged.IsEnabled = false;
if (geo == null)
{
geo = new Geolocator();
}
txtMsg.Text = DateTime.Now.ToString() + ">定位器啟動(dòng),狀態(tài)為:" + geo.LocationStatus + "\n狀態(tài)描述:" + GetDescription(geo.LocationStatus);
geo.StatusChanged += geo_StatusChanged;
}
async void geo_StatusChanged(Geolocator sender, StatusChangedEventArgs args)
{
PositionStatus statu = args.Status;
string msg = "\n\n" + DateTime.Now.ToString() + ">定位器狀態(tài)改變?yōu)椋? + statu.ToString();
msg += "\n狀態(tài)描述:" + GetDescription(statu);
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
txtMsg.Text += msg;
});
}
string GetDescription(PositionStatus statu)
{
string description = null;
switch (statu)
{
case PositionStatus.Ready:
description = "提供位置數(shù)據(jù)。";
break;
case PositionStatus.Initializing:
description = "位置提供程序正在初始化。如果 GPS 是位置數(shù)據(jù)源,并且視圖中的 GPS 接收器沒(méi)有所需的附屬數(shù)目來(lái)獲取準(zhǔn)確的位置,則此為該狀態(tài)。";
break;
case PositionStatus.NoData:
description = "沒(méi)有來(lái)自任何位置提供程序的可用位置數(shù)據(jù)。在可從位置傳感器獲取數(shù)據(jù)之前,LocationStatus 將在應(yīng)用程序調(diào)用 GetGeopositionAsync或注冊(cè) PositionChanged 事件的事件處理程序時(shí)具有此值。數(shù)據(jù)可用后,LocationStatus 轉(zhuǎn)換為 Ready 狀態(tài)。";
break;
case PositionStatus.Disabled:
description = "位置提供程序已禁用。此狀態(tài)指示尚未被授予該用戶訪問(wèn)位置的應(yīng)用程序權(quán)限。";
break;
case PositionStatus.NotInitialized:
description = "檢索位置的操作尚未初始化。如果應(yīng)用程序尚未調(diào)用 GetGeopositionAsync,或?yàn)?PositionChanged 事件注冊(cè)事件處理程序,則LocationStatus 可能具有此值。";
break;
case PositionStatus.NotAvailable:
description = "Windows 傳感器和位置平臺(tái)在此版本的 Windows 中不可用。";
break;
default:
description = "您的定位器太先進(jìn)了,目前的技術(shù)無(wú)法得知其狀態(tài):)";
break;
}
return description;
}
}
}

運(yùn)行截圖如下:

相關(guān)文章

最新評(píng)論