地理坐标观察程序状态已更改 WP8 中的事件

本文关键字:WP8 事件 坐标 观察 程序状态 | 更新日期: 2023-09-27 17:56:50

我正在开发一个跟踪我的路线的应用程序。当用户启动应用程序时,我想确定是否启用了GPS。所以我写了这个:

protected override void OnNavigatedTo(NavigationEventArgs e)
        {            
            base.OnNavigatedTo(e);
            Transporter._watcher.StatusChanged += _watcher_StatusChanged;
        }  
void _watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
        {          
            button1.IsEnabled = false; //appbar buttons
            button2.IsEnabled = false;
        switch (e.Status)
        {
            case GeoPositionStatus.Initializing:
                button1.IsEnabled = false;
                button2.IsEnabled = false;
                menuitem1.Text = "searching gps signal...";                    
                break;
            case GeoPositionStatus.NoData:
                button1.IsEnabled = false;
                button2.IsEnabled = false;
                menuitem1.Text = "no location info";                    
                break;
            case GeoPositionStatus.Ready:
                button1.IsEnabled = true;                    
                menuitem1.Text = "gps ok";                    
                break;
        }
    }       

我的问题是,当用户忘记在启动应用程序之前打开GPS时,他们必须最小化应用程序,打开GPS,然后返回应用程序。我试过了,OnNavigatedTo事件触发,所以状态改变,但没有任何反应。为什么会这样?它应该进入"正在初始化状态",然后进入"就绪"。

地理坐标观察程序状态已更改 WP8 中的事件

如果要检查 GPS 是否正在运行,可以使用 Geolocator.LocationStatus 属性。它的值会告诉你它是否正在初始化、关闭等等。

所以也许这会有所帮助:

protected override void OnNavigatedTo(NavigationEventArgs e)
    {            
        base.OnNavigatedTo(e);
        if (yourGeolocator.LocationStatus == PositionStatus.Disabled)
        {
            // do your stuff for disabled GPS
        }
        else  NotDisabled();
    }