void InitSensor() { locationManager = Application.Context.GetSystemService(Context.LocationService) as LocationManager; DeviceDebugAndroid.LogToFileStatic("gps sensor requested"); if (locationManager != null) { if (locationManager.IsProviderEnabled(LocationManager.GpsProvider)) { locationManager.RequestLocationUpdates(LocationManager.GpsProvider, 0, 0, this); locationManager.AddGpsStatusListener(this); location = locationManager.GetLastKnownLocation(LocationManager.GpsProvider); status = IDeviceGpsStatus.Requested; DeviceDebugAndroid.LogToFileStatic("gps sensor init ok"); } else { status = IDeviceGpsStatus.Disabled; DeviceDebugAndroid.LogToFileStatic("ERROR: gps sensor not enabled"); } } else { status = IDeviceGpsStatus.Disabled; DeviceDebugAndroid.LogToFileStatic("ERROR: gps locationManager is null"); } }
public void OnStatusChanged(string provider, Availability status, Android.OS.Bundle extras) // ILocationListener { if (status != Availability.Available) { this.status = IDeviceGpsStatus.Stopped; } //DeviceDebugAndroid.LogToFileMethodStatic(status.ToString()); }
public void DeInit() // IDeviceGps { if (locationManager != null) { locationManager.RemoveUpdates(this); locationManager.RemoveGpsStatusListener(this); locationManager = null; } if (location != null) { location.Reset(); location = null; } listener = null; gpsStatus = null; status = IDeviceGpsStatus.ShutOff; }
public void OnGpsStatusChanged(GpsEvent e) // GpsStatus.IListener { if (locationManager != null) { gpsStatus = locationManager.GetGpsStatus(gpsStatus); switch (e) { case GpsEvent.FirstFix: status = IDeviceGpsStatus.FirstFix; DeviceDebugAndroid.LogToFileMethodStatic("gps: " + status.ToString()); break; case GpsEvent.SatelliteStatus: if (gpsStatus != null) { gpsSatellitesVisible = 0; gpsSatellitesUsedInFix = 0; gpsSatellitesWithEphemeris = 0; gpsSatellitesWithAlmanac = 0; var satellites = gpsStatus.Satellites; if (satellites != null) { Java.Util.IIterator iterator = satellites.Iterator(); { while (iterator.HasNext) { gpsSatellitesVisible++; var s = (GpsSatellite)iterator.Next(); if (s.UsedInFix()) { gpsSatellitesUsedInFix++; } if (s.HasEphemeris) { gpsSatellitesWithEphemeris++; } if (s.HasAlmanac) { gpsSatellitesWithAlmanac++; } } } if (gpsSatellitesUsedInFix > 3) { status = IDeviceGpsStatus.Connected; } } } break; case GpsEvent.Started: status = IDeviceGpsStatus.Started; DeviceDebugAndroid.LogToFileMethodStatic("gps: " + status.ToString()); break; case GpsEvent.Stopped: status = IDeviceGpsStatus.Stopped; DeviceDebugAndroid.LogToFileMethodStatic("gps: " + status.ToString()); break; } if (listener != null) { listener.OnGpsStatusUpdate(); } } }
public void OnProviderEnabled(string provider) // ILocationListener { status = IDeviceGpsStatus.Enabled; DeviceDebugAndroid.LogToFileMethodStatic(status.ToString()); }