手机
当前位置:查字典教程网 >操作系统 >Windows系列 >Windows 8 地理位置定位以及定位器状态监测
Windows 8 地理位置定位以及定位器状态监测
摘要:在Windows8中,定位器不一定随时可用,所以我们在使用定位器时最好先检查一下定位器的状态。状态可以从Geolocator中的属性Loca...

在Windows8中,定位器不一定随时可用,所以我们在使用定位器时最好先检查一下定位器的状态。

状态可以从Geolocator中的属性LocationStatus获得。

定位器状态是枚举类型PositionStatus,共有6种状态:Ready、Initializing、NoData、Disabled、NotInitialized、NotAvailable。

另外,有时还需要不断检测定位器的状态,当定位器不可用时给用户友好的提示,或做出其它的动作。Geolocator中有一个事件StatusChanged专门用来监测定位器状态的改变。

下面来看代码,总共只有一张页面。

前台XAML代码如下:

<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="监测定位器状态" Click="btnCheckStatusChanged_Click"/>

<ScrollViewer>

<TextBlock x:Name="txtMsg" TextWrapping="Wrap" FontSize="20"/>

</ScrollViewer>

</StackPanel>

</Page>

后台cs代码如下:

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() + ">定位器启动,状态为:" + geo.LocationStatus + "n状态描述:" + GetDescription(geo.LocationStatus);

geo.StatusChanged += geo_StatusChanged;

}

async void geo_StatusChanged(Geolocator sender, StatusChangedEventArgs args)

{

PositionStatus statu = args.Status;

string msg = "nn" + DateTime.Now.ToString() + ">定位器状态改变为:" + statu.ToString();

msg += "n状态描述:" + GetDescription(statu);

await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>

{

txtMsg.Text += msg;

});

}

string GetDescription(PositionStatus statu)

{

string description = null;

switch (statu)

{

case PositionStatus.Ready:

description = "提供位置数据。";

break;

case PositionStatus.Initializing:

description = "位置提供程序正在初始化。如果 GPS 是位置数据源,并且视图中的 GPS 接收器没有所需的附属数目来获取准确的位置,则此为该状态。";

break;

case PositionStatus.NoData:

description = "没有来自任何位置提供程序的可用位置数据。在可从位置传感器获取数据之前,LocationStatus 将在应用程序调用 GetGeopositionAsync或注册 PositionChanged 事件的事件处理程序时具有此值。数据可用后,LocationStatus 转换为 Ready 状态。";

break;

case PositionStatus.Disabled:

description = "位置提供程序已禁用。此状态指示尚未被授予该用户访问位置的应用程序权限。";

break;

case PositionStatus.NotInitialized:

description = "检索位置的操作尚未初始化。如果应用程序尚未调用 GetGeopositionAsync,或为 PositionChanged 事件注册事件处理程序,则LocationStatus 可能具有此值。";

break;

case PositionStatus.NotAvailable:

description = "Windows 传感器和位置平台在此版本的 Windows 中不可用。";

break;

default:

description = "您的定位器太先进了,目前的技术无法得知其状态:)";

break;

}

return description;

}

}

}

运行截图如下:

Windows 8 地理位置定位以及定位器状态监测1

【Windows 8 地理位置定位以及定位器状态监测】相关文章:

Win10 Mobile一周年更新预览版14393更新修复内容与已知问题汇总

如何彻底取消Win7自动升级Win10专业版?

Win10系统打不开软件提示"XXX.exe从服务器返回了一个参照"的三种解决方法

win7系统将电脑保护色设置为绿色的方法

Win10突然跳出提示网络发现已关闭问题的解决方法

win10系统取消代理服务器的方法

Win10一周年更新预览版商店中下载安装Edge浏览器的教程

利用Windows To Go实现随身定制化电脑

Win7玩英雄联盟提示error错误/画面只显示一半如何解决

腾讯游戏将导致Win10预览版14936蓝屏故障 升级需谨慎

精品推荐
分类导航