public void CollectLocationData() { ILocationFix loc = LocationFixAndroid.CollectData(); if (loc != null) { lock (_gpsLocationFixesLock) { _locationFixes.Add(loc); } } }
public static ILocationFix CollectData() { if (LocationServiceHelper.Instance.Geoposition.Coordinate == null) { return(null); //Nothing to collect } LocationFixAndroid loc = new LocationFixAndroid(); //Collect provider switch (LocationServiceHelper.Instance.Geoposition.Coordinate.PositionSource) { case Windows.Devices.Geolocation.PositionSource.WiFi: case Windows.Devices.Geolocation.PositionSource.Cellular: loc.Provider = "network"; break; case Windows.Devices.Geolocation.PositionSource.Satellite: loc.Provider = "gps"; break; default: loc.Provider = "fused"; break; } //1 = no fix, 2 = acquiring/inaccurate, 3 = fix acquired loc.ProviderStatus = 3; //Collect coordinates loc.Latitude = (float)LocationServiceHelper.Instance.Geoposition.Coordinate.Point.Position.Latitude; loc.Longitude = (float)LocationServiceHelper.Instance.Geoposition.Coordinate.Point.Position.Longitude; loc.Altitude = (float)LocationServiceHelper.Instance.Geoposition.Coordinate.Point.Position.Altitude; // TODO: why 3? need more infos. loc.Floor = 3; // TODO: why 1? need more infos. loc.LocationType = 1; loc.TimeSnapshot = DeviceInfos.RelativeTimeFromStart; loc.HorizontalAccuracy = (float?)LocationServiceHelper.Instance.Geoposition.Coordinate?.SatelliteData.HorizontalDilutionOfPrecision ?? (float)Math.Floor((float)_random.NextGaussian(1.0, 1.0)); //better would be exp distribution // @robertmclaws: VericalAccuracy is not currently transmitted in the payload. //loc.VerticalAccuracy = (float?)LocationServiceHelper.Instance.Geoposition.Coordinate?.SatelliteData.VerticalDilutionOfPrecision ?? (float)Math.Floor((float)_random.NextGaussian(1.0, 1.0)); //better would be exp distribution return(loc); }
public static ILocationFix CollectData() { if (GameClient.Geoposition.Coordinate == null) { return(null); //Nothing to collect } LocationFixAndroid loc = new LocationFixAndroid(); //Collect provider switch (GameClient.Geoposition.Coordinate.PositionSource) { case Windows.Devices.Geolocation.PositionSource.WiFi: case Windows.Devices.Geolocation.PositionSource.Cellular: loc.Provider = "network"; break; case Windows.Devices.Geolocation.PositionSource.Satellite: loc.Provider = "gps"; break; default: loc.Provider = "fused"; break; } //1 = no fix, 2 = acquiring/inaccurate, 3 = fix acquired loc.ProviderStatus = 3; //Collect coordinates loc.Latitude = (float)GameClient.Geoposition.Coordinate.Point.Position.Latitude; loc.Longitude = (float)GameClient.Geoposition.Coordinate.Point.Position.Longitude; loc.Altitude = (float)GameClient.Geoposition.Coordinate.Point.Position.Altitude; // TODO: why 3? need more infos. loc.Floor = 3; // TODO: why 1? need more infos. loc.LocationType = 1; loc.TimeSnapshot = DeviceInfos.RelativeTimeFromStart; loc.HorizontalAccuracy = (float?)GameClient.Geoposition.Coordinate?.Accuracy ?? (float)Math.Floor((float)_random.NextGaussian(1.0, 1.0)); //better would be exp distribution return(loc); }