我在Windows 8.1应用程序中工作,我使用下面提到的代码找到用户的当前位置。现在,当我使用移动网络在平板电脑上运行我的应用程序时,应用程序崩溃,但它在Wifi上工作正常。有人可以为此提出解决方案吗?
geolocator = new Geolocator();
geolocator.DesiredAccuracy = PositionAccuracy.Default;
geolocator.DesiredAccuracyInMeters = 1000;
geolocator.MovementThreshold = 5;
geolocator.ReportInterval = 500;
try
{
Geoposition mygeoPosition = await geolocator.GetGeopositionAsync();
}
catch(UnauthorizedAccessException ex)
{
UserMessageUtil.ShowMessage("Location is disabled in Settings");
await Launcher.LaunchUriAsync(new Uri("ms-settings-location:"));
}
geolocator.PositionChanged += geolocator_PositionChanged;
我经常检查笔记本电脑,所以我过去没有遇到这个问题,但现在我有一台同时具有3G和WIFI连接的平板电脑,当我在平板电脑上运行应用程序并尝试获取当前位置时,出现错误
更新
我有时也会得到组或资源未处于正确状态以执行请求的操作。 (来自HRESULT的异常:0x8007139F)错误在线
Geoposition mygeoPosition = await geolocator.GetGeopositionAsync();
当我在移动网络
上连接时,我收到了这两个错误答案 0 :(得分:1)
使用更大的移动阈值开始。大多数GPS设备的精度仅为15米。将移动阈值设置为5可能太小并导致问题。
另请参阅使用其中一个位置准确度枚举器:
geolocator.DesiredAccuracy = Windows.Devices.Geolocation.PositionAccuracy.high;
答案 1 :(得分:1)
这些都是非常低级别的Windows错误代码。无论出现什么问题,都要远离代码,大致是设备驱动程序级别。或者它是由中间软件层重用的错误代码,这是WinRT中非常常见的犯罪。你必须要记住,网络中有很多很多东西都可能出错,而且你总是得不到很好的诊断。好吧,几乎没有。
"管道正在关闭"是ERROR_NO_DATA。该错误标识符很可能比消息更具代表性。
"组或资源未处于正确状态"是ERROR_INVALID_STATE。同样,该标识符比消息更加明智。
我的电话:你的蜂窝网络连接很不稳定。无论是因为收音机不稳定,还是因为它们之间存在蹩脚的反恶意软件。你可以很容易地消除后者。但前者总是发生在某人机器上。因此,编写代码以适应这种网络故障, not 只捕获UnauthorizedAccessException。为Exception写下另一个捕获并显示"我们很抱歉,服务暂时不可用"风格的消息。也许只要用户知道,你就可以通过记住以前的位置来对它进行创可贴。