根据经验(作为RunKeeper Windows Phone应用程序的开发人员)的说法,您无法直接访问GPS信号强度,但可以使用HorizontalAccuracy显示相对强度指示器。
我使用Rx Extensions在GeoCoordinateWatcher上提供可观察的位置流,然后在其上创建可观察的准确性流,以便我可以订阅与位置更改分开的准确性更改(而不必检查和更新每个位置)。
// Extension method.
public static IObservable<GeoPositionChangedEventArgs<:GeoCoordinate>> GetPositionChangedEventStream(this GeoCoordinateWatcher watcher)
{
return Observable.Create<GeoPositionChangedEventArgs<GeoCoordinate>>(observable =>
{
EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>> handler = (s, e) =>
{
observable.OnNext(e);
};
watcher.PositionChanged += handler;
return() => { watcher.PositionChanged -= handler; };
});
}
// Usage:
var positionStream = this._watcher.GetPositionChangedEventStream();
var accuracyStream = positionStream.Select(p => p.Position.Location.HorizontalAccuracy);
...
accuracyStream.Subscribe((accuracy) =>
{
// Do something with the accuracy.
});
太棒了。 Thanks.Good工作在RunKeeper应用程序也。我一直都在使用它。 –