protected override void PlatformSpecificStart(MvxLocationOptions options)
{
if (_locationManager != null)
throw new MvxException("You cannot start the MvxLocation service more than once");
_locationManager = (LocationManager)Context.GetSystemService(Context.LocationService);
if (_locationManager == null)
{
MvxTrace.Warning("Location Service Manager unavailable - returned null");
SendError(MvxLocationErrorCode.ServiceUnavailable);
return;
}
var criteria = new Criteria()
{
Accuracy = options.Accuracy == MvxLocationAccuracy.Fine ? Accuracy.Fine : Accuracy.Coarse,
};
_bestProvider = _locationManager.GetBestProvider(criteria, true);
if (_bestProvider == null)
{
MvxTrace.Warning("Location Service Provider unavailable - returned null");
SendError(MvxLocationErrorCode.ServiceUnavailable);
return;
}
_locationManager.RequestLocationUpdates(
_bestProvider,
(long)options.TimeBetweenUpdates.TotalMilliseconds,
options.MovementThresholdInM,
_locationListener);
}