0

我正在尝试在我的 Android 应用程序中获取位置,如下所示

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

我也尝试使用LocationManager.gpsProvider而不是网络提供商。

在所有情况下,我都得到一个空引用异常currentLoc

4

1 回答 1

1

GetLastKnownLocation()方法返回它所知道的最后一个位置,如果它之前从未收到任何更新,则该位置可能为 null。我认为您在这里要做的是侦听位置更新,然后在它们进入后对其进行响应。您可以通过实现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);
于 2012-05-06T14:31:31.397 回答