不会触发LocationCallback的事件

时间:2018-12-18 17:55:27

标签: xamarin xamarin.forms location

在我的Xamarin android项目中,创建了一个服务并订阅该服务,以从定位服务获取更新。但这没用。然后,将那部分代码直接移到活动类。但这不再起作用!我已经在Google Android中使用过几次这些方法。我无法检测出这里的问题。我的代码是:

[Service]
class LocationManagementService : Service
{
    ...
    public override void OnStart(Intent intent, int startId)
    {
        locationManagement = new LocationManagement(this);
        locationManagement.StartUpdate();
    }
}

....

class LocationManagement{

    LocationCallBack callBack = new LocationCallBack();
    public void StartUpdate()
    {
        LocationRequest locationRequest = new LocationRequest()
            .SetPriority(LocationRequest.PriorityHighAccuracy)
            .SetInterval(1000 * 5)
            .SetFastestInterval(1000 * 2);
        FusedLocationProviderClient fused = 
        LocationServices.GetFusedLocationProviderClient(context);
        Task.Run(() =>
        {
            fused.RequestLocationUpdatesAsync(locationRequest, callBack);
        });
}

class LocationCallBack: LocationCallback
{
    private Context context;
    public LocationCallBack(Context context)
    {
        this.context = context;
    }

    public override void OnLocationAvailability(LocationAvailability locationAvailability)
    {
        var a = locationAvailability.IsLocationAvailable;
    }

    public override void OnLocationResult(LocationResult result)
    {
        if (result.Locations.Any())
        {
            var location = result.Locations.First();
            var a =  location.Latitude;
        }
        else
        {
            // No locations to work with.
        }
    }
}

我已经在回调事件上设置了断点,但是没有一个被解雇!

注意:当我将这些代码更改为LocationManager时,效果很好。

这里有什么问题?

0 个答案:

没有答案