根據經驗(作爲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應用程序也。我一直都在使用它。 –