Проблема в моем сервисе GPS - PullRequest
0 голосов
/ 07 мая 2018

Я застрял в проблеме с 2 или 3 неделями, ища все туто или ту же проблему в сети, но я не нашел ответа на свои вопросы.

На самом деле я работаю над приложением Android, работающим с Xamarin в C #

Вот моя проблема: Я хочу запустить службу GPS в начале моего приложения, которое запрашивает координаты каждую Х-минуту (это не имеет значения)

Так что мой сервис выглядит так:

[Service(Name = "com.xamarin.ServicesDemo2")]
public class GpsService : Service, ILocationListener
{
    static readonly string TAG = typeof(GpsService).FullName;

    private LocationManager _locationManager;
    private Location _location;

    [return: GeneratedEnum]
    public override StartCommandResult OnStartCommand(Intent intent, [GeneratedEnum] StartCommandFlags flags, int startId)
    {
        Log.Debug(TAG, "OnStartCommand");


        if (_locationManager == null)
            _locationManager = (LocationManager)GetSystemService(LocationService);

        _locationManager.RequestLocationUpdates(LocationManager.GpsProvider, 0, 0, this);

        return StartCommandResult.Sticky;
    }

    public override IBinder OnBind(Intent intent)
    {
        return null;
    }

    public override void OnDestroy()
    {
        Log.Debug(TAG, "OnDestroy");
        base.OnDestroy();
    }

    public void OnLocationChanged(Location location)
    {
        _location = location;
    }

    public void OnProviderDisabled(string provider)
    {
    }

    public void OnProviderEnabled(string provider)
    {
    }

    public void OnStatusChanged(string provider, [GeneratedEnum] Availability status, Bundle extras)
    {
    }
}

И я называю это в своей основной деятельности следующим образом:

private void BtnValidateClick(object sender, EventArgs e)
{
    Intent serviceToStart = new Intent(this, typeof(GpsService));
    StartService(serviceToStart);
}

Когда я запускаю это и устанавливаю точку останова в методе OnLocationChanged, я никогда не попадаю туда, поэтому я полагаю, что сделал что-то не так.

Вот мои вопросы:

  • Как узнать, когда OnLocationChanged сработал?
  • Как и где указать в коде, что я хочу вызвать OnLocationChanged каждую Х минуту?

И последнее, причина, по которой я хочу запускать каждую Х-минуту, заключается в том, чтобы не чрезмерно использовать батарею устройства, поэтому, если у вас есть другой метод, я возьму его!

Я прошу прощения за мой английский, я старался изо всех сил ...

Заранее спасибо!

1 Ответ

0 голосов
/ 16 мая 2018

Я решил это, запустив на эмуляторе! Когда я отправляю местоположение на эмуляторе, срабатывает OnLocationChanged, это все, что мне нужно.

...