Я пытаюсь создать обертку для информации о местоположении, такой как долгота и высота. Я создаю класс, который простирается от java.lang.object и реализует ILocationListener. Затем я создал service
, который создает объект этого класса для получения последней долготы и широты. Код компилируется без каких-либо ошибок.Xamarin/Android - Ошибка вызова службы приемника местоположения
Большая часть кода приведена в онлайн-образце. Проблема в том, что я получаю ошибку времени выполнения: Can't create handler inside thread that has not called Looper.prepare()
Обратите внимание, что здесь нет интерфейса. Я попытался передать «это» как контекст службы, но это не имело никакого значения.
Кто-нибудь знает, почему я получаю ошибку времени выполнения Looper.prepare()? Спасибо заранее.
public class GeoInfoService : Java.Lang.Object, ILocationListener
{
public GeoInfo GeoInfoResult { get; set; }
[System.ComponentModel.DefaultValue(30000)]
public long MinimumTimeForUpdate { get; set; }
[System.ComponentModel.DefaultValue(1)]
public float MinimumDistanceForUpdate {get; set;}
[System.ComponentModel.DefaultValue(true)]
public bool isProviderEnabled { get; set; }
[System.ComponentModel.DefaultValue("")]
public string Status { get; set; }
[System.ComponentModel.DefaultValue("")]
public string Provider { get; set; }
[System.ComponentModel.DefaultValue(false)]
public bool hasError { get; set; }
public System.Text.StringBuilder lastError { get; set; }
LocationManager locMgr;
string tag = "GeoInfoService";
public GeoInfoService(Context context)
{
lastError = new System.Text.StringBuilder();
MinimumTimeForUpdate = 2000;
MinimumDistanceForUpdate = 1;
locMgr = context.GetSystemService (Context.LocationService) as LocationManager;
var locationCriteria = new Criteria();
locationCriteria.Accuracy = Accuracy.NoRequirement;
locationCriteria.PowerRequirement = Power.NoRequirement;// Power.Medium;
string locationProvider = locMgr.GetBestProvider (locationCriteria, true);
Log.Debug (tag, "Starting location updates with " + locationProvider.ToString());
//THIS IS where we have the error java.lang.RuntimeException
//Can't create handler inside thread that has not called Looper.prepare()
// I also replaced "this" with context that was passed from the service
locMgr.RequestLocationUpdates (locationProvider, MinimumTimeForUpdate, MinimumDistanceForUpdate, this);
}