0

次のようにAndroidアプリで場所を取得しようとしています

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

LocationManager.gpsProviderネットワークプロバイダーの代わりにも試してみました。

すべての場合で、のnull参照例外が発生し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 に答える