Xamarin モバイル (MonoDroid) で構築している Android アプリがあります。アプリは、現在のユーザーの GPS 座標を取得する必要があります。残念ながら、PositionChanged
イベントを発生させることができないようです。
private Geolocator geolocator = null;
private void InitializeStuff()
{
geolocator = new Geolocator(this) { DesiredAccuracy = 1 };
if (geolocator.IsGeolocationEnabled == false)
statusTextView.Text = "Please allow this application to access your location.";
else if (geolocator.IsGeolocationAvailable == false)
statusTextView.Text = "Your location could not be determined.";
else
statusTextView.Text = "Ready.";
geolocator.PositionChanged += geolocator_PositionChanged;
myButton.Click += myButton_Click;
}
private void myButton_Click(object sender, EventArgs e)
{
statusTextView.Text = "Getting position...";
if ((geolocator != null) && (geolocator.IsListening == true))
geolocator.StartListening(minTime: 1000, minDistance: 0);
}
private void geolocator_PositionChanged(object sender, PositionEventArgs e)
{
RunOnUiThread(() =>
{
statusTextView.Text = "Lat: " + e.Position.Latitude.ToString("N6") + ", Long: " + e.Position.Longitude.ToString("N6");
});
}
「位置を取得しています...」と言っているところまでアプリを正常に取得できます。ただし、PositionChanged
イベントは発生しません。Android デバイスを持っていないため、Android エミュレーターでアプリをテストしています。私は、エミュレーターにテネットすることによって、この機能をテストしています。次に、次のコマンドを入力します。
geo fix -73.985708 40
コマンド ウィンドウに「OK」と表示されます。ただし、PositionChanged
イベントは発生しません。私のエミュレータは Android 2.2 エミュレータです。あなたが提供できる洞察をありがとう。