Не удалось получить обновления местоположения в монодроиде

Я пытаюсь получить местоположение в своем приложении для Android следующим образом

LocationManager lmanager = (LocationManager)context.GetSystemService(Context.LocationService);
if (lmanager.IsProviderEnabled(LocationManager.NetworkProvider))
 {
  Location currentLoc = lmanager.GetLastKnownLocation(LocationManager.NetworkProvider);
}

Я пробовал с LocationManager.gpsProvider также вместо сетевого провайдера.

Во всех случаях я получаю исключение нулевой ссылки для currentLoc.


person Rahul Raj    schedule 04.05.2012    source источник


Ответы (1)


Метод GetLastKnownLocation() возвращает последнее местоположение, о котором он знал, которое может быть нулевым, если оно никогда раньше не получало никаких обновлений. Я думаю, что вы хотите здесь прослушивать обновления местоположения, а затем реагировать на них, когда они приходят. Вы можете сделать это, внедрив ILocationListener:

class MyLocationListener : Java.Lang.Object, ILocationListener
{
    public void OnLocationChanged(Location location)
    {
    }

    public void OnProviderDisabled(string provider)
    {
    }

    public void OnProviderEnabled(string provider)
    {
    }

    public void OnStatusChanged(string provider, Availability status, Bundle extras)
    {
    }
}

В своей деятельности вы можете объявить, что хотите использовать этот класс, чтобы начать прослушивание обновлений следующим образом:

var locationManager = (LocationManager)GetSystemService(LocationService);
var locationListener = new MyLocationListener();

locationManager.RequestLocationUpdates(LocationManager.NetworkProvider, 5000, 2, locationListener);
person Greg Shackles    schedule 06.05.2012