概述是否有可能改变PositionChanged事件处理程序中的Geolocator的DesiredAccuracy&ReportInterval?
我想更改positionChanged事件处理程序中的DesiredAccuracy和ReportInterval,以便在不同的位置dynamic更改位置更新频率。
我做了这样的事情
voID geolocator_positionChanged(Geolocator sender,positionChangedEventArgs args) { geolocator.StatusChanged -= geolocator_StatusChanged; geolocator.positionChanged -= geolocator_positionChanged; geolocator.DesiredAccuracy = positionAccuracy.High; geolocator.ReportInterval = 5 * 1000; geolocator.StatusChanged += geolocator_StatusChanged; geolocator.positionChanged += geolocator_positionChanged; }
但问题是我得到了
$exception{System.Exception: *** 作中止(从HRESulTexception:0x80004004(E_ABORT))
使用MCC,MNC,LAC和Cell ID查找位置
电话为linux PC的蓝牙GPS
从英制坐标转换到标准的wgs84 nmea
从windows提供地理位置数据到iOS
从USB-GPS接收器读取数据
在
windows.Devices.Geolocation.Geolocator.put_DesiredAccuracy(positionAccuracy value)
我不明白这个例外,因为它没有说明原因。
我如何做到这一点(dynamic更改准确性和报告间隔)?
谢谢。
在我的c + +程序中使用OpenStreetMap
在windows Mobile的C#程序中使用来自Google地图的数据
在TiZen获取位置值的软件包
Cli从osm文件生成地图图块(打开街道地图)?
获取基于GPS的位置function。 WinMobile 6.5平台
根据这篇微软文章 ,你的例外表明你已经禁用了你的手机设置的位置服务:
catch (Exception ex) { if ((uint)ex.HResult == 0x80004004) { // the application does not have the right capability or the location master switch is off StatusTextBlock.Text = \”location is Disabled in phone settings.\”; } //else { // something else happened acquring the location } }
在改变这些属性之前,最好使用GeoCoordinateWatcher并调用Stop()/ Start()。 在GeoCoordinateWatcher上使用Geolocator 有一些优点 ,但对于大多数应用程序来说并不重要。 由于GeoCoordinateWatcher在WP8上仍然完全支持,所以如果可行的话,切换到它可能会更容易。
正如你已经在你的代码中所做的那样,删除StatusChanged和positionChanged所有处理程序都需要能够修改ReportInterval等,否则将引发此异常(0x80004004)。
在我的情况下,删除所有处理程序不是一个选项,因为我在我的WP8应用程序中使用Geolocator 来保持我的应用程序在后台活着 。 删除最后一个处理程序也会暂停我的应用程序,因为从WP的角度来看,没有理由让应用程序保持在后台。
我发现可以通过创建一个临时的Geolocator来解决这个问题:
// Wire up a temporary Geolocator to prevent the app from closing var tempGeolocator = new Geolocator { MovementThreshold = 1,ReportInterval = 1 }; TypedEventHandler<Geolocator,positionChangedEventArgs> dummyHandler = (sender,positionChangesEventArgs2) => { }; tempGeolocator.positionChanged += dummyHandler; Geolocator.positionChanged -= OnGeolocatorOnpositionChanged; Geolocator.ReportInterval = reportInterval; Geolocator.positionChanged += OnGeolocatorOnpositionChanged; tempGeolocator.positionChanged -= dummyHandler;
这样的应用程序不会被WP杀死。 请记住,重新positionChanged也会导致立即回调。
总结
以上是内存溢出为你收集整理的是否有可能改变PositionChanged事件处理程序中的Geolocator的DesiredAccuracy&ReportInterval?全部内容,希望文章能够帮你解决是否有可能改变PositionChanged事件处理程序中的Geolocator的DesiredAccuracy&ReportInterval?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容