在Windows8中,定位器不一定随时可用,所以我们在使用定位器时最好先检查一下定位器的状态。 状态可以从Geolocator中的属性LocationStatus获得。定位器状态是枚举类型PositionStatus,共有6种状态:Ready、Initializing、NoData、Disabled、NotInitialized、NotAvailable。 另外,有时还需要不断检测定位器的状态,当定位器不可用时给用户友好的提示,或做出其它的动作。Geolocator中有一个事件StatusChanged专门用来监测定位器状态的改变。 下面来看代码,总共只有一张页面。 前台XAML代码如下: 复制代码代码如下: <Page x:Class="Win8Location.MainPage" xmlns=" xmlns:x=" xmlns:local="using:Win8Location" xmlns:d=" xmlns:mc=" mc:Ignorable="d"> <StackPanel Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <Button x:Name="btnCheckStatusChanged" Content="监测定位器状态" Click="btnCheckStatusChanged_Click"/> <ScrollViewer> <TextBlock x:Name="txtMsg" TextWrapping="Wrap" FontSize=""/> </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 地理位置定位以及定位器状态监测 (win10地理位置),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:windows8的ip地址,windows 地址,windows 地址,win10 位置,win8地址栏不见了,win10地理位置,win8定位设置在哪里,win10地理位置,内容如对您有帮助,希望把文章链接给更多的朋友!
如何在Windows 8 下面开启内存诊断做一些底层的硬件检查 由于Windows8在稳定性和易用性上面特别有加强,在继承了Windows7平台的安全与易用之后,为尽量减少对普通用户的打扰,从Q版蓝屏、开始屏幕、更多的快
Win8应用商店管理小工具具体功能详细介绍 Win8的程序和管理功能为啥不支持对App清理卸载,部分APP还不提供清理缓存功能,会导致系统盘越来越肥,有时候卸载不全的应用会无法重装,需要到Powe
个最常用的Win8快捷键介绍分享 1、Win+C:调出应用Charm菜单2、Win+D:所有程序最小化,再次按下恢复3、Win+E:打开我的电脑4、Win+F:调出查找面板5、Win+I:调出设置面板6、Win+L:一键锁