• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Windows 8 地理位置定位以及定位器状态监测
    在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 = "\n\n" + 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;
    }
    }
    }

    运行截图如下:
    上一篇:Win7安装ie10后蓝屏重启及浏览器滚动栏右侧出现黑条解决方案
    下一篇:Win7系统下无线网络无法连接的解决办法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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