Xamarin - Геолокация не работает... Но почему
Я просто пытаюсь разработать небольшое приложение, которое дает мне мою текущую позицию. Итак, я нашел этот плагин, который я ввел в свой код. Теперь, когда у меня есть все для компиляции - приложение запускается, но потом без предупреждения заканчивается. Нет аварии, нет ничего. Даже Xamarin не показывает никаких признаков аварии. Ребята, вы можете мне помочь? Я ничего не пробовал, и я все из идей...;) Еще раз спасибо!
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
//Initialize buttons:
Button StartButton = FindViewById<Button>(Resource.Id.startbutton);
TextView txtTestGps = FindViewById<TextView>(Resource.Id.GpsTest);
ShowGpsCoordinates(StartButton, txtTestGps);
}
private void ShowGpsCoordinates(Button StartButton, TextView txtTestGps)
{
Task<double> xy = GiveGpsLocation();
double xyOut = xy.Result;
StartButton.Click += (sender, e) =>
{
txtTestGps.Text = xyOut.ToString();
};
}
private async Task<double> GiveGpsLocation()
{
double DoubleWithCoordinates = 0.0;
var locator = CrossGeolocator.Current;
locator.DesiredAccuracy = 50;
var position = await locator.GetPositionAsync(10000);
// Console.WriteLine("Position Status: {0}", position.Timestamp);
// Console.WriteLine("Position Latitude: {0}", position.Latitude);
// Console.WriteLine("Position Longitude: {0}", position.Longitude);
DoubleWithCoordinates = position.Latitude;
return DoubleWithCoordinates;
}
}
1 ответ
Так как вы не ожидаете всех вызовов асинхронных методов, исключения могут проглатываться, скрывая причину сбоя.
Возможно, попробуйте следующее и посмотрите, сможете ли вы получить исключение, которое вам что-то говорит:
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
//Initialize buttons:
Button StartButton = FindViewById<Button>(Resource.Id.startbutton);
TextView txtTestGps = FindViewById<TextView>(Resource.Id.GpsTest);
Task.Run(async () => {
await ShowGpsCoordinates(StartButton, txtTestGps);
}
}
private async Task ShowGpsCoordinates(Button StartButton, TextView txtTestGps)
{
double xyOut = await GiveGpsLocation();
StartButton.Click += (sender, e) =>
{
txtTestGps.Text = xyOut.ToString();
};
}
private async Task<double> GiveGpsLocation()
{
double DoubleWithCoordinates = 0.0;
var locator = CrossGeolocator.Current;
locator.DesiredAccuracy = 50;
var position = await locator.GetPositionAsync(10000);
// Console.WriteLine("Position Status: {0}", position.Timestamp);
// Console.WriteLine("Position Latitude: {0}", position.Latitude);
// Console.WriteLine("Position Longitude: {0}", position.Longitude);
DoubleWithCoordinates = position.Latitude;
return DoubleWithCoordinates;
}
}