В моем проекте 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, он работает хорошо.
Какая проблема может быть здесь?