Попытка получить местоположение за определенное время в запросеLocationUpdate. Но OnLocationChanged событие вызывается на другом интервале времени на разных устройствахOnLocationChanged запускается на разных интервалах на разных устройствах
ИНИЦИАЛИЗАЦ РАСПОЛОЖЕНИЕ МЕНЕДЖЕР
private void InitializeLocationManager()
{
latlon.provider = new List<string>();
_locationManager = (LocationManager)GetSystemService(LocationService);
//Application criteria for selecting provider
Criteria criteriaForLocationService = new Criteria { Accuracy = Accuracy.NoRequirement };
IList<string> acceptableLocationProviders = _locationManager.GetProviders(criteriaForLocationService, true);
if (acceptableLocationProviders.Any())
{
_locationProvider = acceptableLocationProviders.First();
}
else
{
_locationProvider = String.Empty;
}
if (_locationProvider != null && _locationProvider != string.Empty)
{
//Request for gps in 10sec and 0 distance travelled
_locationManager.RequestLocationUpdates(_locationProvider, 10000, 0,
}
}
РАСПОЛОЖЕНИЕ СЛУШАТЕЛЬ ИНТЕРФЕЙС
async public void OnLocationChanged(Location location)
{
try
{
_currentLocation = location;
if (_currentLocation == null)
{
}
else
{
Android.Util.Log.Info("GetLocation", "Latitude: " + _currentLocation.Latitude.ToString() + " Longitude: " + _currentLocation.Longitude.ToString());
}
}
catch (Exception ex)
{
Toast.MakeText(Application.Context, ex.Message, ToastLength.Long).Show();
}
}
public void OnProviderDisabled(string provider)
{
try
{
InitializeLocationManager();
}
catch (Exception ex)
{
Toast.MakeText(this, ex.Message, ToastLength.Long).Show();
}
}
public void OnProviderEnabled(string provider)
{
try
{
InitializeLocationManager();
}
catch (Exception ex)
{
Toast.MakeText(this, ex.Message, ToastLength.Long).Show();
}
}
public void OnStatusChanged(string provider, [GeneratedEnum] Availability status, Bundle extras)
{
Toast.MakeText(Application.Context, "status Changed", ToastLength.Long).Show();
}
Реализация в Xamarin.android Thanx заранее