地理坐标观察程序状态已更改 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事件触发,所以状态改变,但没有任何反应。为什么会这样?它应该进入"正在初始化状态",然后进入"就绪"。
如果要检查 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();
}