【发布时间】:2015-10-10 23:23:33
【问题描述】:
下面是一个获取位置的服务类。但是 onLocationChanged 调用 bask 方法没有被调用。遵循找到的文档here。我的服务开始没有问题,但是回调方法没有被调用,也没有任何异常。有人可以查看代码并告诉我是否遗漏了什么。谢谢。
[Service]
public class LocationService : Service, ILocationListener
{
public static LocationManager locMgr;
[Obsolete ("deprecated")]
public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId){
Console.WriteLine ("LocationService-OnStartCommand");
locMgr = (LocationManager)GetSystemService(LocationService);
Criteria criteriaForLocationService = new Criteria
{
Accuracy = Accuracy.Fine
};
IList<string> acceptableLocationProviders = locMgr.GetProviders(criteriaForLocationService, true);
string Provider;
if (acceptableLocationProviders.Any())
{
Provider = acceptableLocationProviders.First();
Console.WriteLine ("LocationService-acceptableLocationProviders.Any()");
}
else
{
Provider = String.Empty;
Console.WriteLine ("LocationService-String.Empty");
}
if(locMgr.IsProviderEnabled(Provider))
{
Console.WriteLine ("LocationService-Provider enabled: "+Provider);
locMgr.RequestLocationUpdates (Provider, 0, 0, this);
}
else
{
Console.WriteLine(" Provider is not available. Does the device have location services enabled?");
}
return StartCommandResult.Sticky;
}
public void OnLocationChanged (Location location)
{
Toast.MakeText (Application.Context, "location changed", ToastLength.Short).Show();
Console.WriteLine ("LocationService-OnLocationChanged");
Console.WriteLine (""+location.Latitude);
}
public void OnProviderDisabled (string provider)
{
}
public void OnProviderEnabled (string provider)
{
}
public void OnStatusChanged (string provider, Availability status, Bundle extras)
{
}
#region implemented abstract members of Service
public override IBinder OnBind (Intent intent)
{
return null;
}
#endregion
public override void OnDestroy ()
{
base.OnDestroy ();
Console.WriteLine ("LocationService-OnDestroy");
locMgr.RemoveUpdates (this);
}
}
【问题讨论】:
标签: android xamarin geolocation location xamarin.android