2015-10-09 6 views
1

Попытка получить местоположение за определенное время в запросе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 заранее

ответ

2

Из документации : http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates(java.lang.String, long, float, android.location.LocationListener)

Это говорит

минимальный временной интервал между обновлениями местоположения в миллисекундах

Minimum time не exact time между обновлениями местоположения. Поэтому не полагайтесь на это значение.